# class Chef::Knife::ClientBulkDelete

### Public Instance Methods

check_and_delete_clients(clients) click to toggle source

    # 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) click to toggle source

    # 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("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) click to toggle source

    # 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) click to toggle source

    # 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() click to toggle source

    # File lib/chef/knife/client_bulk_delete.rb, line 37
    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::ApiClient.list(true)

      matcher = /#{name_args[0]}/
      clients_to_delete = {}
      validators_to_delete = {}
      all_clients.each do |name, client|
        next unless name =~ 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