Re-implement "conditional imports" for vars_files

This commit is contained in:
James Cammarata 2015-07-13 15:18:05 -04:00
parent 1255a0708a
commit c18fdd0c18

View file

@ -189,13 +189,26 @@ class VariableManager:
if play: if play:
all_vars = self._combine_vars(all_vars, play.get_vars()) all_vars = self._combine_vars(all_vars, play.get_vars())
templar = Templar(loader=loader, variables=all_vars) templar = Templar(loader=loader, variables=all_vars)
for vars_file in play.get_vars_files():
for vars_file_item in play.get_vars_files():
try: try:
vars_file = templar.template(vars_file) # we assume each item in the list is itself a list, as we
data = loader.load_from_file(vars_file) # support "conditional includes" for vars_files, which mimics
if data is None: # the with_first_found mechanism.
data = dict() vars_file_list = templar.template(vars_file_item)
all_vars = self._combine_vars(all_vars, data) if not isinstance(vars_file_list, list):
vars_file_list = [ vars_file_list ]
# now we iterate through the (potential) files, and break out
# as soon as we read one from the list. If none are found, we
# raise an error, which is silently ignored at this point.
for vars_file in vars_file_list:
data = loader.load_from_file(vars_file)
if data is not None:
all_vars = self._combine_vars(all_vars, data)
break
else:
raise AnsibleError("vars file %s was not found" % vars_file_item)
except: except:
# FIXME: get_vars should probably be taking a flag to determine # FIXME: get_vars should probably be taking a flag to determine
# whether or not vars files errors should be fatal at this # whether or not vars files errors should be fatal at this