Class: Bcome::Node::Resources::Inventory

Inherits:
Base
  • Object
show all
Defined in:
lib/objects/node/resources/inventory.rb

Direct Known Subclasses

Merged, SubselectInventory

Instance Attribute Summary

Attributes inherited from Base

#nodes

Instance Method Summary collapse

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?, #size

Constructor Details

#initialize(inventory) ⇒ Inventory

Returns a new instance of Inventory.



5
6
7
8
# File 'lib/objects/node/resources/inventory.rb', line 5

def initialize(inventory)
  @inventory = inventory
  super
end

Instance Method Details

#<<(node) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/objects/node/resources/inventory.rb', line 22

def <<(node)
  set_overrides(@inventory, node)

  if existing_node = for_identifier(node.identifier)
    if existing_node.static_server? && node.dynamic_server?
      # We've got a duplicate, but we'll treat the remote node as authoritative
      # We remove the static server from our selection
      @nodes.delete(existing_node)
    else
      duplicate_nodes[node.identifier] = duplicate_nodes[node.identifier] ? (duplicate_nodes[node.identifier] + 1) : 2
      count = duplicate_nodes[node.identifier]
      node.identifier = "#{node.identifier}_#{count}"
    end
  end
  @nodes << node
end

#duplicate_nodesObject



50
51
52
# File 'lib/objects/node/resources/inventory.rb', line 50

def duplicate_nodes
  @duplicate_nodes ||= {}
end

#dynamic_nodesObject



58
59
60
# File 'lib/objects/node/resources/inventory.rb', line 58

def dynamic_nodes
  active.select(&:dynamic_server?)
end

#override_server_identifier(inventory, node) ⇒ Object



15
16
17
18
19
20
# File 'lib/objects/node/resources/inventory.rb', line 15

def override_server_identifier(inventory, node)
  if inventory.override_server_identifier?
    node.identifier =~ /#{inventory.override_identifier}/
    node.update_identifier(Regexp.last_match(1)) if Regexp.last_match(1)
  end
end

#rename_initial_duplicateObject



43
44
45
46
47
48
# File 'lib/objects/node/resources/inventory.rb', line 43

def rename_initial_duplicate
  duplicate_nodes.each do |node_identifier, _count|
    node = for_identifier(node_identifier)
    node.identifier = "#{node.identifier}_1"
  end
end

#reset_duplicate_nodes!Object



54
55
56
# File 'lib/objects/node/resources/inventory.rb', line 54

def reset_duplicate_nodes!
  @duplicate_nodes = {}
end

#set_overrides(inventory, node) ⇒ Object



10
11
12
13
# File 'lib/objects/node/resources/inventory.rb', line 10

def set_overrides(inventory, node)
  override_server_identifier(inventory, node)
  node.set_network_configuration_overrides
end

#should_rename_initial_duplicate?Boolean

Returns:

  • (Boolean)


39
40
41
# File 'lib/objects/node/resources/inventory.rb', line 39

def should_rename_initial_duplicate?
  true
end

#unset!Object



62
63
64
# File 'lib/objects/node/resources/inventory.rb', line 62

def unset!
  @nodes = []
end