diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/ansible/plugins/action/__init__.py | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/lib/ansible/plugins/action/__init__.py b/lib/ansible/plugins/action/__init__.py index f1e0a14bca..83c7715d3e 100644 --- a/lib/ansible/plugins/action/__init__.py +++ b/lib/ansible/plugins/action/__init__.py @@ -160,7 +160,7 @@ class ActionBase(with_metaclass(ABCMeta, object)): ''' if task_vars is None: - task_vars = {} + use_vars = dict() if self._task.delegate_to: use_vars = task_vars.get('ansible_delegated_vars')[self._task.delegate_to] @@ -242,22 +242,18 @@ class ActionBase(with_metaclass(ABCMeta, object)): # we'll propagate back to the controller in the task result discovered_key = 'discovered_interpreter_%s' % idre.interpreter_name - # update the local vars copy for the retry - if use_vars.get('ansible_facts') is None: - use_vars['ansible_facts'] = {} - use_vars['ansible_facts'][discovered_key] = self._discovered_interpreter - # TODO: this condition prevents 'wrong host' from being updated # but in future we would want to be able to update 'delegated host facts' # irrespective of task settings if not self._task.delegate_to or self._task.delegate_facts: # store in local task_vars facts collection for the retry and any other usages in this worker - if task_vars.get('ansible_facts') is None: + if use_vars.get('ansible_facts') is None: task_vars['ansible_facts'] = {} task_vars['ansible_facts'][discovered_key] = self._discovered_interpreter # preserve this so _execute_module can propagate back to controller as a fact self._discovered_interpreter_key = discovered_key else: + task_vars['ansible_delegated_vars'][self._task.delegate_to] if task_vars['ansible_delegated_vars'][self._task.delegate_to].get('ansible_facts') is None: task_vars['ansible_delegated_vars'][self._task.delegate_to]['ansible_facts'] = {} task_vars['ansible_delegated_vars'][self._task.delegate_to]['ansible_facts'][discovered_key] = self._discovered_interpreter |