default: callback plugin allow unreachable task to stderr (#50533)
Provide toggle flag to allow display of unreachable task to stderr using default callback plugin. Fixes: #48069 Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
This commit is contained in:
parent
636e1d5fcb
commit
17bb4f4932
6 changed files with 39 additions and 6 deletions
|
@ -0,0 +1,2 @@
|
||||||
|
minor_changes:
|
||||||
|
- Allow default callback plugin to send unreachable host/task to stderr using toggle flag.
|
|
@ -158,11 +158,10 @@ class CallbackModule(CallbackBase):
|
||||||
|
|
||||||
delegated_vars = result._result.get('_ansible_delegated_vars', None)
|
delegated_vars = result._result.get('_ansible_delegated_vars', None)
|
||||||
if delegated_vars:
|
if delegated_vars:
|
||||||
self._display.display("fatal: [%s -> %s]: UNREACHABLE! => %s" % (result._host.get_name(), delegated_vars['ansible_host'],
|
msg = "fatal: [%s -> %s]: UNREACHABLE! => %s" % (result._host.get_name(), delegated_vars['ansible_host'], self._dump_results(result._result))
|
||||||
self._dump_results(result._result)),
|
|
||||||
color=C.COLOR_UNREACHABLE)
|
|
||||||
else:
|
else:
|
||||||
self._display.display("fatal: [%s]: UNREACHABLE! => %s" % (result._host.get_name(), self._dump_results(result._result)), color=C.COLOR_UNREACHABLE)
|
msg = "fatal: [%s]: UNREACHABLE! => %s" % (result._host.get_name(), self._dump_results(result._result))
|
||||||
|
self._display.display(msg, color=C.COLOR_UNREACHABLE, stderr=self.display_failed_stderr)
|
||||||
|
|
||||||
def v2_playbook_on_no_hosts_matched(self):
|
def v2_playbook_on_no_hosts_matched(self):
|
||||||
self._display.display("skipping: no hosts matched", color=C.COLOR_SKIP)
|
self._display.display("skipping: no hosts matched", color=C.COLOR_SKIP)
|
||||||
|
|
|
@ -28,8 +28,8 @@ class ModuleDocFragment(object):
|
||||||
type: boolean
|
type: boolean
|
||||||
version_added: '2.7'
|
version_added: '2.7'
|
||||||
display_failed_stderr:
|
display_failed_stderr:
|
||||||
name: Use STDERR for failed tasks
|
name: Use STDERR for failed and unreachable tasks
|
||||||
description: "Toggle to control whether failed tasks are displayed to STDERR (vs. STDOUT)"
|
description: "Toggle to control whether failed and unreachable tasks are displayed to STDERR (vs. STDOUT)"
|
||||||
default: False
|
default: False
|
||||||
env:
|
env:
|
||||||
- name: ANSIBLE_DISPLAY_FAILED_STDERR
|
- name: ANSIBLE_DISPLAY_FAILED_STDERR
|
||||||
|
|
|
@ -75,3 +75,6 @@ localhost ansible_ssh_host=127.0.0.1 ansible_connection=local
|
||||||
|
|
||||||
[azure]
|
[azure]
|
||||||
localhost ansible_ssh_host=127.0.0.1 ansible_connection=local
|
localhost ansible_ssh_host=127.0.0.1 ansible_connection=local
|
||||||
|
|
||||||
|
[nonexistent]
|
||||||
|
testhost5 ansible_host=169.254.199.200
|
||||||
|
|
|
@ -36,6 +36,15 @@ cleanup() {
|
||||||
if [[ $INIT = 0 ]]; then
|
if [[ $INIT = 0 ]]; then
|
||||||
rm -rf "${OUTFILE}.*"
|
rm -rf "${OUTFILE}.*"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ -f "${BASEFILE}.unreachable.stdout" ]]; then
|
||||||
|
rm -rf "${BASEFILE}.unreachable.stdout"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -f "${BASEFILE}.unreachable.stderr" ]]; then
|
||||||
|
rm -rf "${BASEFILE}.unreachable.stderr"
|
||||||
|
fi
|
||||||
|
|
||||||
# Restore TTY cols
|
# Restore TTY cols
|
||||||
if [[ -n ${TTY_COLS:-} ]]; then
|
if [[ -n ${TTY_COLS:-} ]]; then
|
||||||
stty cols "${TTY_COLS}"
|
stty cols "${TTY_COLS}"
|
||||||
|
@ -105,3 +114,17 @@ export ANSIBLE_DISPLAY_OK_HOSTS=1
|
||||||
export ANSIBLE_DISPLAY_FAILED_STDERR=1
|
export ANSIBLE_DISPLAY_FAILED_STDERR=1
|
||||||
|
|
||||||
run_test failed_to_stderr
|
run_test failed_to_stderr
|
||||||
|
|
||||||
|
# Default settings with unreachable tasks
|
||||||
|
export DISPLAY_SKIPPED_HOSTS=1
|
||||||
|
export ANSIBLE_DISPLAY_OK_HOSTS=1
|
||||||
|
export ANSIBLE_DISPLAY_FAILED_STDERR=1
|
||||||
|
|
||||||
|
# Check if UNREACHBLE is available in stderr
|
||||||
|
set +e
|
||||||
|
ansible-playbook -i ../../inventory test_2.yml > >(set +x; tee "${BASEFILE}.unreachable.stdout";) 2> >(set +x; tee "${BASEFILE}.unreachable.stderr" >&2) || true
|
||||||
|
set -e
|
||||||
|
if test "$(grep -c 'UNREACHABLE' "${BASEFILE}.unreachable.stderr")" -ne 1; then
|
||||||
|
echo "Test failed"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
6
test/integration/targets/callback_default/test_2.yml
Normal file
6
test/integration/targets/callback_default/test_2.yml
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
- hosts: nonexistent
|
||||||
|
gather_facts: no
|
||||||
|
tasks:
|
||||||
|
- name: Test task for unreachable host
|
||||||
|
command: echo foo
|
||||||
|
ignore_errors: True
|
Loading…
Reference in a new issue