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
|
||||
|
||||
# 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/
|
||||
COLOR_CODES = {
|
||||
'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:
|
||||
_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)
|
||||
_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_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 'Not tagged task' role_complete_test.out)" -eq 0 ]
|
||||
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
|
||||
|
||||
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