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