From c519d5dac00b1ad56c3931d336259a56eb6cf833 Mon Sep 17 00:00:00 2001 From: Daniel Hokka Zakrisson Date: Wed, 31 Oct 2012 16:57:10 +0100 Subject: [PATCH] Add a template lookup plugin Requires that inject be passed to run --- lib/ansible/playbook/play.py | 2 +- lib/ansible/runner/__init__.py | 2 +- lib/ansible/runner/lookup_plugins/template.py | 27 +++++++++++++++++++ 3 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 lib/ansible/runner/lookup_plugins/template.py diff --git a/lib/ansible/playbook/play.py b/lib/ansible/playbook/play.py index 023c820d606..938901d4a9c 100644 --- a/lib/ansible/playbook/play.py +++ b/lib/ansible/playbook/play.py @@ -112,7 +112,7 @@ class Play(object): if plugin_name not in self.playbook.lookup_plugins_list: raise errors.AnsibleError("cannot find lookup plugin named %s for usage in with_%s" % (plugin_name, plugin_name)) terms = utils.varReplaceWithItems(self.basedir, x[k], task_vars) - items = self.playbook.lookup_plugins_list[plugin_name].LookupModule(basedir=self.basedir, runner=None).run(terms) + items = self.playbook.lookup_plugins_list[plugin_name].LookupModule(basedir=self.basedir, runner=None).run(terms, inject=task_vars) for item in items: mv = task_vars.copy() diff --git a/lib/ansible/runner/__init__.py b/lib/ansible/runner/__init__.py index 0aba777c75b..548b61e87fa 100644 --- a/lib/ansible/runner/__init__.py +++ b/lib/ansible/runner/__init__.py @@ -295,7 +295,7 @@ class Runner(object): if items_plugin is not None and items_plugin in self.lookup_plugins: items_terms = self.module_vars.get('items_lookup_terms', '') items_terms = utils.varReplaceWithItems(self.basedir, items_terms, inject) - items = self.lookup_plugins[items_plugin].run(items_terms) + items = self.lookup_plugins[items_plugin].run(items_terms, inject=inject) if type(items) != list: raise errors.AnsibleError("lookup plugins have to return a list: %r" % items) diff --git a/lib/ansible/runner/lookup_plugins/template.py b/lib/ansible/runner/lookup_plugins/template.py new file mode 100644 index 00000000000..4c8c4b1e862 --- /dev/null +++ b/lib/ansible/runner/lookup_plugins/template.py @@ -0,0 +1,27 @@ +# (c) 2012, Michael DeHaan +# +# This file is part of Ansible +# +# Ansible is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Ansible is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Ansible. If not, see . + +from ansible import utils + +class LookupModule(object): + + def __init__(self, basedir=None, **kwargs): + self.basedir = basedir + + def run(self, terms, inject=None, **kwargs): + return utils.template_from_file(self.basedir, terms, inject) +