fixed hostvars access in conjunction with --limit usage

This commit is contained in:
Ilya Epifanov 2015-08-26 21:41:52 +03:00
parent 0441a7a217
commit 81bf88b6e0
2 changed files with 11 additions and 9 deletions

View file

@ -178,7 +178,7 @@ class Inventory(object):
return [x for x in term.findall(pattern) if x] return [x for x in term.findall(pattern) if x]
def get_hosts(self, pattern="all"): def get_hosts(self, pattern="all", ignore_limits_and_restrictions=False):
""" """
Takes a pattern or list of patterns and returns a list of matching Takes a pattern or list of patterns and returns a list of matching
inventory host names, taking into account any active restrictions inventory host names, taking into account any active restrictions
@ -196,14 +196,16 @@ class Inventory(object):
patterns = self._split_pattern(pattern) patterns = self._split_pattern(pattern)
hosts = self._evaluate_patterns(patterns) hosts = self._evaluate_patterns(patterns)
# exclude hosts not in a subset, if defined # mainly useful for hostvars[host] access
if self._subset: if not ignore_limits_and_restrictions:
subset = self._evaluate_patterns(self._subset) # exclude hosts not in a subset, if defined
hosts = [ h for h in hosts if h in subset ] if self._subset:
subset = self._evaluate_patterns(self._subset)
hosts = [ h for h in hosts if h in subset ]
# 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 in self._restriction ]
return hosts return hosts

View file

@ -43,7 +43,7 @@ class HostVars(collections.Mapping):
# in inventory # in inventory
restriction = inventory._restriction restriction = inventory._restriction
inventory.remove_restriction() inventory.remove_restriction()
hosts = inventory.get_hosts() hosts = inventory.get_hosts(ignore_limits_and_restrictions=True)
inventory.restrict_to_hosts(restriction) inventory.restrict_to_hosts(restriction)
# check to see if localhost is in the hosts list, as we # check to see if localhost is in the hosts list, as we