From c78c8d389f80f54e72f6f8ac64fc38d55ee3b19b Mon Sep 17 00:00:00 2001 From: Martin Krizek Date: Fri, 30 Nov 2018 16:30:27 +0100 Subject: [PATCH] Last loaded handler with the same name wins (#49249) * Last loaded handler with the same name wins * Add comment explaining reversed --- .../fragments/last-loaded-handler-same-name-wins.yaml | 2 ++ lib/ansible/plugins/strategy/__init__.py | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 changelogs/fragments/last-loaded-handler-same-name-wins.yaml diff --git a/changelogs/fragments/last-loaded-handler-same-name-wins.yaml b/changelogs/fragments/last-loaded-handler-same-name-wins.yaml new file mode 100644 index 0000000000..4426d4775b --- /dev/null +++ b/changelogs/fragments/last-loaded-handler-same-name-wins.yaml @@ -0,0 +1,2 @@ +bugfixes: + - Last loaded handler with the same name is used diff --git a/lib/ansible/plugins/strategy/__init__.py b/lib/ansible/plugins/strategy/__init__.py index ceb0f8eaa9..7e5583c820 100644 --- a/lib/ansible/plugins/strategy/__init__.py +++ b/lib/ansible/plugins/strategy/__init__.py @@ -368,7 +368,8 @@ class StrategyBase: return self._inventory.get_host(host_name) def search_handler_blocks_by_name(handler_name, handler_blocks): - for handler_block in handler_blocks: + # iterate in reversed order since last handler loaded with the same name wins + for handler_block in reversed(handler_blocks): for handler_task in handler_block.block: if handler_task.name: handler_vars = self._variable_manager.get_vars(play=iterator._play, task=handler_task) @@ -394,7 +395,8 @@ class StrategyBase: return None def search_handler_blocks_by_uuid(handler_uuid, handler_blocks): - for handler_block in handler_blocks: + # iterate in reversed order since last handler loaded with the same name wins + for handler_block in reversed(handler_blocks): for handler_task in handler_block.block: if handler_uuid == handler_task._uuid: return handler_task