Fixing two bugs with import_role (#30398)
1) import_role was never resulting in a static inclusion of the role
tasks due to a logic error.
2) no error was raised when import_role tried to use a with loop, resulting
in a strange error down the execution path.
(cherry picked from commit cd2774af78
)
This commit is contained in:
parent
47faa46eaf
commit
8d5afd1891
1 changed files with 7 additions and 1 deletions
|
@ -297,7 +297,7 @@ def load_list_of_tasks(ds, play, block=None, role=None, task_include=None, use_h
|
||||||
if 'import_role' in task_ds:
|
if 'import_role' in task_ds:
|
||||||
is_static = True
|
is_static = True
|
||||||
|
|
||||||
if ir.static is not None:
|
elif ir.static is not None:
|
||||||
display.deprecated("The use of 'static' for 'include_role' has been deprecated. "
|
display.deprecated("The use of 'static' for 'include_role' has been deprecated. "
|
||||||
"Use 'import_role' for static inclusion, or 'include_role' for dynamic inclusion")
|
"Use 'import_role' for static inclusion, or 'include_role' for dynamic inclusion")
|
||||||
is_static = ir.static
|
is_static = ir.static
|
||||||
|
@ -320,6 +320,12 @@ def load_list_of_tasks(ds, play, block=None, role=None, task_include=None, use_h
|
||||||
display.debug('Determined that if include_role static is %s' % str(is_static))
|
display.debug('Determined that if include_role static is %s' % str(is_static))
|
||||||
|
|
||||||
if is_static:
|
if is_static:
|
||||||
|
if ir.loop is not None:
|
||||||
|
if 'import_tasks' in task_ds:
|
||||||
|
raise AnsibleParserError("You cannot use loops on 'import_role' statements. You should use 'include_role' instead.", obj=task_ds)
|
||||||
|
else:
|
||||||
|
raise AnsibleParserError("You cannot use 'static' on an include_role with a loop", obj=task_ds)
|
||||||
|
|
||||||
# we set a flag to indicate this include was static
|
# we set a flag to indicate this include was static
|
||||||
ir.statically_loaded = True
|
ir.statically_loaded = True
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue