Fix notify on import_tasks (#73572)
* Fix notify on import_tasks also able to apply to blocks now.
This commit is contained in:
parent
935528e22e
commit
ce1de28061
12 changed files with 97 additions and 26 deletions
2
changelogs/fragments/fix_import_notify.yml
Normal file
2
changelogs/fragments/fix_import_notify.yml
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
bugfixes:
|
||||||
|
- notify keyword is not ignored anymore on import_tasks, also able to apply to blocks now.
|
|
@ -61,6 +61,31 @@ class _DeprecatedSequenceConstant(Sequence):
|
||||||
|
|
||||||
|
|
||||||
# CONSTANTS ### yes, actual ones
|
# CONSTANTS ### yes, actual ones
|
||||||
|
|
||||||
|
# The following are hard-coded action names
|
||||||
|
_ACTION_DEBUG = add_internal_fqcns(('debug', ))
|
||||||
|
_ACTION_IMPORT_PLAYBOOK = add_internal_fqcns(('import_playbook', ))
|
||||||
|
_ACTION_IMPORT_ROLE = add_internal_fqcns(('import_role', ))
|
||||||
|
_ACTION_IMPORT_TASKS = add_internal_fqcns(('import_tasks', ))
|
||||||
|
_ACTION_INCLUDE = add_internal_fqcns(('include', ))
|
||||||
|
_ACTION_INCLUDE_ROLE = add_internal_fqcns(('include_role', ))
|
||||||
|
_ACTION_INCLUDE_TASKS = add_internal_fqcns(('include_tasks', ))
|
||||||
|
_ACTION_INCLUDE_VARS = add_internal_fqcns(('include_vars', ))
|
||||||
|
_ACTION_META = add_internal_fqcns(('meta', ))
|
||||||
|
_ACTION_SET_FACT = add_internal_fqcns(('set_fact', ))
|
||||||
|
_ACTION_SETUP = add_internal_fqcns(('setup', ))
|
||||||
|
_ACTION_HAS_CMD = add_internal_fqcns(('command', 'shell', 'script'))
|
||||||
|
_ACTION_ALLOWS_RAW_ARGS = _ACTION_HAS_CMD + add_internal_fqcns(('raw', ))
|
||||||
|
_ACTION_ALL_INCLUDES = _ACTION_INCLUDE + _ACTION_INCLUDE_TASKS + _ACTION_INCLUDE_ROLE
|
||||||
|
_ACTION_ALL_IMPORT_PLAYBOOKS = _ACTION_INCLUDE + _ACTION_IMPORT_PLAYBOOK
|
||||||
|
_ACTION_ALL_INCLUDE_IMPORT_TASKS = _ACTION_INCLUDE + _ACTION_INCLUDE_TASKS + _ACTION_IMPORT_TASKS
|
||||||
|
_ACTION_ALL_PROPER_INCLUDE_IMPORT_ROLES = _ACTION_INCLUDE_ROLE + _ACTION_IMPORT_ROLE
|
||||||
|
_ACTION_ALL_PROPER_INCLUDE_IMPORT_TASKS = _ACTION_INCLUDE_TASKS + _ACTION_IMPORT_TASKS
|
||||||
|
_ACTION_ALL_INCLUDE_ROLE_TASKS = _ACTION_INCLUDE_ROLE + _ACTION_INCLUDE_TASKS
|
||||||
|
_ACTION_ALL_INCLUDE_TASKS = _ACTION_INCLUDE + _ACTION_INCLUDE_TASKS
|
||||||
|
_ACTION_FACT_GATHERING = _ACTION_SETUP + add_internal_fqcns(('gather_facts', ))
|
||||||
|
_ACTION_WITH_CLEAN_FACTS = _ACTION_SET_FACT + _ACTION_INCLUDE_VARS
|
||||||
|
|
||||||
# http://nezzen.net/2008/06/23/colored-text-in-python-using-ansi-escape-sequences/
|
# http://nezzen.net/2008/06/23/colored-text-in-python-using-ansi-escape-sequences/
|
||||||
COLOR_CODES = {
|
COLOR_CODES = {
|
||||||
'black': u'0;30', 'bright gray': u'0;37',
|
'black': u'0;30', 'bright gray': u'0;37',
|
||||||
|
@ -178,28 +203,3 @@ for setting in config.data.get_settings():
|
||||||
|
|
||||||
for warn in config.WARNINGS:
|
for warn in config.WARNINGS:
|
||||||
_warning(warn)
|
_warning(warn)
|
||||||
|
|
||||||
|
|
||||||
# The following are hard-coded action names
|
|
||||||
_ACTION_DEBUG = add_internal_fqcns(('debug', ))
|
|
||||||
_ACTION_IMPORT_PLAYBOOK = add_internal_fqcns(('import_playbook', ))
|
|
||||||
_ACTION_IMPORT_ROLE = add_internal_fqcns(('import_role', ))
|
|
||||||
_ACTION_IMPORT_TASKS = add_internal_fqcns(('import_tasks', ))
|
|
||||||
_ACTION_INCLUDE = add_internal_fqcns(('include', ))
|
|
||||||
_ACTION_INCLUDE_ROLE = add_internal_fqcns(('include_role', ))
|
|
||||||
_ACTION_INCLUDE_TASKS = add_internal_fqcns(('include_tasks', ))
|
|
||||||
_ACTION_INCLUDE_VARS = add_internal_fqcns(('include_vars', ))
|
|
||||||
_ACTION_META = add_internal_fqcns(('meta', ))
|
|
||||||
_ACTION_SET_FACT = add_internal_fqcns(('set_fact', ))
|
|
||||||
_ACTION_SETUP = add_internal_fqcns(('setup', ))
|
|
||||||
_ACTION_HAS_CMD = add_internal_fqcns(('command', 'shell', 'script'))
|
|
||||||
_ACTION_ALLOWS_RAW_ARGS = _ACTION_HAS_CMD + add_internal_fqcns(('raw', ))
|
|
||||||
_ACTION_ALL_INCLUDES = _ACTION_INCLUDE + _ACTION_INCLUDE_TASKS + _ACTION_INCLUDE_ROLE
|
|
||||||
_ACTION_ALL_IMPORT_PLAYBOOKS = _ACTION_INCLUDE + _ACTION_IMPORT_PLAYBOOK
|
|
||||||
_ACTION_ALL_INCLUDE_IMPORT_TASKS = _ACTION_INCLUDE + _ACTION_INCLUDE_TASKS + _ACTION_IMPORT_TASKS
|
|
||||||
_ACTION_ALL_PROPER_INCLUDE_IMPORT_ROLES = _ACTION_INCLUDE_ROLE + _ACTION_IMPORT_ROLE
|
|
||||||
_ACTION_ALL_PROPER_INCLUDE_IMPORT_TASKS = _ACTION_INCLUDE_TASKS + _ACTION_IMPORT_TASKS
|
|
||||||
_ACTION_ALL_INCLUDE_ROLE_TASKS = _ACTION_INCLUDE_ROLE + _ACTION_INCLUDE_TASKS
|
|
||||||
_ACTION_ALL_INCLUDE_TASKS = _ACTION_INCLUDE + _ACTION_INCLUDE_TASKS
|
|
||||||
_ACTION_FACT_GATHERING = _ACTION_SETUP + add_internal_fqcns(('gather_facts', ))
|
|
||||||
_ACTION_WITH_CLEAN_FACTS = _ACTION_SET_FACT + _ACTION_INCLUDE_VARS
|
|
||||||
|
|
|
@ -38,7 +38,8 @@ class Block(Base, Conditional, CollectionSearch, Taggable):
|
||||||
_rescue = FieldAttribute(isa='list', default=list, inherit=False)
|
_rescue = FieldAttribute(isa='list', default=list, inherit=False)
|
||||||
_always = FieldAttribute(isa='list', default=list, inherit=False)
|
_always = FieldAttribute(isa='list', default=list, inherit=False)
|
||||||
|
|
||||||
# other fields
|
# other fields for task compat
|
||||||
|
_notify = FieldAttribute(isa='list')
|
||||||
_delegate_to = FieldAttribute(isa='string')
|
_delegate_to = FieldAttribute(isa='string')
|
||||||
_delegate_facts = FieldAttribute(isa='bool')
|
_delegate_facts = FieldAttribute(isa='bool')
|
||||||
|
|
||||||
|
|
19
test/integration/targets/blocks/inherit_notify.yml
Normal file
19
test/integration/targets/blocks/inherit_notify.yml
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
- hosts: localhost
|
||||||
|
gather_facts: false
|
||||||
|
tasks:
|
||||||
|
- name: test notify inheritance in block
|
||||||
|
notify: hello
|
||||||
|
block:
|
||||||
|
- debug: msg='trigger it'
|
||||||
|
changed_when: true
|
||||||
|
|
||||||
|
handlers:
|
||||||
|
- name: hello
|
||||||
|
set_fact: hello=world
|
||||||
|
|
||||||
|
post_tasks:
|
||||||
|
- name: ensure handler ran
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- hello is defined
|
||||||
|
- "hello == 'world'"
|
|
@ -100,3 +100,6 @@ cat role_complete_test.out
|
||||||
[ "$(grep -c 'Tagged task' role_complete_test.out)" -eq 2 ]
|
[ "$(grep -c 'Tagged task' role_complete_test.out)" -eq 2 ]
|
||||||
[ "$(grep -c 'Not tagged task' role_complete_test.out)" -eq 0 ]
|
[ "$(grep -c 'Not tagged task' role_complete_test.out)" -eq 0 ]
|
||||||
rm -f role_complete_test.out
|
rm -f role_complete_test.out
|
||||||
|
|
||||||
|
# test notify inheritance
|
||||||
|
ansible-playbook inherit_notify.yml "$@"
|
||||||
|
|
2
test/integration/targets/import_tasks/aliases
Normal file
2
test/integration/targets/import_tasks/aliases
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
shippable/posix/group5
|
||||||
|
skip/aix
|
15
test/integration/targets/import_tasks/inherit_notify.yml
Normal file
15
test/integration/targets/import_tasks/inherit_notify.yml
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
- hosts: localhost
|
||||||
|
gather_facts: false
|
||||||
|
pre_tasks:
|
||||||
|
- import_tasks: tasks/trigger_change.yml
|
||||||
|
notify: hello
|
||||||
|
|
||||||
|
handlers:
|
||||||
|
- name: hello
|
||||||
|
set_fact: hello=world
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- name: ensure handler ran
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- "hello is defined and hello == 'world'"
|
5
test/integration/targets/import_tasks/runme.sh
Executable file
5
test/integration/targets/import_tasks/runme.sh
Executable file
|
@ -0,0 +1,5 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -eux
|
||||||
|
|
||||||
|
ansible-playbook inherit_notify.yml "$@"
|
|
@ -0,0 +1,2 @@
|
||||||
|
- debug: msg="I trigger changed!"
|
||||||
|
changed_when: true
|
18
test/integration/targets/includes/inherit_notify.yml
Normal file
18
test/integration/targets/includes/inherit_notify.yml
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
- hosts: localhost
|
||||||
|
gather_facts: false
|
||||||
|
pre_tasks:
|
||||||
|
- include_tasks:
|
||||||
|
file: tasks/trigger_change.yml
|
||||||
|
apply:
|
||||||
|
notify: hello
|
||||||
|
|
||||||
|
handlers:
|
||||||
|
- name: hello
|
||||||
|
set_fact: hello=world
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- name: ensure handler ran
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- hello is defined
|
||||||
|
- "hello == 'world'"
|
|
@ -3,3 +3,5 @@
|
||||||
set -eux
|
set -eux
|
||||||
|
|
||||||
ansible-playbook test_includes.yml -i ../../inventory "$@"
|
ansible-playbook test_includes.yml -i ../../inventory "$@"
|
||||||
|
|
||||||
|
ansible-playbook inherit_notify.yml "$@"
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
- debug: msg="I trigger changed!"
|
||||||
|
changed_when: true
|
Loading…
Reference in a new issue