diff --git a/lib/ansible/playbook/helpers.py b/lib/ansible/playbook/helpers.py index 86c0c14f84265c..58a58fca5b6803 100644 --- a/lib/ansible/playbook/helpers.py +++ b/lib/ansible/playbook/helpers.py @@ -333,10 +333,10 @@ def load_list_of_tasks(ds, play, block=None, role=None, task_include=None, use_h # uses compiled list from object blocks, _ = ir.get_block_list(variable_manager=variable_manager, loader=loader) - t = task_list.extend(blocks) + task_list.extend(blocks) else: # passes task object itself for latter generation of list - t = task_list.append(ir) + task_list.append(ir) else: if use_handlers: t = Handler.load(task_ds, block=block, role=role, task_include=task_include, variable_manager=variable_manager, loader=loader) diff --git a/lib/ansible/playbook/role_include.py b/lib/ansible/playbook/role_include.py index f2d50c49d3d089..2b95deb6502269 100644 --- a/lib/ansible/playbook/role_include.py +++ b/lib/ansible/playbook/role_include.py @@ -96,6 +96,8 @@ def get_block_list(self, play=None, variable_manager=None, loader=None): # updated available handlers in play handlers = actual_role.get_handler_blocks(play=myplay) + for h in handlers: + h._parent = self myplay.handlers = myplay.handlers + handlers return blocks, handlers diff --git a/test/integration/targets/include_import/role/test_import_role.yml b/test/integration/targets/include_import/role/test_import_role.yml index 8a8bdc17245c06..492e32a567697a 100644 --- a/test/integration/targets/include_import/role/test_import_role.yml +++ b/test/integration/targets/include_import/role/test_import_role.yml @@ -136,3 +136,8 @@ - name: Include role inside always import_role: name: role3 + + - name: Test delegate_to handler is delegated + import_role: + name: delegated_handler + delegate_to: localhost diff --git a/test/integration/targets/include_import/roles/delegated_handler/handlers/main.yml b/test/integration/targets/include_import/roles/delegated_handler/handlers/main.yml new file mode 100644 index 00000000000000..550ddc21ec81fe --- /dev/null +++ b/test/integration/targets/include_import/roles/delegated_handler/handlers/main.yml @@ -0,0 +1,4 @@ +- name: delegated assert handler + assert: + that: + - ansible_delegated_vars is defined diff --git a/test/integration/targets/include_import/roles/delegated_handler/tasks/main.yml b/test/integration/targets/include_import/roles/delegated_handler/tasks/main.yml new file mode 100644 index 00000000000000..9d2ef61c3b07b6 --- /dev/null +++ b/test/integration/targets/include_import/roles/delegated_handler/tasks/main.yml @@ -0,0 +1,3 @@ +- command: "true" + notify: + - delegated assert handler