class KnifeTopo::TopoDelete
knife topo delete
Public Instance Methods
confirm_and_delete_nodes()
click to toggle source
# File lib/chef/knife/topo_delete.rb, line 67 def confirm_and_delete_nodes confirm("Do you want to delete topology #{@topo_name} - " \ 'this does not delete nodes') @topo['nodes'].each do |node| remove_node_from_topology(node['name']) end if @topo['nodes'] end
delete_topo()
click to toggle source
# File lib/chef/knife/topo_delete.rb, line 75 def delete_topo @topo.destroy(topo_bag_name, @topo_name) ui.info "Deleted topology #{@topo_name}" end
remove_node_from_topology(node_name)
click to toggle source
Remove the topo name attribute from all nodes, so topo search knows they are not in the topology
# File lib/chef/knife/topo_delete.rb, line 82 def remove_node_from_topology(node_name) # load then update and save the node node = Chef::Node.load(node_name) if node['topo'] && node['topo']['name'] == @topo_name node.rm('topo', 'name') ui.info "Removing node #{node.name} from topology" node.save end node rescue Net::HTTPServerException => e raise unless e.to_s =~ /^404/ # Node has not been created end
run()
click to toggle source
# File lib/chef/knife/topo_delete.rb, line 42 def run validate_args config[:disable_editing] = true # remove each node @topo = load_topo_from_server(@topo_name) unless @topo ui.info "Topology #{topo_bag_name}/#{@topo_name} does not " \ 'exist on server' exit(0) end confirm_and_delete_nodes delete_topo end
validate_args()
click to toggle source
# File lib/chef/knife/topo_delete.rb, line 58 def validate_args unless @name_args[0] show_usage ui.fatal('You must specify the name of a topology') exit 1 end @topo_name = @name_args[0] end