From 6e825e8c227c815d75804fad9f32739a7f3c9ebd Mon Sep 17 00:00:00 2001 From: Brian Coca Date: Tue, 11 Aug 2015 16:38:42 -0400 Subject: [PATCH] fixed listify for lookups, made sure convert_bare is only on with_ --- lib/ansible/executor/task_executor.py | 3 ++- lib/ansible/template/__init__.py | 5 ++--- lib/ansible/utils/listify.py | 6 ++---- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/lib/ansible/executor/task_executor.py b/lib/ansible/executor/task_executor.py index 297d8b2526..489bd68a7c 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 b645a30c97..62f1c462d2 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 237e131613..e23c400506 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)