Apply inventory host restrictions by host name rather than UUID.
Issue #15633 observes that a meta: inventory_refresh task causes the playbook to exit. An inventory refresh flushes all caches and rebuilds all host objects, assigning new UUIDs to each. These new host UUIDs currently fail to match those on host objects stored for restrictions in the inventory, causing the playbook to exit for having no hosts to run further tasks against. This changeset attempts to address this issue by storing host restrictions by name, and comparing inventory host names against these names when applying restrictions in get_hosts.
This commit is contained in:
parent
af257c20da
commit
00b04ab794
1 changed files with 2 additions and 2 deletions
|
@ -204,7 +204,7 @@ class Inventory(object):
|
|||
|
||||
# exclude hosts mentioned in any restriction (ex: failed hosts)
|
||||
if self._restriction is not None:
|
||||
hosts = [ h for h in hosts if h in self._restriction ]
|
||||
hosts = [ h for h in hosts if h.name in self._restriction ]
|
||||
|
||||
seen = set()
|
||||
HOSTS_PATTERNS_CACHE[pattern_hash] = [x for x in hosts if x not in seen and not seen.add(x)]
|
||||
|
@ -600,7 +600,7 @@ class Inventory(object):
|
|||
return
|
||||
elif not isinstance(restriction, list):
|
||||
restriction = [ restriction ]
|
||||
self._restriction = restriction
|
||||
self._restriction = [ h.name for h in restriction ]
|
||||
|
||||
def subset(self, subset_pattern):
|
||||
"""
|
||||
|
|
Loading…
Reference in a new issue