This commit is contained in:
parent
7f04ee1eb4
commit
77befcf5d7
10 changed files with 34 additions and 1 deletions
4
changelogs/fragments/48936-import-handlers.yaml
Normal file
4
changelogs/fragments/48936-import-handlers.yaml
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
bugfixes:
|
||||||
|
- imports - Prevent the name of an import from being addressable as a handler, only the tasks within should
|
||||||
|
be addressable. Use an include instead of an import if you need to execute many tasks from a single handler
|
||||||
|
(https://github.com/ansible/ansible/issues/48936)
|
|
@ -402,7 +402,7 @@ class StrategyBase:
|
||||||
|
|
||||||
def parent_handler_match(target_handler, handler_name):
|
def parent_handler_match(target_handler, handler_name):
|
||||||
if target_handler:
|
if target_handler:
|
||||||
if isinstance(target_handler, (TaskInclude, IncludeRole)):
|
if isinstance(target_handler, (TaskInclude, IncludeRole)) and not getattr(target_handler, 'statically_loaded', True):
|
||||||
try:
|
try:
|
||||||
handler_vars = self._variable_manager.get_vars(play=iterator._play, task=target_handler)
|
handler_vars = self._variable_manager.get_vars(play=iterator._play, task=target_handler)
|
||||||
templar = Templar(loader=self._loader, variables=handler_vars)
|
templar = Templar(loader=self._loader, variables=handler_vars)
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
- hosts: localhost
|
||||||
|
gather_facts: false
|
||||||
|
tasks:
|
||||||
|
- import_role:
|
||||||
|
name: include_handler_test
|
||||||
|
|
||||||
|
- hosts: localhost
|
||||||
|
gather_facts: false
|
||||||
|
tasks:
|
||||||
|
- import_role:
|
||||||
|
name: import_handler_test
|
|
@ -0,0 +1,2 @@
|
||||||
|
- name: do_import
|
||||||
|
import_tasks: tasks/handlers.yml
|
|
@ -0,0 +1,2 @@
|
||||||
|
- debug:
|
||||||
|
msg: import handler task
|
|
@ -0,0 +1,3 @@
|
||||||
|
- command: "true"
|
||||||
|
notify:
|
||||||
|
- do_import
|
|
@ -0,0 +1,2 @@
|
||||||
|
- name: do_include
|
||||||
|
include_tasks: tasks/handlers.yml
|
|
@ -0,0 +1,2 @@
|
||||||
|
- debug:
|
||||||
|
msg: include handler task
|
|
@ -0,0 +1,3 @@
|
||||||
|
- command: "true"
|
||||||
|
notify:
|
||||||
|
- do_include
|
|
@ -86,3 +86,7 @@ ansible-playbook public_exposure/no_overwrite_roles.yml -i ../../inventory "$@"
|
||||||
|
|
||||||
# https://github.com/ansible/ansible/pull/48068
|
# https://github.com/ansible/ansible/pull/48068
|
||||||
ansible-playbook run_once/playbook.yml "$@"
|
ansible-playbook run_once/playbook.yml "$@"
|
||||||
|
|
||||||
|
# https://github.com/ansible/ansible/issues/48936
|
||||||
|
ansible-playbook -v handler_addressing/playbook.yml 2>&1 | tee test_handler_addressing.out
|
||||||
|
test "$(egrep -c 'include handler task|ERROR! The requested handler '"'"'do_import'"'"' was not found' test_handler_addressing.out)" = 2
|
||||||
|
|
Loading…
Reference in a new issue