Merge pull request #1621 from dhozac/lookup-with-vars

Lookup plugin arguments need to be templated
pull/1648/head
Michael DeHaan 12 years ago
commit 52e2654faf

@ -157,6 +157,8 @@ def _varFind(basedir, text, vars, depth=0):
if lookup_plugin_name == 'LOOKUP': if lookup_plugin_name == 'LOOKUP':
lookup_plugin_name, args = args.split(",", 1) lookup_plugin_name, args = args.split(",", 1)
args = args.strip() args = args.strip()
# args have to be templated
args = varReplace(basedir, args, vars, depth=depth+1, expand_lists=True)
instance = utils.plugins.lookup_loader.get(lookup_plugin_name.lower(), basedir=basedir) instance = utils.plugins.lookup_loader.get(lookup_plugin_name.lower(), basedir=basedir)
if instance is not None: if instance is not None:
replacement = instance.run(args, inject=vars) replacement = instance.run(args, inject=vars)

@ -272,9 +272,9 @@ class TestUtils(unittest.TestCase):
assert res == u'hello oh great one' assert res == u'hello oh great one'
def test_varReplace_include(self): def test_varReplace_include(self):
template = 'hello $FILE(world) $LOOKUP(file, world)' template = 'hello $FILE(world) $LOOKUP(file, $filename)'
res = ansible.utils.template("test", template, {}, expand_lists=True) res = ansible.utils.template("test", template, {'filename': 'world'}, expand_lists=True)
assert res == u'hello world world' assert res == u'hello world world'

Loading…
Cancel
Save