class Chef::Knife::LinodeServerDelete
Public Instance Methods
destroy_item(klass, name, type_name)
click to toggle source
Extracted from Chef::Knife.delete_object, because it has a confirmation step built in… By specifying the '–purge' flag (and also explicitly confirming the server destruction!) the user is already making their intent known. It is not necessary to make them confirm two more times.
# File lib/chef/knife/linode_server_delete.rb, line 53 def destroy_item(klass, name, type_name) object = klass.load(name) object.destroy ui.warn("Deleted #{type_name} #{name}") rescue Net::HTTPServerException ui.warn("Could not find a #{type_name} named #{name} to delete!") end
run()
click to toggle source
# File lib/chef/knife/linode_server_delete.rb, line 61 def run validate! @name_args.each do |linode_id| begin server = connection.servers.detect do |s| s.id.to_s == linode_id || s.name == linode_id end raise Fog::Compute::Linode::NotFound.new unless server delete_id = server.id msg_pair("Linode ID", server.id.to_s) msg_pair("Name", server.name) msg_pair("IPs", server.ips.map { |x| x.ip }.join(",") ) msg_pair("Status", status_to_ui(server.status) ) puts "\n" confirm("Do you really want to delete this server") connection.servers.get(delete_id).destroy ui.warn("Deleted server #{delete_id}") if config[:purge] if config[:chef_node_name] thing_to_delete = config[:chef_node_name] else thing_to_delete = server.name end destroy_item(Chef::Node, thing_to_delete, "node") destroy_item(Chef::ApiClient, thing_to_delete, "client") else ui.warn("Corresponding node and client for the #{linode_id} server were not deleted and remain registered with the Chef Server") end rescue Fog::Compute::Linode::NotFound ui.error("Could not locate server '#{linode_id}'.") end end end