Class: Bolt::Inventory::Inventory2
- Inherits:
-
Object
- Object
- Bolt::Inventory::Inventory2
- Defined in:
- lib/bolt/inventory/inventory2.rb
Defined Under Namespace
Classes: WildcardError
Instance Method Summary collapse
- #add_facts(target, new_facts = {}) ⇒ Object
- #add_to_group(targets, desired_group) ⇒ Object
- #collect_groups ⇒ Object
- #create_target(target_name) ⇒ Object
- #data_hash ⇒ Object
- #facts(target) ⇒ Object
- #features(target) ⇒ Object
- #get_targets(targets) ⇒ Object
- #group_names ⇒ Object
-
#initialize(data, config = nil, plugins: nil, target_vars: {}, target_facts: {}, target_features: {}) ⇒ Inventory2
constructor
A new instance of Inventory2.
- #set_feature(target, feature, value = true) ⇒ Object
- #set_var(target, key, value) ⇒ Object
- #target_names ⇒ Object (also: #node_names)
- #validate ⇒ Object
- #vars(target) ⇒ Object
- #version ⇒ Object
Constructor Details
#initialize(data, config = nil, plugins: nil, target_vars: {}, target_facts: {}, target_features: {}) ⇒ Inventory2
Returns a new instance of Inventory2.
15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/bolt/inventory/inventory2.rb', line 15 def initialize(data, config = nil, plugins: nil, target_vars: {}, target_facts: {}, target_features: {}) @logger = Logging.logger[self] # Config is saved to add config options to targets @config = config || Bolt::Config.default @data = data || {} @groups = Group2.new(@data.merge('name' => 'all'), plugins) @group_lookup = {} @target_vars = target_vars @target_facts = target_facts @target_features = target_features @groups.resolve_aliases(@groups.target_aliases, @groups.target_names) collect_groups end |
Instance Method Details
#add_facts(target, new_facts = {}) ⇒ Object
84 85 86 87 |
# File 'lib/bolt/inventory/inventory2.rb', line 84 def add_facts(target, new_facts = {}) @logger.warn("No facts to add") if new_facts.empty? set_facts(target.name, new_facts) end |
#add_to_group(targets, desired_group) ⇒ Object
62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/bolt/inventory/inventory2.rb', line 62 def add_to_group(targets, desired_group) if group_names.include?(desired_group) targets.each do |target| if group_names.include?(target.name) raise ValidationError.new("Group #{target.name} conflicts with target of the same name", target.name) end add_target(@groups, target, desired_group) end else raise ValidationError.new("Group #{desired_group} does not exist in inventory", nil) end end |
#collect_groups ⇒ Object
37 38 39 40 |
# File 'lib/bolt/inventory/inventory2.rb', line 37 def collect_groups # Provide a lookup map for finding a group by name @group_lookup = @groups.collect_groups end |
#create_target(target_name) ⇒ Object
277 278 279 280 281 282 283 284 285 286 287 |
# File 'lib/bolt/inventory/inventory2.rb', line 277 def create_target(target_name) data = @groups.data_for(target_name) || {} name_opt = {} name_opt['name'] = data['name'] if data['name'] # If there is no name then this target was only referred to as a string. uri = data['uri'] uri ||= target_name unless data['name'] Target.new(uri, name_opt) end |
#data_hash ⇒ Object
106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/bolt/inventory/inventory2.rb', line 106 def data_hash { data: {}, target_hash: { target_vars: {}, target_facts: {}, target_features: {} }, config: @config.transport_data_get } end |
#facts(target) ⇒ Object
89 90 91 |
# File 'lib/bolt/inventory/inventory2.rb', line 89 def facts(target) @target_facts[target.name] || {} end |
#features(target) ⇒ Object
102 103 104 |
# File 'lib/bolt/inventory/inventory2.rb', line 102 def features(target) @target_features[target.name] || Set.new end |
#get_targets(targets) ⇒ Object
52 53 54 55 56 57 58 59 60 |
# File 'lib/bolt/inventory/inventory2.rb', line 52 def get_targets(targets) targets = (targets) targets = if targets.is_a? Array targets.flatten.uniq(&:name) else [targets] end targets.map { |t| update_target(t) } end |
#group_names ⇒ Object
42 43 44 |
# File 'lib/bolt/inventory/inventory2.rb', line 42 def group_names @group_lookup.keys end |
#set_feature(target, feature, value = true) ⇒ Object
93 94 95 96 97 98 99 100 |
# File 'lib/bolt/inventory/inventory2.rb', line 93 def set_feature(target, feature, value = true) @target_features[target.name] ||= Set.new if value @target_features[target.name] << feature else @target_features[target.name].delete(feature) end end |
#set_var(target, key, value) ⇒ Object
75 76 77 78 |
# File 'lib/bolt/inventory/inventory2.rb', line 75 def set_var(target, key, value) data = { key => value } set_vars_from_hash(target.name, data) end |
#target_names ⇒ Object Also known as: node_names
46 47 48 |
# File 'lib/bolt/inventory/inventory2.rb', line 46 def target_names @groups.target_names end |
#validate ⇒ Object
29 30 31 |
# File 'lib/bolt/inventory/inventory2.rb', line 29 def validate @groups.validate end |
#vars(target) ⇒ Object
80 81 82 |
# File 'lib/bolt/inventory/inventory2.rb', line 80 def vars(target) @target_vars[target.name] || {} end |
#version ⇒ Object
33 34 35 |
# File 'lib/bolt/inventory/inventory2.rb', line 33 def version 2 end |