diff --git a/lib/ansible/executor/task_executor.py b/lib/ansible/executor/task_executor.py index 297d8b2526f..489bd68a7cf 100644 --- a/lib/ansible/executor/task_executor.py +++ b/lib/ansible/executor/task_executor.py @@ -153,7 +153,8 @@ class TaskExecutor: items = None if self._task.loop: if self._task.loop in self._shared_loader_obj.lookup_loader: - loop_terms = listify_lookup_plugin_terms(terms=self._task.loop_args, templar=templar, loader=self._loader, fail_on_undefined=True) + #TODO: remove convert_bare true and deprecate this in with_ + loop_terms = listify_lookup_plugin_terms(terms=self._task.loop_args, templar=templar, loader=self._loader, fail_on_undefined=True, convert_bare=True) items = self._shared_loader_obj.lookup_loader.get(self._task.loop, loader=self._loader, templar=templar).run(terms=loop_terms, variables=vars_copy) else: raise AnsibleError("Unexpected failure in finding the lookup named '%s' in the available lookup plugins" % self._task.loop) diff --git a/lib/ansible/template/__init__.py b/lib/ansible/template/__init__.py index b645a30c979..62f1c462d2d 100644 --- a/lib/ansible/template/__init__.py +++ b/lib/ansible/template/__init__.py @@ -251,11 +251,10 @@ class Templar: instance = self._lookup_loader.get(name.lower(), loader=self._loader, templar=self) if instance is not None: - from ansible.utils.listify import listify_lookup_plugin_terms - loop_terms = listify_lookup_plugin_terms(terms=args, templar=self, loader=self._loader, fail_on_undefined=True) + loop_terms = listify_lookup_plugin_terms(terms=args, templar=self, loader=self._loader, fail_on_undefined=True, convert_bare=False) # safely catch run failures per #5059 try: - ran = instance.run(*args, variables=self._available_variables, **kwargs) + ran = instance.run(*loop_terms, variables=self._available_variables, **kwargs) except (AnsibleUndefinedVariable, UndefinedError): raise except Exception, e: diff --git a/lib/ansible/utils/listify.py b/lib/ansible/utils/listify.py index 237e131613f..e23c4005062 100644 --- a/lib/ansible/utils/listify.py +++ b/lib/ansible/utils/listify.py @@ -26,14 +26,12 @@ from ansible.template.safe_eval import safe_eval __all__ = ['listify_lookup_plugin_terms'] #FIXME: probably just move this into lookup plugin base class -def listify_lookup_plugin_terms(terms, templar, loader, fail_on_undefined=False): +def listify_lookup_plugin_terms(terms, templar, loader, fail_on_undefined=False, convert_bare=False): if isinstance(terms, basestring): stripped = terms.strip() #FIXME: warn/deprecation on bare vars in with_ so we can eventually remove fail on undefined override - terms = templar.template(terms, convert_bare=True, fail_on_undefined=fail_on_undefined) - #TODO: check if this is needed as template should also return correct type already - #terms = safe_eval(terms) + terms = templar.template(terms, convert_bare=convert_bare, fail_on_undefined=fail_on_undefined) else: terms = templar.template(terms, fail_on_undefined=fail_on_undefined)