From 169d31670435ebfb7b5dff8e93ebec857632c63c Mon Sep 17 00:00:00 2001 From: James Cammarata Date: Tue, 11 Aug 2015 01:28:42 -0400 Subject: [PATCH] Fixing bugs in include + loops Fixes #11872 --- lib/ansible/playbook/included_file.py | 4 +++- lib/ansible/plugins/callback/__init__.py | 2 +- lib/ansible/plugins/callback/default.py | 7 ++++--- lib/ansible/plugins/strategies/__init__.py | 4 +++- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/lib/ansible/playbook/included_file.py b/lib/ansible/playbook/included_file.py index 75df9f6c250..c1b68effc4f 100644 --- a/lib/ansible/playbook/included_file.py +++ b/lib/ansible/playbook/included_file.py @@ -51,6 +51,8 @@ class IncludedFile: if res._task.action == 'include': if res._task.loop: + if 'results' not in res._result: + continue include_results = res._result['results'] else: include_results = [ res._result ] @@ -82,13 +84,13 @@ class IncludedFile: task_vars = variable_manager.get_vars(loader=loader, play=iterator._play, host=res._host, task=original_task) #task_vars = tqm.add_tqm_variables(task_vars, play=iterator._play) - templar = Templar(loader=loader, variables=task_vars) include_variables = include_result.get('include_variables', dict()) if 'item' in include_result: include_variables['item'] = include_result['item'] task_vars['item'] = include_result['item'] + templar = Templar(loader=loader, variables=task_vars) include_file = templar.template(include_file) inc_file = IncludedFile(include_file, include_variables, original_task) diff --git a/lib/ansible/plugins/callback/__init__.py b/lib/ansible/plugins/callback/__init__.py index 734db24d66c..8c3edcaeccc 100644 --- a/lib/ansible/plugins/callback/__init__.py +++ b/lib/ansible/plugins/callback/__init__.py @@ -113,7 +113,7 @@ class CallbackBase: else: self.v2_playbook_item_on_ok(newres) - del result._result['results'] + #del result._result['results'] def set_play_context(self, play_context): pass diff --git a/lib/ansible/plugins/callback/default.py b/lib/ansible/plugins/callback/default.py index 92cf68a4e0c..2e4646264fc 100644 --- a/lib/ansible/plugins/callback/default.py +++ b/lib/ansible/plugins/callback/default.py @@ -68,10 +68,11 @@ class CallbackModule(CallbackBase): if result._task.loop and 'results' in result._result: self._process_items(result) + else: - if (self._display.verbosity > 0 or '_ansible_verbose_always' in result._result) and not '_ansible_verbose_override' in result._result and result._task.action != 'include': - msg += " => %s" % self._dump_results(result._result) - self._display.display(msg, color=color) + if (self._display.verbosity > 0 or '_ansible_verbose_always' in result._result) and not '_ansible_verbose_override' in result._result and result._task.action != 'include': + msg += " => %s" % self._dump_results(result._result) + self._display.display(msg, color=color) self._handle_warnings(result._result) diff --git a/lib/ansible/plugins/strategies/__init__.py b/lib/ansible/plugins/strategies/__init__.py index b6a6e7e305c..92cca11b451 100644 --- a/lib/ansible/plugins/strategies/__init__.py +++ b/lib/ansible/plugins/strategies/__init__.py @@ -412,7 +412,9 @@ class StrategyBase: # set the vars for this task from those specified as params to the include for b in block_list: - b.vars.update(included_file._args.copy()) + temp_vars = b.vars.copy() + temp_vars.update(included_file._args.copy()) + b.vars = temp_vars return block_list