mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
Add flag to template() so data is not converted to a datastructure
Fixes #11641
This commit is contained in:
parent
7a9916422a
commit
206ef27268
2 changed files with 12 additions and 10 deletions
|
@ -113,7 +113,7 @@ class ActionModule(ActionBase):
|
||||||
|
|
||||||
old_vars = self._templar._available_variables
|
old_vars = self._templar._available_variables
|
||||||
self._templar.set_available_variables(temp_vars)
|
self._templar.set_available_variables(temp_vars)
|
||||||
resultant = self._templar.template(template_data, preserve_trailing_newlines=True)
|
resultant = self._templar.template(template_data, preserve_trailing_newlines=True, convert_data=False)
|
||||||
self._templar.set_available_variables(old_vars)
|
self._templar.set_available_variables(old_vars)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return dict(failed=True, msg=type(e).__name__ + ": " + str(e))
|
return dict(failed=True, msg=type(e).__name__ + ": " + str(e))
|
||||||
|
|
|
@ -143,7 +143,7 @@ class Templar:
|
||||||
assert isinstance(variables, dict)
|
assert isinstance(variables, dict)
|
||||||
self._available_variables = variables.copy()
|
self._available_variables = variables.copy()
|
||||||
|
|
||||||
def template(self, variable, convert_bare=False, preserve_trailing_newlines=False, fail_on_undefined=None, overrides=None):
|
def template(self, variable, convert_bare=False, preserve_trailing_newlines=False, fail_on_undefined=None, overrides=None, convert_data=True):
|
||||||
'''
|
'''
|
||||||
Templates (possibly recursively) any given data as input. If convert_bare is
|
Templates (possibly recursively) any given data as input. If convert_bare is
|
||||||
set to True, the given data will be wrapped as a jinja2 variable ('{{foo}}')
|
set to True, the given data will be wrapped as a jinja2 variable ('{{foo}}')
|
||||||
|
@ -171,14 +171,16 @@ class Templar:
|
||||||
|
|
||||||
result = self._do_template(variable, preserve_trailing_newlines=preserve_trailing_newlines, fail_on_undefined=fail_on_undefined, overrides=overrides)
|
result = self._do_template(variable, preserve_trailing_newlines=preserve_trailing_newlines, fail_on_undefined=fail_on_undefined, overrides=overrides)
|
||||||
|
|
||||||
# if this looks like a dictionary or list, convert it to such using the safe_eval method
|
if convert_data:
|
||||||
if (result.startswith("{") and not result.startswith(self.environment.variable_start_string)) or result.startswith("[") or result in ("True", "False"):
|
# if this looks like a dictionary or list, convert it to such using the safe_eval method
|
||||||
eval_results = safe_eval(result, locals=self._available_variables, include_exceptions=True)
|
if (result.startswith("{") and not result.startswith(self.environment.variable_start_string)) or \
|
||||||
if eval_results[1] is None:
|
result.startswith("[") or result in ("True", "False"):
|
||||||
result = eval_results[0]
|
eval_results = safe_eval(result, locals=self._available_variables, include_exceptions=True)
|
||||||
else:
|
if eval_results[1] is None:
|
||||||
# FIXME: if the safe_eval raised an error, should we do something with it?
|
result = eval_results[0]
|
||||||
pass
|
else:
|
||||||
|
# FIXME: if the safe_eval raised an error, should we do something with it?
|
||||||
|
pass
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue