Class: Bcome::Node::Resources::Merged
- Defined in:
- lib/objects/node/resources/merged.rb
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
- #dup_nodes(contributing_nodes) ⇒ Object
-
#initialize(config) ⇒ Merged
constructor
A new instance of Merged.
- #rename_node_for_merged_inventory(original_node, new_node) ⇒ Object
- #run_select ⇒ Object
Methods inherited from Inventory
#<<, #duplicate_nodes, #dynamic_nodes, #override_server_identifier, #rename_initial_duplicate, #reset_duplicate_nodes!, #set_overrides, #should_rename_initial_duplicate?, #unset!
Methods inherited from Base
#<<, #active, #clear!, #disable, #disable!, #do_disable, #do_enable, #each, #empty?, #enable, #enable!, #first, #for_identifier, #has_active_nodes?, #is_active_resource?, #should_rename_initial_duplicate?, #size
Constructor Details
#initialize(config) ⇒ Merged
Returns a new instance of Merged.
5 6 7 8 9 10 |
# File 'lib/objects/node/resources/merged.rb', line 5 def initialize(config) super @inventory = config[:inventory] @nodes = [] run_select end |
Instance Method Details
#dup_nodes(contributing_nodes) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# 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) ⇒ Object
43 44 45 |
# 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 ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 |
# 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 |