diff --git a/changelogs/fragments/static-tasks.yml b/changelogs/fragments/static-tasks.yml index 58ffc09358c..4fc87296c35 100644 --- a/changelogs/fragments/static-tasks.yml +++ b/changelogs/fragments/static-tasks.yml @@ -1,5 +1,4 @@ minor_changes: - >- Include the explicit import_tasks and import_role tasks in the play iterator for the strategy to see. By default - these tasks are skipped but a strategy can utilise them in a special way if needed. This will cause the import_* to - be displayed in UI as a normal task when it is run. + these tasks are skipped but a strategy can utilise them in a special way if needed. \ No newline at end of file diff --git a/lib/ansible/playbook/helpers.py b/lib/ansible/playbook/helpers.py index f7915b08900..9a09ff638df 100644 --- a/lib/ansible/playbook/helpers.py +++ b/lib/ansible/playbook/helpers.py @@ -241,7 +241,9 @@ def load_list_of_tasks(ds, play, block=None, role=None, task_include=None, use_h loader=loader, variable_manager=variable_manager, ) - task_list.append(ti_copy) + + if not use_handlers: + task_list.append(ti_copy) tags = ti_copy.tags[:] @@ -286,7 +288,9 @@ def load_list_of_tasks(ds, play, block=None, role=None, task_include=None, use_h templar = Templar(loader=loader, variables=all_vars) ir.post_validate(templar=templar) ir._role_name = templar.template(ir._role_name) - task_list.append(ir) + + if not use_handlers: + task_list.append(ir) # uses compiled list from object blocks, dummy = ir.get_block_list(variable_manager=variable_manager, loader=loader) diff --git a/lib/ansible/plugins/strategy/free.py b/lib/ansible/plugins/strategy/free.py index 2c981101416..987f0d4744f 100644 --- a/lib/ansible/plugins/strategy/free.py +++ b/lib/ansible/plugins/strategy/free.py @@ -191,7 +191,7 @@ class StrategyModule(StrategyBase): "as tasks are executed independently on each host") if isinstance(task, Handler): self._tqm.send_callback('v2_playbook_on_handler_task_start', task) - else: + elif action not in C._ACTION_IMPORT_TASKS + C._ACTION_IMPORT_ROLE: self._tqm.send_callback('v2_playbook_on_task_start', task, is_conditional=False) self._queue_task(host, task, task_vars, play_context) # each task is counted as a worker being busy diff --git a/lib/ansible/plugins/strategy/linear.py b/lib/ansible/plugins/strategy/linear.py index 14d45d405da..93e7c885093 100644 --- a/lib/ansible/plugins/strategy/linear.py +++ b/lib/ansible/plugins/strategy/linear.py @@ -230,7 +230,7 @@ class StrategyModule(StrategyBase): display.debug("here goes the callback...") if isinstance(task, Handler): self._tqm.send_callback('v2_playbook_on_handler_task_start', task) - else: + elif action not in C._ACTION_IMPORT_TASKS + C._ACTION_IMPORT_ROLE: self._tqm.send_callback('v2_playbook_on_task_start', task, is_conditional=False) task.name = saved_name callback_sent = True