1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00

Merge pull request #16779 from mirskifa/devel

Make returning results after loading vars optional
This commit is contained in:
James Cammarata 2016-07-24 08:32:18 -05:00 committed by GitHub
commit a9ff363ead

View file

@ -718,13 +718,13 @@ class Inventory(object):
self._vars_per_host = {} self._vars_per_host = {}
self._vars_per_group = {} self._vars_per_group = {}
def get_host_vars(self, host, new_pb_basedir=False): def get_host_vars(self, host, new_pb_basedir=False, return_results=False):
""" Read host_vars/ files """ """ Read host_vars/ files """
return self._get_hostgroup_vars(host=host, group=None, new_pb_basedir=new_pb_basedir) return self._get_hostgroup_vars(host=host, group=None, new_pb_basedir=new_pb_basedir, return_results=return_results)
def get_group_vars(self, group, new_pb_basedir=False): def get_group_vars(self, group, new_pb_basedir=False, return_results=False):
""" Read group_vars/ files """ """ Read group_vars/ files """
return self._get_hostgroup_vars(host=None, group=group, new_pb_basedir=new_pb_basedir) return self._get_hostgroup_vars(host=None, group=group, new_pb_basedir=new_pb_basedir, return_results=return_results)
def _find_group_vars_files(self, basedir): def _find_group_vars_files(self, basedir):
""" Find group_vars/ files """ """ Find group_vars/ files """
@ -746,7 +746,7 @@ class Inventory(object):
found_vars = set(os.listdir(to_unicode(path))) found_vars = set(os.listdir(to_unicode(path)))
return found_vars return found_vars
def _get_hostgroup_vars(self, host=None, group=None, new_pb_basedir=False): def _get_hostgroup_vars(self, host=None, group=None, new_pb_basedir=False, return_results=False):
""" """
Loads variables from group_vars/<groupname> and host_vars/<hostname> in directories parallel Loads variables from group_vars/<groupname> and host_vars/<hostname> in directories parallel
to the inventory base directory or in the same directory as the playbook. Variables in the playbook to the inventory base directory or in the same directory as the playbook. Variables in the playbook
@ -785,11 +785,15 @@ class Inventory(object):
if host is None and any(map(lambda ext: group.name + ext in self._group_vars_files, C.YAML_FILENAME_EXTENSIONS)): if host is None and any(map(lambda ext: group.name + ext in self._group_vars_files, C.YAML_FILENAME_EXTENSIONS)):
# load vars in dir/group_vars/name_of_group # load vars in dir/group_vars/name_of_group
base_path = to_unicode(os.path.abspath(os.path.join(to_bytes(basedir), b"group_vars/" + to_bytes(group.name))), errors='strict') base_path = to_unicode(os.path.abspath(os.path.join(to_bytes(basedir), b"group_vars/" + to_bytes(group.name))), errors='strict')
self._variable_manager.add_group_vars_file(base_path, self._loader) host_results = self._variable_manager.add_group_vars_file(base_path, self._loader)
if return_results:
results = combine_vars(results, host_results)
elif group is None and any(map(lambda ext: host.name + ext in self._host_vars_files, C.YAML_FILENAME_EXTENSIONS)): elif group is None and any(map(lambda ext: host.name + ext in self._host_vars_files, C.YAML_FILENAME_EXTENSIONS)):
# same for hostvars in dir/host_vars/name_of_host # same for hostvars in dir/host_vars/name_of_host
base_path = to_unicode(os.path.abspath(os.path.join(to_bytes(basedir), b"host_vars/" + to_bytes(host.name))), errors='strict') base_path = to_unicode(os.path.abspath(os.path.join(to_bytes(basedir), b"host_vars/" + to_bytes(host.name))), errors='strict')
self._variable_manager.add_host_vars_file(base_path, self._loader) group_results = self._variable_manager.add_host_vars_file(base_path, self._loader)
if return_results:
results = combine_vars(results, group_results)
# all done, results is a dictionary of variables for this particular host. # all done, results is a dictionary of variables for this particular host.
return results return results