Commit 81a92654 by Michael DeHaan

Some continued work on new-style templates and associated test code changes. …

Some continued work on new-style templates and associated test code changes.  Legacy template functions
are marked with "legacy_" for possible future removal.
parent f0b21dcc
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
import os import os
from ansible import utils from ansible import utils
from ansible import template import ansible.utils.template as template
from ansible import errors from ansible import errors
from ansible.runner.return_data import ReturnData from ansible.runner.return_data import ReturnData
import base64 import base64
......
...@@ -23,6 +23,7 @@ from jinja2.runtime import StrictUndefined ...@@ -23,6 +23,7 @@ from jinja2.runtime import StrictUndefined
import yaml import yaml
import json import json
from ansible import errors from ansible import errors
import ansible.utils as utils
import ansible.constants as C import ansible.constants as C
import time import time
import subprocess import subprocess
...@@ -174,7 +175,8 @@ def _legacy_varFind(basedir, text, vars, lookup_fatal, depth, expand_lists): ...@@ -174,7 +175,8 @@ def _legacy_varFind(basedir, text, vars, lookup_fatal, depth, expand_lists):
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 have to be templated
args = varReplace(basedir, args, vars, lookup_fatal, depth + 1, True) args = legacy_varReplace(basedir, args, vars, lookup_fatal, depth + 1, 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:
try: try:
...@@ -186,6 +188,7 @@ def _legacy_varFind(basedir, text, vars, lookup_fatal, depth, expand_lists): ...@@ -186,6 +188,7 @@ def _legacy_varFind(basedir, text, vars, lookup_fatal, depth, expand_lists):
replacement = None replacement = None
else: else:
raise raise
else: else:
replacement = None replacement = None
return {'replacement': replacement, 'start': start, 'end': end} return {'replacement': replacement, 'start': start, 'end': end}
...@@ -222,7 +225,7 @@ def legacy_varReplace(basedir, raw, vars, lookup_fatal=True, depth=0, expand_lis ...@@ -222,7 +225,7 @@ def legacy_varReplace(basedir, raw, vars, lookup_fatal=True, depth=0, expand_lis
if expand_lists and isinstance(replacement, (list, tuple)): if expand_lists and isinstance(replacement, (list, tuple)):
replacement = ",".join([str(x) for x in replacement]) replacement = ",".join([str(x) for x in replacement])
if isinstance(replacement, (str, unicode)): if isinstance(replacement, (str, unicode)):
replacement = varReplace(basedir, replacement, vars, lookup_fatal, depth=depth+1, expand_lists=expand_lists) replacement = legacy_varReplace(basedir, replacement, vars, lookup_fatal, depth=depth+1, expand_lists=expand_lists)
if replacement is None: if replacement is None:
replacement = raw[m['start']:m['end']] replacement = raw[m['start']:m['end']]
...@@ -436,10 +439,14 @@ def template_from_string(basedir, data, vars): ...@@ -436,10 +439,14 @@ def template_from_string(basedir, data, vars):
else: else:
return data return data
def test_foo(): def lookup(name, *args, **kwargs):
return 'test_foo!' instance = utils.plugins.lookup_loader.get(name.lower(), basedir=basedir)
if instance is not None:
t.globals['test_foo'] = test_foo return ",".join(instance.run(*args, inject=vars, **kwargs))
else:
raise errors.AnsibleError("lookup plugin (%s) not found" % name)
t.globals['lookup'] = lookup
res = jinja2.utils.concat(t.root_render_func(t.new_context(_jinja2_vars(basedir, vars, t.globals), shared=True))) res = jinja2.utils.concat(t.root_render_func(t.new_context(_jinja2_vars(basedir, vars, t.globals), shared=True)))
return res return res
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment