fix constructed compose

Fixes ansible/ansible#59680 and ansible/ansible#48309. add support for strict parameter for constructed.

Change-Id: I08cba2d9ee372071f3899c7c9b74d9351dfdb5d4
Signed-off-by: willtome <willtome@gmail.com>
This commit is contained in:
willtome
2020-01-28 08:24:33 -06:00
parent d36da2d1ce
commit 7d46ce9c51

View File

@@ -256,24 +256,26 @@ class InventoryModule(BaseInventoryPlugin, Constructable, Cacheable):
def _set_variables(self, hostvars, groups):
strict = self.get_option('strict')
# set vars in inventory from hostvars
for host in hostvars:
# create composite vars
self._set_composite_vars(
self._config_data.get('compose'), hostvars[host], host)
# actually update inventory
for key in hostvars[host]:
self.inventory.set_variable(host, key, hostvars[host][key])
# create composite vars
self._set_composite_vars(
self._config_data.get('compose'), self.inventory.get_host(host).get_vars(), host, strict)
# constructed groups based on conditionals
self._add_host_to_composed_groups(
self._config_data.get('groups'), hostvars[host], host)
self._config_data.get('groups'), hostvars[host], host, strict)
# constructed groups based on jinja expressions
self._add_host_to_keyed_groups(
self._config_data.get('keyed_groups'), hostvars[host], host)
self._config_data.get('keyed_groups'), hostvars[host], host, strict)
for group_name, group_hosts in groups.items():
gname = self.inventory.add_group(group_name)