From d0d9be30d5c9c3b282e6a10914b12d7fb4847687 Mon Sep 17 00:00:00 2001 From: James Cammarata Date: Tue, 23 Jun 2015 15:48:48 -0400 Subject: [PATCH] Correctly compile handler blocks for dependent roles --- lib/ansible/playbook/role/__init__.py | 7 ++++++- lib/ansible/plugins/strategies/__init__.py | 4 ---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/ansible/playbook/role/__init__.py b/lib/ansible/playbook/role/__init__.py index b453d937405..c24e6499d7f 100644 --- a/lib/ansible/playbook/role/__init__.py +++ b/lib/ansible/playbook/role/__init__.py @@ -288,7 +288,12 @@ class Role(Base, Become, Conditional, Taggable): return self._task_blocks[:] def get_handler_blocks(self): - return self._handler_blocks[:] + block_list = [] + for dep in self.get_direct_dependencies(): + dep_blocks = dep.get_handler_blocks() + block_list.extend(dep_blocks) + block_list.extend(self._handler_blocks) + return block_list def has_run(self): ''' diff --git a/lib/ansible/plugins/strategies/__init__.py b/lib/ansible/plugins/strategies/__init__.py index 83e045bfe39..180cf3245d1 100644 --- a/lib/ansible/plugins/strategies/__init__.py +++ b/lib/ansible/plugins/strategies/__init__.py @@ -366,10 +366,6 @@ class StrategyBase: result = True - # FIXME: getting the handlers from the iterators play should be - # a method on the iterator, which may also filter the list - # of handlers based on the notified list - for handler_block in iterator._play.handlers: # FIXME: handlers need to support the rescue/always portions of blocks too, # but this may take some work in the iterator and gets tricky when