adhoc, ansible-console - fix traceback for meta end_play tasks (#86294)

Ensure all entrypoints using TaskQueueManager catch AnsibleEndPlay
pull/86345/head
Sloane Hertel 3 weeks ago committed by GitHub
parent 17fb4af38d
commit f924902830
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -0,0 +1,3 @@
bugfixes:
- >-
``ansible``, ``ansible-console`` - fix executing ``- meta: end_play`` tasks.

@ -14,7 +14,7 @@ from ansible import constants as C
from ansible import context
from ansible.cli.arguments import option_helpers as opt_help
from ansible.errors import AnsibleError, AnsibleOptionsError, AnsibleParserError
from ansible.executor.task_queue_manager import TaskQueueManager
from ansible.executor.task_queue_manager import AnsibleEndPlay, TaskQueueManager
from ansible.module_utils.common.text.converters import to_text
from ansible.parsing.splitter import parse_kv
from ansible.playbook import Playbook
@ -198,6 +198,8 @@ class AdHocCLI(CLI):
result = self._tqm.run(play)
self._tqm.send_callback('v2_playbook_on_stats', self._tqm._stats)
except AnsibleEndPlay as e:
result = e.result
finally:
if self._tqm:
self._tqm.cleanup()

@ -20,7 +20,7 @@ import sys
from ansible import constants as C
from ansible import context
from ansible.cli.arguments import option_helpers as opt_help
from ansible.executor.task_queue_manager import TaskQueueManager
from ansible.executor.task_queue_manager import AnsibleEndPlay, TaskQueueManager
from ansible.module_utils.common.text.converters import to_native, to_text
from ansible.module_utils.parsing.convert_bool import boolean
from ansible.parsing.splitter import parse_kv
@ -230,6 +230,8 @@ class ConsoleCLI(CLI, cmd.Cmd):
result = self._tqm.run(play)
display.debug(result)
except AnsibleEndPlay as e:
result = e.result
finally:
if self._tqm:
self._tqm.cleanup()

@ -26,3 +26,5 @@ ansible localhost -m setup > /dev/null
ansible localhost -m assert -a '{"that": "ansible_facts.distribution is defined"}'
# test flushing the fact cache
ansible --flush-cache localhost -m debug -a "msg={{ ansible_facts }}" | grep '"msg": {}'
# test meta end_play
ansible localhost -m include_role -a name=end_play

@ -8,3 +8,9 @@ set -eux
unset ANSIBLE_HOST_PATTERN_MISMATCH
echo debug var=inventory_hostname | ansible-console '{{"localhost"}}'
echo include_role name=end_play | ansible-console localhost 2>&1 | tee err.txt
if grep -q "ERROR" err.txt; then
echo "Failed to execute end_play"
exit 1
fi

Loading…
Cancel
Save