lib/chef/knife/topo_export.rb in knife-topo-0.0.3 vs lib/chef/knife/topo_export.rb in knife-topo-0.0.4

- old
+ new

@@ -99,33 +99,35 @@ } end # get actual node properties for export def node_export (node_name) + + node_data = {} + begin - node = Chef::Node.load(node_name).to_hash + node = Chef::Node.load(node_name) + + node_data['name'] = node.name + node_data['tags'] = node.tags + node_data['chef_environment'] = node.chef_environment + node_data['normal'] = node.normal + node_data['run_list'] = node.run_list + rescue Net::HTTPServerException => e raise unless e.to_s =~ /^404/ node = empty_node(node_name) end - props = %w{name chef_environment normal run_list recipes} - node_data = {} - - props.each do |prop| - node_data[prop] = node[prop] if node.has_key?(prop) - end - node_data[tags] = node_data[normal][tags] - node_data end # merge hash properties with the actual node properties def merge_node_properties!(nodes, node_name) # find out if the node is already in the array - node = nodes.find{|n| n["name"] == node_name } - if node - node.merge!(node_export(node_name)) + found = nodes.index{|n| n["name"] == node_name } + if found + nodes[found] = node_export(node_name) else nodes.push(node_export(node_name)) end end