diff --git a/lib/ansible/runner/__init__.py b/lib/ansible/runner/__init__.py index 7f9e18aa1c5..d35a8954cd8 100644 --- a/lib/ansible/runner/__init__.py +++ b/lib/ansible/runner/__init__.py @@ -81,7 +81,7 @@ def _executor_hook(job_queue, result_queue, new_stdin): except: traceback.print_exc() -class HostVars(dict): +class HostVars(collections.Mapping): ''' A special view of setup_cache that adds values from the inventory when needed. ''' def __init__(self, setup_cache, inventory): @@ -89,8 +89,6 @@ class HostVars(dict): self.inventory = inventory self.lookup = {} - self.update(setup_cache) - def __getitem__(self, host): if not host in self.lookup: result = self.inventory.get_variables(host) @@ -98,8 +96,12 @@ class HostVars(dict): self.lookup[host] = result return self.lookup[host] - def __contains__(self, host): - return host in self.lookup or host in self.setup_cache or self.inventory.get_host(host) + def __iter__(self): + return (host.name for host in self.inventory.get_group('all').hosts) + + def __len__(self): + return len(self.inventory.get_group('all').hosts) + class Runner(object): ''' core API interface to ansible '''