Fix exception when including tasks from handlers (#47307)
Set _notified_handlers for the task's _uuid that is run as a handler Fix #47287
This commit is contained in:
parent
335a979f1d
commit
6497049f2a
4 changed files with 25 additions and 1 deletions
2
changelogs/fragments/47307-handler-include-task.yml
Normal file
2
changelogs/fragments/47307-handler-include-task.yml
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
bugfixes:
|
||||||
|
- "handlers - fix crash when handler task include tasks"
|
|
@ -952,9 +952,12 @@ class StrategyBase:
|
||||||
iterator._play.handlers.append(block)
|
iterator._play.handlers.append(block)
|
||||||
iterator.cache_block_tasks(block)
|
iterator.cache_block_tasks(block)
|
||||||
for task in block.block:
|
for task in block.block:
|
||||||
|
task_name = task.get_name()
|
||||||
|
display.debug("adding task '%s' included in handler '%s'" % (task_name, handler_name))
|
||||||
|
self._notified_handlers[task._uuid] = included_file._hosts[:]
|
||||||
result = self._do_handler_run(
|
result = self._do_handler_run(
|
||||||
handler=task,
|
handler=task,
|
||||||
handler_name=task.get_name(),
|
handler_name=task_name,
|
||||||
iterator=iterator,
|
iterator=iterator,
|
||||||
play_context=play_context,
|
play_context=play_context,
|
||||||
notified_hosts=included_file._hosts[:],
|
notified_hosts=included_file._hosts[:],
|
||||||
|
|
|
@ -63,3 +63,6 @@ set +e
|
||||||
result="$(ansible-playbook test_handlers_any_errors_fatal.yml -e output_dir=$output_dir -i inventory.handlers -v "$@" 2>&1)"
|
result="$(ansible-playbook test_handlers_any_errors_fatal.yml -e output_dir=$output_dir -i inventory.handlers -v "$@" 2>&1)"
|
||||||
set -e
|
set -e
|
||||||
[ ! -f $output_dir/should_not_exist_B ] || (rm -f $output_dir/should_not_exist_B && exit 1)
|
[ ! -f $output_dir/should_not_exist_B ] || (rm -f $output_dir/should_not_exist_B && exit 1)
|
||||||
|
|
||||||
|
# https://github.com/ansible/ansible/issues/47287
|
||||||
|
[ "$(ansible-playbook test_handlers_including_task.yml -i ../../inventory -v "$@" | egrep -o 'failed=[0-9]+')" = "failed=0" ]
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
---
|
||||||
|
- name: Verify handler can include other tasks (#47287)
|
||||||
|
hosts: testhost
|
||||||
|
tasks:
|
||||||
|
- name: include a task from the tasks section
|
||||||
|
include_tasks: handlers.yml
|
||||||
|
|
||||||
|
- name: notify a handler
|
||||||
|
debug:
|
||||||
|
msg: notifying handler
|
||||||
|
changed_when: yes
|
||||||
|
notify: include a task from the handlers section
|
||||||
|
|
||||||
|
handlers:
|
||||||
|
- name: include a task from the handlers section
|
||||||
|
include_tasks: handlers.yml
|
Loading…
Reference in a new issue