Class: Chef::Knife::ClientBulkDelete
- Inherits:
-
Knife
- Object
- Knife
- Chef::Knife::ClientBulkDelete
- Defined in:
- lib/chef/knife/client_bulk_delete.rb
Instance Method Summary collapse
- #check_and_delete_clients(clients) ⇒ Object
- #check_and_delete_validators(validators) ⇒ Object
- #destroy_clients(clients) ⇒ Object
- #print_clients(clients) ⇒ Object
- #run ⇒ Object
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 |