Class: Chef::Knife::ClientBulkDelete
Constant Summary
Constants inherited
from Chef::Knife
CHEF_ORGANIZATION_MANAGEMENT, KNIFE_ROOT, OFFICIAL_PLUGINS, OPSCODE_HOSTED_CHEF_ACCESS_CONTROL, VERSION
Instance Attribute Summary
Attributes inherited from Chef::Knife
#name_args, #ui
Instance Method Summary
collapse
Methods inherited from Chef::Knife
#api_key, #apply_computed_config, category, chef_config_dir, common_name, #config_file_defaults, #config_file_settings, config_loader, #config_source, #configure_chef, #create_object, #delete_object, dependency_loaders, deps, #format_rest_error, guess_category, #humanize_exception, #humanize_http_exception, inherited, #initialize, list_commands, load_commands, load_config, load_deps, #maybe_setup_fips, #merge_configs, msg, #noauth_rest, #parse_options, reset_config_loader!, reset_subcommands!, #rest, #root_rest, run, #run_with_pretty_exceptions, #server_url, #show_usage, snake_case_name, subcommand_category, subcommand_class_from, subcommand_files, subcommand_loader, subcommands, subcommands_by_category, #test_mandatory_field, ui, unnamed?, use_separate_defaults?, #username
Constructor Details
This class inherits a constructor from Chef::Knife
Instance Method Details
#check_and_delete_clients(clients) ⇒ Object
81
82
83
84
85
86
87
88
|
# File 'lib/chef/knife/client_bulk_delete.rb', line 81
def check_and_delete_clients(clients)
unless clients.empty?
ui.msg("The following clients will be deleted:")
print_clients(clients)
ui.confirm("Are you sure you want to delete these clients")
destroy_clients(clients)
end
end
|
#check_and_delete_validators(validators) ⇒ Object
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
# File 'lib/chef/knife/client_bulk_delete.rb', line 65
def check_and_delete_validators(validators)
unless validators.empty?
unless config[:delete_validators]
ui.msg("The following clients are validators and will not be deleted:")
print_clients(validators)
ui.msg("You must specify --delete-validators to delete the validator clients")
else
ui.msg("The following validators will be deleted:")
print_clients(validators)
if ui.confirm_without_exit("Are you sure you want to delete these validators")
destroy_clients(validators)
end
end
end
end
|
#destroy_clients(clients) ⇒ Object
90
91
92
93
94
95
|
# File 'lib/chef/knife/client_bulk_delete.rb', line 90
def destroy_clients(clients)
clients.sort.each do |name, client|
client.destroy
ui.msg("Deleted client #{name}")
end
end
|
#print_clients(clients) ⇒ Object
97
98
99
100
101
|
# File 'lib/chef/knife/client_bulk_delete.rb', line 97
def print_clients(clients)
ui.msg("")
ui.msg(ui.list(clients.keys.sort, :columns_down))
ui.msg("")
end
|
#run ⇒ Object
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
# File 'lib/chef/knife/client_bulk_delete.rb', line 36
def run
if name_args.length < 1
ui.fatal("You must supply a regular expression to match the results against")
exit 42
end
all_clients = Chef::ApiClientV1.list(true)
matcher = /#{name_args[0]}/
clients_to_delete = {}
validators_to_delete = {}
all_clients.each do |name, client|
next unless name&.match?(matcher)
if client.validator
validators_to_delete[client.name] = client
else
clients_to_delete[client.name] = client
end
end
if clients_to_delete.empty? && validators_to_delete.empty?
ui.info "No clients match the expression /#{name_args[0]}/"
exit 0
end
check_and_delete_validators(validators_to_delete)
check_and_delete_clients(clients_to_delete)
end
|