|
|
|
@ -153,16 +153,19 @@ class TaskExecutor:
|
|
|
|
|
and returns the items result.
|
|
|
|
|
'''
|
|
|
|
|
|
|
|
|
|
# create a copy of the job vars here so that we can modify
|
|
|
|
|
# them temporarily without changing them too early for other
|
|
|
|
|
# parts of the code that might still need a pristine version
|
|
|
|
|
#vars_copy = self._job_vars.copy()
|
|
|
|
|
vars_copy = self._job_vars
|
|
|
|
|
|
|
|
|
|
# now we update them with the play context vars
|
|
|
|
|
self._play_context.update_vars(vars_copy)
|
|
|
|
|
|
|
|
|
|
templar = Templar(loader=self._loader, shared_loader_obj=self._shared_loader_obj, variables=vars_copy)
|
|
|
|
|
# save the play context variables to a temporary dictionary,
|
|
|
|
|
# so that we can modify the job vars without doing a full copy
|
|
|
|
|
# and later restore them to avoid modifying things too early
|
|
|
|
|
play_context_vars = dict()
|
|
|
|
|
self._play_context.update_vars(play_context_vars)
|
|
|
|
|
|
|
|
|
|
old_vars = dict()
|
|
|
|
|
for k in play_context_vars.keys():
|
|
|
|
|
if k in self._job_vars:
|
|
|
|
|
old_vars[k] = self._job_vars[k]
|
|
|
|
|
self._job_vars[k] = play_context_vars[k]
|
|
|
|
|
|
|
|
|
|
templar = Templar(loader=self._loader, shared_loader_obj=self._shared_loader_obj, variables=self._job_vars)
|
|
|
|
|
items = None
|
|
|
|
|
if self._task.loop:
|
|
|
|
|
if self._task.loop in self._shared_loader_obj.lookup_loader:
|
|
|
|
@ -189,6 +192,15 @@ class TaskExecutor:
|
|
|
|
|
else:
|
|
|
|
|
raise AnsibleError("Unexpected failure in finding the lookup named '%s' in the available lookup plugins" % self._task.loop)
|
|
|
|
|
|
|
|
|
|
# now we restore any old job variables that may have been modified,
|
|
|
|
|
# and delete them if they were in the play context vars but not in
|
|
|
|
|
# the old variables dictionary
|
|
|
|
|
for k in play_context_vars.keys():
|
|
|
|
|
if k in old_vars:
|
|
|
|
|
self._job_vars[k] = old_vars[k]
|
|
|
|
|
else:
|
|
|
|
|
del self._job_vars[k]
|
|
|
|
|
|
|
|
|
|
if items:
|
|
|
|
|
from ansible.vars.unsafe_proxy import UnsafeProxy
|
|
|
|
|
for idx, item in enumerate(items):
|
|
|
|
|