Don't skip conditional exception on includes (#39377)
* task_executor.py: Raise 'conditional exception' in case of 'include_*' Fixes #33632 Signed-off-by: Patrick Ringl <patrick_@freenet.de> * Re-organize tests, add static include test with undefined var * Remove unnecessary conditional
This commit is contained in:
parent
05830658bc
commit
2f5161628a
5 changed files with 51 additions and 3 deletions
|
@ -471,8 +471,6 @@ class TaskExecutor:
|
||||||
# loop error takes precedence
|
# loop error takes precedence
|
||||||
if self._loop_eval_error is not None:
|
if self._loop_eval_error is not None:
|
||||||
raise self._loop_eval_error # pylint: disable=raising-bad-type
|
raise self._loop_eval_error # pylint: disable=raising-bad-type
|
||||||
# skip conditional exception in the case of includes as the vars needed might not be available except in the included tasks or due to tags
|
|
||||||
if self._task.action not in ['include', 'include_tasks', 'include_role']:
|
|
||||||
raise
|
raise
|
||||||
|
|
||||||
# Not skipping, if we had loop error raised earlier we need to raise it now to halt the execution of this task
|
# Not skipping, if we had loop error raised earlier we need to raise it now to halt the execution of this task
|
||||||
|
|
|
@ -59,3 +59,7 @@ rm -f tasks/hello/*.yml
|
||||||
# Inlcuded tasks should inherit attrs from non-dynamic blocks in parent chain
|
# Inlcuded tasks should inherit attrs from non-dynamic blocks in parent chain
|
||||||
# https://github.com/ansible/ansible/pull/38827
|
# https://github.com/ansible/ansible/pull/38827
|
||||||
ANSIBLE_STRATEGY='linear' ansible-playbook test_grandparent_inheritance.yml -i ../../inventory "$@"
|
ANSIBLE_STRATEGY='linear' ansible-playbook test_grandparent_inheritance.yml -i ../../inventory "$@"
|
||||||
|
|
||||||
|
# undefined_var
|
||||||
|
ANSIBLE_STRATEGY='linear' ansible-playbook undefined_var/playbook.yml -i ../../inventory "$@"
|
||||||
|
ANSIBLE_STRATEGY='free' ansible-playbook undefined_var/playbook.yml -i ../../inventory "$@"
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
- debug:
|
||||||
|
msg: "This message comes from an 'include_tasks'-task! :-)"
|
||||||
|
register: "_include_tasks_task_result"
|
|
@ -0,0 +1,5 @@
|
||||||
|
- vars:
|
||||||
|
_undefined: 'yes'
|
||||||
|
block:
|
||||||
|
- set_fact:
|
||||||
|
_include_defined_result: 'good'
|
|
@ -0,0 +1,36 @@
|
||||||
|
---
|
||||||
|
- hosts: testhost
|
||||||
|
gather_facts: false
|
||||||
|
tasks:
|
||||||
|
- include_tasks: "include_tasks.yml"
|
||||||
|
ignore_errors: True
|
||||||
|
register: "_include_tasks_result"
|
||||||
|
when:
|
||||||
|
- "_undefined == 'yes'"
|
||||||
|
|
||||||
|
- assert:
|
||||||
|
that:
|
||||||
|
- "_include_tasks_result is failed"
|
||||||
|
- "_include_tasks_task_result is not defined"
|
||||||
|
msg: "'include_tasks' did not evaluate it's attached condition and failed"
|
||||||
|
|
||||||
|
- include_role:
|
||||||
|
name: "no_log"
|
||||||
|
ignore_errors: True
|
||||||
|
register: "_include_role_result"
|
||||||
|
when:
|
||||||
|
- "_undefined == 'yes'"
|
||||||
|
|
||||||
|
- assert:
|
||||||
|
that:
|
||||||
|
- "_include_role_result is failed"
|
||||||
|
msg: "'include_role' did not evaluate it's attached condition and failed"
|
||||||
|
|
||||||
|
- include: include_that_defines_var.yml
|
||||||
|
static: yes
|
||||||
|
when:
|
||||||
|
- "_undefined == 'yes'"
|
||||||
|
|
||||||
|
- assert:
|
||||||
|
that:
|
||||||
|
- _include_defined_result == 'good'
|
Loading…
Reference in a new issue