class Bcome::Node::Resources::Merged
Public Class Methods
new(config)
click to toggle source
Calls superclass method
Bcome::Node::Resources::Inventory::new
# File lib/objects/node/resources/merged.rb, line 5 def initialize(config) super @inventory = config[:inventory] @nodes = [] run_select end
Public Instance Methods
dup_nodes(contributing_nodes)
click to toggle source
# File lib/objects/node/resources/merged.rb, line 25 def dup_nodes(contributing_nodes) contributing_nodes.each do |original_node| # Duplicate the node, setting its origin inventory to this one, and # resetting its ssh_driver to the original node's driver. new_node = original_node.dup_with_new_parent(@inventory) set_overrides(@inventory, new_node) new_node.ssh_driver = original_node.ssh_driver # Rename the node as contributing inventories may provide duplicate node names rename_node_for_merged_inventory(original_node, new_node) # Register the new node with the registry ::Bcome::Registry::Loader.instance.set_command_group_for_node(new_node) @nodes << new_node end end
rename_node_for_merged_inventory(original_node, new_node)
click to toggle source
# File lib/objects/node/resources/merged.rb, line 43 def rename_node_for_merged_inventory(original_node, new_node) new_node.identifier = original_node.namespace.gsub(':', '_') end
run_select()
click to toggle source
# File lib/objects/node/resources/merged.rb, line 12 def run_select @inventory.contributing_inventories.each do |inventory| raise ::Bcome::Exception::Generic, "#{inventory.namespace} is not an inventory, and cannot be merged." unless inventory.is_a?(::Bcome::Node::Inventory::Base) inventory.load_nodes unless inventory.nodes_loaded? end contributing_nodes = @inventory.contributing_inventories.collect { |inv| inv.resources.nodes }.flatten dup_nodes(contributing_nodes) @nodes end