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
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
80 81 82 83 |
# File 'lib/bolt/inventory/inventory2.rb', line 80 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
58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/bolt/inventory/inventory2.rb', line 58 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
33 34 35 36 |
# File 'lib/bolt/inventory/inventory2.rb', line 33 def collect_groups # Provide a lookup map for finding a group by name @group_lookup = @groups.collect_groups end |
#create_target(target_name) ⇒ Object
273 274 275 276 277 278 279 280 281 282 283 |
# File 'lib/bolt/inventory/inventory2.rb', line 273 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
102 103 104 105 106 107 108 109 110 111 112 |
# File 'lib/bolt/inventory/inventory2.rb', line 102 def data_hash { data: {}, target_hash: { target_vars: {}, target_facts: {}, target_features: {} }, config: { transports: {} } } end |
#facts(target) ⇒ Object
85 86 87 |
# File 'lib/bolt/inventory/inventory2.rb', line 85 def facts(target) @target_facts[target.name] || {} end |
#features(target) ⇒ Object
98 99 100 |
# File 'lib/bolt/inventory/inventory2.rb', line 98 def features(target) @target_features[target.name] || Set.new end |
#get_targets(targets) ⇒ Object
48 49 50 51 52 53 54 55 56 |
# File 'lib/bolt/inventory/inventory2.rb', line 48 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
38 39 40 |
# File 'lib/bolt/inventory/inventory2.rb', line 38 def group_names @group_lookup.keys end |
#set_feature(target, feature, value = true) ⇒ Object
89 90 91 92 93 94 95 96 |
# File 'lib/bolt/inventory/inventory2.rb', line 89 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
71 72 73 74 |
# File 'lib/bolt/inventory/inventory2.rb', line 71 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
42 43 44 |
# File 'lib/bolt/inventory/inventory2.rb', line 42 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
76 77 78 |
# File 'lib/bolt/inventory/inventory2.rb', line 76 def vars(target) @target_vars[target.name] || {} end |