mirror of https://github.com/ansible/ansible.git
Fix notifying handlers by using an exact match (#55624)
* Fix notifying handlers by using an exact match rather than a string subset if listen is text rather than a list
* Enforce better type checking for listeners
* Share code for validating handler listeners
* Add test for handlers without names
* Add test for templating in handlers
* Add test for include_role
* Add a couple notes about 'listen' for handlers
* changelog
(cherry picked from commit ec1287ca7e)
pull/58512/head
parent
8cc128b8f5
commit
cb70656c99
@ -0,0 +1,3 @@
|
||||
bugfixes:
|
||||
- handlers - Only notify a handler if the handler is an exact match by ensuring `listen` is a list of strings.
|
||||
(https://github.com/ansible/ansible/issues/55575)
|
||||
@ -0,0 +1,15 @@
|
||||
---
|
||||
- name: name1
|
||||
set_fact:
|
||||
role_non_templated_name: True
|
||||
- name: "{{ handler2 }}"
|
||||
set_fact:
|
||||
role_templated_name: True
|
||||
- name: testlistener1
|
||||
set_fact:
|
||||
role_non_templated_listener: True
|
||||
listen: name3
|
||||
- name: testlistener2
|
||||
set_fact:
|
||||
role_templated_listener: True
|
||||
listen: "{{ handler4 }}"
|
||||
@ -0,0 +1,16 @@
|
||||
---
|
||||
- command: echo Hello World
|
||||
notify:
|
||||
- "{{ handler1 }}"
|
||||
- "{{ handler2 }}"
|
||||
- "{{ handler3 }}"
|
||||
- "{{ handler4 }}"
|
||||
|
||||
- meta: flush_handlers
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- role_non_templated_name is defined
|
||||
- role_templated_name is defined
|
||||
- role_non_templated_listener is defined
|
||||
- role_templated_listener is undefined
|
||||
@ -0,0 +1,43 @@
|
||||
- name: test templated values in handlers
|
||||
hosts: localhost
|
||||
gather_facts: no
|
||||
vars:
|
||||
handler1: name1
|
||||
handler2: name2
|
||||
handler3: name3
|
||||
handler4: name4
|
||||
|
||||
handlers:
|
||||
- name: name1
|
||||
set_fact:
|
||||
non_templated_name: True
|
||||
- name: "{{ handler2 }}"
|
||||
set_fact:
|
||||
templated_name: True
|
||||
- name: testlistener1
|
||||
set_fact:
|
||||
non_templated_listener: True
|
||||
listen: name3
|
||||
- name: testlistener2
|
||||
set_fact:
|
||||
templated_listener: True
|
||||
listen: "{{ handler4 }}"
|
||||
|
||||
tasks:
|
||||
- command: echo Hello World
|
||||
notify:
|
||||
- "{{ handler1 }}"
|
||||
- "{{ handler2 }}"
|
||||
- "{{ handler3 }}"
|
||||
- "{{ handler4 }}"
|
||||
|
||||
- meta: flush_handlers
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- non_templated_name is defined
|
||||
- templated_name is defined
|
||||
- non_templated_listener is defined
|
||||
- templated_listener is undefined
|
||||
|
||||
- include_role: name=test_templating_in_handlers
|
||||
Loading…
Reference in New Issue