From e8ff717ba8f2c640fa03eac8f0cff9e8af91a29d Mon Sep 17 00:00:00 2001 From: Brian Coca Date: Wed, 11 Jul 2018 20:41:37 -0400 Subject: [PATCH] preserve delegation info on no_log (#42577) * preserve delegation info on no_log fixes #42344 (cherry picked from commit e115e6496fa8339be93a6e8c56de7fd55965f673) --- changelogs/fragments/preserve_delegate_nolog.yml | 2 ++ lib/ansible/executor/task_result.py | 11 +++++++++++ 2 files changed, 13 insertions(+) create mode 100644 changelogs/fragments/preserve_delegate_nolog.yml diff --git a/changelogs/fragments/preserve_delegate_nolog.yml b/changelogs/fragments/preserve_delegate_nolog.yml new file mode 100644 index 00000000000..b195c5c5949 --- /dev/null +++ b/changelogs/fragments/preserve_delegate_nolog.yml @@ -0,0 +1,2 @@ +bugfixes: + - preseve delegation info on nolog https://github.com/ansible/ansible/issues/42344 diff --git a/lib/ansible/executor/task_result.py b/lib/ansible/executor/task_result.py index 6609e066989..cb718b9e0df 100644 --- a/lib/ansible/executor/task_result.py +++ b/lib/ansible/executor/task_result.py @@ -12,6 +12,7 @@ from ansible.vars.clean import strip_internal_keys _IGNORE = ('failed', 'skipped') _PRESERVE = ('attempts', 'changed', 'retries') +_SUB_PRESERVE = {'_ansible_delegated_vars': ('ansible_host', 'ansible_port', 'ansible_user', 'ansible_connection')} class TaskResult: @@ -112,9 +113,19 @@ class TaskResult: if self._task.no_log or self._result.get('_ansible_no_log', False): x = {"censored": "the output has been hidden due to the fact that 'no_log: true' was specified for this result"} + + # preserve full for preserve in _PRESERVE: if preserve in self._result: x[preserve] = self._result[preserve] + + # preserve subset + for sub in _SUB_PRESERVE: + if sub in self._result: + x[sub] = {} + for key in _SUB_PRESERVE[sub]: + x[sub][key] = self._result[sub][key] + result._result = x elif self._result: result._result = deepcopy(self._result)