lib/bolt/inventory/group.rb in bolt-0.21.0 vs lib/bolt/inventory/group.rb in bolt-0.21.1

- old
+ new

@@ -21,10 +21,11 @@ end end @vars = data['vars'] || {} @facts = data['facts'] || {} + @features = data['features'] || [] @config = data['config'] || {} @groups = if data['groups'] data['groups'].map { |g| Group.new(g) } else [] @@ -87,37 +88,40 @@ nil end # The data functions below expect and return nil or a hash of the schema - # { 'config' => Hash , 'vars' => Hash, 'facts' => Hash, groups => Array } + # { 'config' => Hash , 'vars' => Hash, 'facts' => Hash, 'features' => Array, groups => Array } def data_for(node_name) data_merge(group_collect(node_name), node_collect(node_name)) end def node_data(node_name) if (data = @nodes[node_name]) { 'config' => data['config'] || {}, 'vars' => data['vars'] || {}, 'facts' => data['facts'] || {}, + 'features' => data['features'] || [], # groups come from group_data 'groups' => [] } end end def group_data - { 'config' => @config, - 'vars' => @vars, - 'facts' => @facts, - 'groups' => [@name] } + { 'config' => @config, + 'vars' => @vars, + 'facts' => @facts, + 'features' => @features, + 'groups' => [@name] } end def empty_data - { 'config' => {}, - 'vars' => {}, - 'facts' => {}, - 'groups' => [] } + { 'config' => {}, + 'vars' => {}, + 'facts' => {}, + 'features' => [], + 'groups' => [] } end def data_merge(data1, data2) if data2.nil? || data1.nil? return data2 || data1 @@ -128,9 +132,10 @@ # Shallow merge instead of deep merge so that vars with a hash value # are assigned a new hash, rather than merging the existing value # with the value meant to replace it 'vars' => data1['vars'].merge(data2['vars']), 'facts' => Bolt::Util.deep_merge(data1['facts'], data2['facts']), + 'features' => data1['features'] | data2['features'], 'groups' => data2['groups'] + data1['groups'] } end # Returns all nodes contained within the group, which includes nodes from subgroups.