From 6e84374c2a73da04bc26189a500d73238b9e7841 Mon Sep 17 00:00:00 2001 From: Michael DeHaan Date: Fri, 20 Jul 2012 08:29:44 -0400 Subject: [PATCH] Make hostvars work post refactoring --- lib/ansible/runner/__init__.py | 5 ++++- lib/ansible/utils.py | 12 +----------- 2 files changed, 5 insertions(+), 12 deletions(-) diff --git a/lib/ansible/runner/__init__.py b/lib/ansible/runner/__init__.py index 996876bf54f..a136124923b 100644 --- a/lib/ansible/runner/__init__.py +++ b/lib/ansible/runner/__init__.py @@ -552,9 +552,11 @@ class Runner(object): host_variables = self.inventory.get_variables(host) port = host_variables.get('ansible_ssh_port', self.remote_port) inject = self.setup_cache[host].copy() + inject['hostvars'] = self.setup_cache inject.update(host_variables) inject.update(self.module_vars) + items = self.module_vars.get('items', []) if isinstance(items, basestring) and items.startswith("$"): items = items.replace("$","") @@ -646,7 +648,8 @@ class Runner(object): self.callbacks.on_unreachable(host, result.result) else: data = result.result - result.result['item'] = inject.get('item', None) + if 'item' in inject: + result.result['item'] = inject['item'] if 'skipped' in data: self.callbacks.on_skipped(result.host) elif not result.is_successful(): diff --git a/lib/ansible/utils.py b/lib/ansible/utils.py index c705fd2228b..8220a5d20bc 100644 --- a/lib/ansible/utils.py +++ b/lib/ansible/utils.py @@ -192,16 +192,6 @@ def varReplace(raw, vars): return ''.join(done) -def _template(text, vars): - ''' run a text buffer through the templating engine ''' - - if vars is None: - raise Exception('vars is none') - vars = vars.copy() - # FIXME: do this in runner code - vars['hostvars'] = vars.get('setup_cache', {}) - return varReplace(unicode(text), vars) - def template(text, vars): ''' run a text buffer through the templating engine until it no longer changes ''' @@ -212,7 +202,7 @@ def template(text, vars): if (depth > 20): raise errors.AnsibleError("template recursion depth exceeded") prev_text = text - text = _template(text, vars) + text = varReplace(unicode(text), vars) return text def template_from_file(basedir, path, vars):