Class: Bcome::Node::Inventory::Merge

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

Constant Summary

Constants inherited from Base

Base::DEFAULT_IDENTIFIER

Constants included from Draw

Draw::BLIP, Draw::BOTTOM_ANCHOR, Draw::BOX_BOTTOM_LEFT, Draw::BOX_BOTTOM_RIGHT, Draw::BOX_HORIZONTAL_LINE, Draw::BOX_SIDE, Draw::BOX_TOP_LEFT, Draw::BOX_TOP_RIGHT, Draw::BRANCH, Draw::INGRESS, Draw::LEFT_PADDING, Draw::MID_SHIPS

Constants included from LocalMetaDataFactory

LocalMetaDataFactory::META_DATA_FILE_PATH_PREFIX

Instance Attribute Summary collapse

Attributes inherited from Base

#identifier, #params, #parent, #views

Instance Method Summary collapse

Methods inherited from Base

#cache_nodes_in_memory, #cloud_matches, #direct_invoke_all_servers, #direct_invoke_server, #enabled_menu_items, #inventory?, #list_key, #machine_by_identifier, #machines, #matches_for, #menu_items, #meta_matches, #override_server_identifier?, #ssh, #tags

Methods inherited from Base

#close_ssh_connections, #collection?, const_missing, #data_print_from_hash, #enabled_menu_items, #execute_local, #execute_script, #has_parent?, #has_proxy?, #hide?, #inspect, #inventory?, #invoke, #is_top_level_node?, #keyed_namespace, #list_attributes, #list_key, #method_missing, #namespace, #no_nodes?, #nodes_loaded!, #prompt_breadcrumb, #proxy, #proxy_chain, #proxy_chain_link, #put, #put_str, #recurse_resource_for_identifier, #requires_description?, #requires_type?, #resource_for_identifier, #rsync, #scoped_resources, #scp, #server?, #ssh_connect, #validate_attributes, #validate_identifier

Methods included from LoadingBar::Handler

#cursor, #do_signal, #fork_process, #signal_failure, #signal_stop, #signal_success, #start_indicator, #stop_indicator, #wrap_indicator

Methods included from Tree

#build_tree, #deduce_tree_structure, #namespace_tree_line, #network_namespace_tree_data, #recurse_tree_lines, #routes, #routing_tree_data, #routing_tree_line, #to_nested_hash, #tree

Methods included from Draw

#box_it, #max_box_line_length

Methods included from RegistryManagement

#registry, #user_command_wrapper

Methods included from LocalMetaDataFactory

#do_create_metadata, #meta, #metadata, #metadata_for_namespace, #raw_metadata

Methods included from WorkspaceMenu

#item_spacing, #menu, #menu_group_names, #menu_item_spacing_length, #menu_items, #mode, #print_menu_items, #tab_spacing

Methods included from Attributes

#filters, #identifier, #network_data, #network_driver, #recurse_hash_data_for_instance_key, #ssh_data, #ssh_driver, #ssh_driver=

Methods included from WorkspaceCommands

#cd, #clear!, #disable, #disable!, #enable, #enable!, #interactive, #is_node_level_method?, #ls, #lsa, #method_in_registry?, #method_is_available_on_node?, #new_line, #parents, #ping, #pretty_description, #resource_identifiers, #run, #ssh_connect, #tree_descriptions, #visual_hierarchy, #workon

Methods included from Context

#current_context?, #irb_workspace=, #previous_irb_workspace=

Constructor Details

#initialize(*params) ⇒ Merge

Returns a new instance of Merge.



9
10
11
12
# File 'lib/objects/node/inventory/merge.rb', line 9

def initialize(*params)
  super
  raise Bcome::Exception::MissingInventoryContributors, @views unless @views[:contributors]
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Bcome::Node::Base

Instance Attribute Details

#dynamic_nodes_loadedObject (readonly)

Returns the value of attribute dynamic_nodes_loaded.



7
8
9
# File 'lib/objects/node/inventory/merge.rb', line 7

def dynamic_nodes_loaded
  @dynamic_nodes_loaded
end

Instance Method Details

#contributing_inventoriesObject



26
27
28
# File 'lib/objects/node/inventory/merge.rb', line 26

def contributing_inventories
  @inventories ||= @views[:contributors].collect { |inventory_key| load_inventory(inventory_key) }
end

#do_set_resourcesObject



38
39
40
# File 'lib/objects/node/inventory/merge.rb', line 38

def do_set_resources
  ::Bcome::Node::Resources::Merged.new(inventory: self)
end

#load_inventory(from_crumb) ⇒ Object



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

def load_inventory(from_crumb)
  inventory = ::Bcome::Node::Factory.instance.bucket[from_crumb]
  raise Bcome::Exception::CannotFindInventory, "for key '#{from_crumb}'" unless inventory

  inventory
end

#load_nodesObject



18
19
20
21
22
23
24
# File 'lib/objects/node/inventory/merge.rb', line 18

def load_nodes
  contributing_inventories.each do |inventory|
    inventory.load_nodes unless inventory.nodes_loaded?
  end

  resources
end

#nodes_loaded?Boolean

Returns:

  • (Boolean)


14
15
16
# File 'lib/objects/node/inventory/merge.rb', line 14

def nodes_loaded?
  !contributing_inventories.collect(&:nodes_loaded?).include?(false)
end

#resourcesObject



30
31
32
# File 'lib/objects/node/inventory/merge.rb', line 30

def resources
  @resources ||= do_set_resources
end

#update_nodesObject



34
35
36
# File 'lib/objects/node/inventory/merge.rb', line 34

def update_nodes
  resources.update_nodes(self)
end