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,9 +471,7 @@ class TaskExecutor:
|
|||
# loop error takes precedence
|
||||
if self._loop_eval_error is not None:
|
||||
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
|
||||
if self._loop_eval_error is not None:
|
||||
|
|
|
@ -59,3 +59,7 @@ rm -f tasks/hello/*.yml
|
|||
# Inlcuded tasks should inherit attrs from non-dynamic blocks in parent chain
|
||||
# https://github.com/ansible/ansible/pull/38827
|
||||
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