diff --git a/lib/ansible/playbook/play.py b/lib/ansible/playbook/play.py index 2aa7ff661a..ebb8db2641 100644 --- a/lib/ansible/playbook/play.py +++ b/lib/ansible/playbook/play.py @@ -111,7 +111,7 @@ class Play(object): plugin_name = k[5:] if plugin_name not in utils.plugins.lookup_loader: 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) + terms = utils.template_ds(self.basedir, x[k], task_vars) items = utils.plugins.lookup_loader.get(plugin_name, basedir=self.basedir, runner=None).run(terms, inject=task_vars) for item in items: @@ -119,7 +119,7 @@ class Play(object): mv['item'] = item for t in tokens[1:]: (k,v) = t.split("=", 1) - mv[k] = utils.varReplaceWithItems(self.basedir, v, mv) + mv[k] = utils.template_ds(self.basedir, v, mv) include_file = utils.template(self.basedir, tokens[0], mv) data = utils.parse_yaml_from_file(utils.path_dwim(self.basedir, include_file)) for y in data: diff --git a/lib/ansible/runner/__init__.py b/lib/ansible/runner/__init__.py index f7e7d6e1c5..96398d0c09 100644 --- a/lib/ansible/runner/__init__.py +++ b/lib/ansible/runner/__init__.py @@ -273,7 +273,7 @@ class Runner(object): items_plugin = self.module_vars.get('items_lookup_plugin', None) if items_plugin is not None and items_plugin in utils.plugins.lookup_loader: items_terms = self.module_vars.get('items_lookup_terms', '') - items_terms = utils.varReplaceWithItems(self.basedir, items_terms, inject) + items_terms = utils.template_ds(self.basedir, items_terms, inject) items = utils.plugins.lookup_loader.get(items_plugin, runner=self, basedir=self.basedir).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/utils/template.py b/lib/ansible/utils/template.py index dd39b56bb5..30afe5a34a 100644 --- a/lib/ansible/utils/template.py +++ b/lib/ansible/utils/template.py @@ -177,8 +177,8 @@ def _varReplaceFilesAndPipes(basedir, raw, vars): return ''.join(done) -def varReplaceWithItems(basedir, varname, vars): - ''' helper function used by with_items ''' +def template_ds(basedir, varname, vars): + ''' templates a data structure by traversing it and substituting for other data structures ''' if isinstance(varname, basestring): m = _varFind(varname, vars) @@ -186,17 +186,17 @@ def varReplaceWithItems(basedir, varname, vars): return varname if m['start'] == 0 and m['end'] == len(varname): if m['replacement'] is not None: - return varReplaceWithItems(basedir, m['replacement'], vars) + return template_ds(basedir, m['replacement'], vars) else: return varname else: return template(basedir, varname, vars) elif isinstance(varname, (list, tuple)): - return [varReplaceWithItems(basedir, v, vars) for v in varname] + return [template_ds(basedir, v, vars) for v in varname] elif isinstance(varname, dict): d = {} for (k, v) in varname.iteritems(): - d[k] = varReplaceWithItems(basedir, v, vars) + d[k] = template_ds(basedir, v, vars) return d else: return varname diff --git a/test/TestUtils.py b/test/TestUtils.py index 33c0418623..b8a2bfa6ef 100644 --- a/test/TestUtils.py +++ b/test/TestUtils.py @@ -286,9 +286,9 @@ class TestUtils(unittest.TestCase): assert res == u'hello world world' ##################################### - ### varReplaceWithItems function tests + ### template_ds function tests - def test_varReplaceWithItems_basic(self): + def test_template_ds_basic(self): vars = { 'data': { 'var': [ @@ -313,19 +313,19 @@ class TestUtils(unittest.TestCase): } template = '${data.var}' - res = ansible.utils.varReplaceWithItems(None, template, vars) + res = ansible.utils.template_ds(None, template, vars) assert sorted(res) == sorted(vars['data']['var']) template = '${data.types}' - res = ansible.utils.varReplaceWithItems(None, template, vars) + res = ansible.utils.template_ds(None, template, vars) assert sorted(res) == sorted(vars['data']['types']) template = '${data.alphas}' - res = ansible.utils.varReplaceWithItems(None, template, vars) + res = ansible.utils.template_ds(None, template, vars) assert sorted(res) == sorted(vars['alphas']) template = '${data.nonexisting}' - res = ansible.utils.varReplaceWithItems(None, template, vars) + res = ansible.utils.template_ds(None, template, vars) assert res == template #####################################