[stable-2.10] pause - adjust warning when run in background (#73182) (#73231)

When the pause module is run in the background and seconds parameter is provided,
do not warn.

* Add tests
* Fix existing tests
  The test wasn't failing when it should have.
(cherry picked from commit 0e6c334115)

Co-authored-by: Sam Doran <sdoran@redhat.com>
pull/73533/head
Sam Doran 4 years ago committed by GitHub
parent bca57ec65a
commit f9572a377d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -0,0 +1,2 @@
bugfixes:
- pause - do not warn when running in the background if a timeout is provided (https://github.com/ansible/ansible/issues/73042)

@ -231,7 +231,8 @@ class ActionModule(ActionBase):
while True: while True:
if not interactive: if not interactive:
display.warning("Not waiting for response to prompt as stdin is not interactive") if seconds is None:
display.warning("Not waiting for response to prompt as stdin is not interactive")
if seconds is not None: if seconds is not None:
# Give the signal handler enough time to timeout # Give the signal handler enough time to timeout
time.sleep(seconds + 1) time.sleep(seconds + 1)

@ -4,8 +4,8 @@ set -eux
ANSIBLE_ROLES_PATH=../ ansible-playbook setup.yml ANSIBLE_ROLES_PATH=../ ansible-playbook setup.yml
# Test pause module when no tty and non-interactive. This is to prevent playbooks # Test pause module when no tty and non-interactive with no seconds parameter.
# from hanging in cron and Tower jobs. # This is to prevent playbooks from hanging in cron and Tower jobs.
/usr/bin/env bash << EOF /usr/bin/env bash << EOF
ansible-playbook test-pause-no-tty.yml 2>&1 | \ ansible-playbook test-pause-no-tty.yml 2>&1 | \
grep '\[WARNING\]: Not waiting for response to prompt as stdin is not interactive' && { grep '\[WARNING\]: Not waiting for response to prompt as stdin is not interactive' && {
@ -17,11 +17,24 @@ ansible-playbook test-pause-no-tty.yml 2>&1 | \
} }
EOF EOF
# Do not issue a warning when run in the background if a timeout is given
# https://github.com/ansible/ansible/issues/73042
if sleep 0 | ansible localhost -m pause -a 'seconds=1' 2>&1 | grep '\[WARNING\]: Not waiting for response'; then
echo "Incorrectly issued warning when run in the background"
exit 1
else
echo "Succesfully ran in the background with no warning"
fi
# Test redirecting stdout # Test redirecting stdout
# Issue #41717 # https://github.com/ansible/ansible/issues/41717
ansible-playbook pause-3.yml > /dev/null \ if ansible-playbook pause-3.yml > /dev/null ; then
&& echo "Successfully redirected stdout" \ echo "Successfully redirected stdout"
|| echo "Failure when attempting to redirect stdout" else
echo "Failure when attempting to redirect stdout"
exit 1
fi
# Test pause with seconds and minutes specified # Test pause with seconds and minutes specified
ansible-playbook test-pause.yml "$@" ansible-playbook test-pause.yml "$@"

Loading…
Cancel
Save