Fix task get_name to always prepend the role name (#72511)

* Fix 'role_name : tast_name' notation if task contains role name

* Add tests for notifying handler names which contain the role name

Co-authored-by: Thomas Wouters <thomaswouters@gmail.com>
This commit is contained in:
Sloane Hertel 2020-11-06 11:46:58 -05:00 committed by GitHub
parent c8590c7482
commit 0ed7bfc694
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 35 additions and 5 deletions

View file

@ -0,0 +1,3 @@
bugfixes:
- 'Fix notifying handlers via `role_name : handler_name` when handler name contains the role name. (https://github.com/ansible/ansible/issues/70582)'
- 'Fix --list-tasks format `role_name : task_name` when task name contains the role name. (https://github.com/ansible/ansible/issues/72505)'

View file

@ -122,7 +122,7 @@ class Task(Base, Conditional, Taggable, CollectionSearch):
if self._role: if self._role:
role_name = self._role.get_name(include_role_fqcn=include_role_fqcn) role_name = self._role.get_name(include_role_fqcn=include_role_fqcn)
if self._role and self.name and role_name not in self.name: if self._role and self.name:
return "%s : %s" % (role_name, self.name) return "%s : %s" % (role_name, self.name)
elif self.name: elif self.name:
return self.name return self.name

View file

@ -1010,10 +1010,7 @@ class StrategyBase:
notified_hosts += failed_hosts notified_hosts += failed_hosts
if len(notified_hosts) > 0: if len(notified_hosts) > 0:
saved_name = handler.name
handler.name = handler_name
self._tqm.send_callback('v2_playbook_on_handler_task_start', handler) self._tqm.send_callback('v2_playbook_on_handler_task_start', handler)
handler.name = saved_name
bypass_host_loop = False bypass_host_loop = False
try: try:

View file

@ -4,3 +4,24 @@
set_fact: set_fact:
handler_counter: '{{ handler_counter|int + 1 }}' handler_counter: '{{ handler_counter|int + 1 }}'
failed_when: handler_counter|int > 1 failed_when: handler_counter|int > 1
# The following handler contains the role name and should be callable as:
# 'common_handlers test_fqcn_handler'
# 'common_handlers : common_handlers test_fqcn_handler`
# 'testns.testcoll.common_handlers : common_handlers test_fqcn_handler'
- name: common_handlers test_fqcn_handler
set_fact:
handler_counter: '{{ handler_counter|int + 1}}'
failed_when: handler_counter|int > 2
# The following handler starts with 'role name : ' and should _not_ be listed as:
# 'common_handlers : common_handlers : test_fqcn_handler`
# 'testns.testcoll.common_handlers : common_handlers : test_fqcn_handler'
- name: 'common_handlers : test_fqcn_handler'
meta: noop
# The following handler starts with 'fqcn : ' and should _not_ be listed as:
# 'common_handlers : testns.testcoll.common_handlers : test_fqcn_handler`
# 'testns.testcoll.common_handlers : testns.testcoll.common_handlers : test_fqcn_handler'
- name: 'testns.testcoll.common_handlers : test_fqcn_handler'
meta: noop

View file

@ -1,7 +1,16 @@
- debug: - name: Fire fqcn handler 1
debug:
msg: Fire fqcn handler msg: Fire fqcn handler
changed_when: true changed_when: true
notify: notify:
- 'testns.testcoll.common_handlers : test_fqcn_handler' - 'testns.testcoll.common_handlers : test_fqcn_handler'
- 'common_handlers : test_fqcn_handler' - 'common_handlers : test_fqcn_handler'
- 'test_fqcn_handler' - 'test_fqcn_handler'
- debug:
msg: Fire fqcn handler with role name
changed_when: true
notify:
- 'testns.testcoll.common_handlers : common_handlers test_fqcn_handler'
- 'common_handlers : common_handlers test_fqcn_handler'
- 'common_handlers test_fqcn_handler'