summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Krizek <martin.krizek@gmail.com>2021-06-14 17:40:49 +0200
committerGitHub <noreply@github.com>2021-06-14 10:40:49 -0500
commit13e5c64918dc7dd36f6663f6e1992d5da35118d0 (patch)
tree7800770733307d11b0f008a928bcf24f2348ea87
parent25ac5059752f22b7e9faf1c212e5005b82838f87 (diff)
downloadansible-13e5c64918dc7dd36f6663f6e1992d5da35118d0.tar.gz
Apply display_failed_stderr on loop item results (#74865) (#74898)
(cherry picked from commit 01ab6c6ec73915412f1a1d00f7c247147ccfd606)
-rw-r--r--changelogs/fragments/74864-display_failed_stderr-per-item.yml2
-rw-r--r--lib/ansible/plugins/callback/default.py8
-rw-r--r--test/integration/targets/callback_default/callback_default.out.failed_to_stderr.stderr3
-rw-r--r--test/integration/targets/callback_default/callback_default.out.failed_to_stderr.stdout3
4 files changed, 11 insertions, 5 deletions
diff --git a/changelogs/fragments/74864-display_failed_stderr-per-item.yml b/changelogs/fragments/74864-display_failed_stderr-per-item.yml
new file mode 100644
index 0000000000..e2348466f0
--- /dev/null
+++ b/changelogs/fragments/74864-display_failed_stderr-per-item.yml
@@ -0,0 +1,2 @@
+bugfixes:
+ - Apply ``display_failed_stderr`` callback option on loop item results. (https://github.com/ansible/ansible/issues/74864)
diff --git a/lib/ansible/plugins/callback/default.py b/lib/ansible/plugins/callback/default.py
index 95701264b9..0a0eebfd9d 100644
--- a/lib/ansible/plugins/callback/default.py
+++ b/lib/ansible/plugins/callback/default.py
@@ -309,7 +309,7 @@ class CallbackModule(CallbackBase):
self._print_task_banner(result._task)
self._clean_results(result._result, result._task.action)
- self._handle_exception(result._result)
+ self._handle_exception(result._result, use_stderr=self.display_failed_stderr)
msg = "failed: "
if result._task.delegate_to:
@@ -318,7 +318,11 @@ class CallbackModule(CallbackBase):
msg += "[%s]" % (result._host.get_name())
self._handle_warnings(result._result)
- self._display.display(msg + " (item=%s) => %s" % (self._get_item_label(result._result), self._dump_results(result._result)), color=C.COLOR_ERROR)
+ self._display.display(
+ msg + " (item=%s) => %s" % (self._get_item_label(result._result), self._dump_results(result._result)),
+ color=C.COLOR_ERROR,
+ stderr=self.display_failed_stderr
+ )
def v2_runner_item_on_skipped(self, result):
if self.display_skipped_hosts:
diff --git a/test/integration/targets/callback_default/callback_default.out.failed_to_stderr.stderr b/test/integration/targets/callback_default/callback_default.out.failed_to_stderr.stderr
index 45d4af21f3..9a39d78fda 100644
--- a/test/integration/targets/callback_default/callback_default.out.failed_to_stderr.stderr
+++ b/test/integration/targets/callback_default/callback_default.out.failed_to_stderr.stderr
@@ -1,5 +1,8 @@
+ ansible-playbook -i inventory test.yml
++ set +x
fatal: [testhost]: FAILED! => {"changed": false, "msg": "no reason"}
+failed: [testhost] (item=debug-2) => {
+ "msg": "debug-2"
+}
fatal: [testhost]: FAILED! => {"msg": "One or more items failed"}
fatal: [testhost]: FAILED! => {"changed": false, "msg": "Failed as requested from task"}
diff --git a/test/integration/targets/callback_default/callback_default.out.failed_to_stderr.stdout b/test/integration/targets/callback_default/callback_default.out.failed_to_stderr.stdout
index 87696ef829..8e165a41ed 100644
--- a/test/integration/targets/callback_default/callback_default.out.failed_to_stderr.stdout
+++ b/test/integration/targets/callback_default/callback_default.out.failed_to_stderr.stdout
@@ -25,9 +25,6 @@ TASK [debug loop] **************************************************************
changed: [testhost] => (item=debug-1) => {
"msg": "debug-1"
}
-failed: [testhost] (item=debug-2) => {
- "msg": "debug-2"
-}
ok: [testhost] => (item=debug-3) => {
"msg": "debug-3"
}