mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
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
cf62a62b83
commit
bc81c76f86
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)
|
# exclude hosts mentioned in any restriction (ex: failed hosts)
|
||||||
if self._restriction is not None:
|
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()
|
seen = set()
|
||||||
HOSTS_PATTERNS_CACHE[pattern_hash] = [x for x in hosts if x not in seen and not seen.add(x)]
|
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
|
return
|
||||||
elif not isinstance(restriction, list):
|
elif not isinstance(restriction, list):
|
||||||
restriction = [ restriction ]
|
restriction = [ restriction ]
|
||||||
self._restriction = restriction
|
self._restriction = [ h.name for h in restriction ]
|
||||||
|
|
||||||
def subset(self, subset_pattern):
|
def subset(self, subset_pattern):
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in a new issue