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.