From e115e6496fa8339be93a6e8c56de7fd55965f673 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 --- 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 0000000000..b195c5c594 --- /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 f7e95d4c82..f0b20f844b 100644 --- a/lib/ansible/executor/task_result.py +++ b/lib/ansible/executor/task_result.py @@ -13,6 +13,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: @@ -114,9 +115,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)