diff --git a/lib/ansible/playbook/__init__.py b/lib/ansible/playbook/__init__.py index 5eba7745c8..bbec4d5fdc 100644 --- a/lib/ansible/playbook/__init__.py +++ b/lib/ansible/playbook/__init__.py @@ -355,7 +355,7 @@ class PlayBook(object): def _run_task_internal(self, task): ''' run a particular module step in a playbook ''' - hosts = self._trim_unavailable_hosts(task.play._play_hosts) + hosts = self._trim_unavailable_hosts(self.inventory.list_hosts(task.play._play_hosts)) self.inventory.restrict_to(hosts) runner = ansible.runner.Runner( diff --git a/test/integration/roles/test_handlers/meta/main.yml b/test/integration/roles/test_handlers/meta/main.yml index 1050c23ce3..74d2c33354 100644 --- a/test/integration/roles/test_handlers/meta/main.yml +++ b/test/integration/roles/test_handlers/meta/main.yml @@ -1,3 +1,2 @@ -dependencies: - - prepare_tests +dependencies: [] diff --git a/test/integration/roles/test_handlers/tasks/main.yml b/test/integration/roles/test_handlers/tasks/main.yml index e788f51ea2..6f11768188 100644 --- a/test/integration/roles/test_handlers/tasks/main.yml +++ b/test/integration/roles/test_handlers/tasks/main.yml @@ -16,8 +16,23 @@ # You should have received a copy of the GNU General Public License # along with Ansible. If not, see . -- name: notify the handler + +- name: reset handler_called variable to false for all hosts + set_fact: + handler_called: False + +- name: notify the handler for host A only shell: echo notify: - set handler fact + when: inventory_hostname == 'A' +- name: force handler execution now + meta: "flush_handlers" + +- debug: var=handler_called + +- name: validate the handler only ran on one host + assert: + that: + - "inventory_hostname == 'A' and handler_called == True or handler_called == False" diff --git a/test/integration/test_handlers.yml b/test/integration/test_handlers.yml index dd766a9dea..6a5366408c 100644 --- a/test/integration/test_handlers.yml +++ b/test/integration/test_handlers.yml @@ -17,8 +17,9 @@ - "not hostvars[inventory_hostname]['handler1_called']" - "'handler2_called' in hostvars[inventory_hostname]" -#- hosts: testgroup -# gather_facts: False -# connection: local -# roles: -# - { role: test_handlers_meta } +- name: test handlers + hosts: testgroup + gather_facts: False + connection: local + roles: + - { role: test_handlers }