Don't include dependent roles in the dep chain for include_role
The dependency chain should not include roles below the parent, as it can introduce very weird things like conditionals from child deps impacting non-related roles. Fixes #25136pull/4420/head
parent
9cc35b094f
commit
495a809f46
|
@ -294,6 +294,7 @@ def load_list_of_tasks(ds, play, block=None, role=None, task_include=None, use_h
|
||||||
# 2. one of the appropriate config options was set
|
# 2. one of the appropriate config options was set
|
||||||
if 'import_role' in task_ds:
|
if 'import_role' in task_ds:
|
||||||
is_static = True
|
is_static = True
|
||||||
|
|
||||||
if ir.static is not None:
|
if 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")
|
||||||
|
@ -315,6 +316,7 @@ def load_list_of_tasks(ds, play, block=None, role=None, task_include=None, use_h
|
||||||
(not needs_templating and ir.all_parents_static() and not ir.loop)
|
(not needs_templating and ir.all_parents_static() and not ir.loop)
|
||||||
)
|
)
|
||||||
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:
|
||||||
# uses compiled list from object
|
# uses compiled list from object
|
||||||
t = task_list.extend(ir.get_block_list(variable_manager=variable_manager, loader=loader))
|
t = task_list.extend(ir.get_block_list(variable_manager=variable_manager, loader=loader))
|
||||||
|
|
|
@ -80,7 +80,6 @@ class IncludeRole(TaskInclude):
|
||||||
dep_chain = []
|
dep_chain = []
|
||||||
else:
|
else:
|
||||||
dep_chain = list(self._parent_role._parents)
|
dep_chain = list(self._parent_role._parents)
|
||||||
dep_chain.extend(self._parent_role.get_all_dependencies())
|
|
||||||
dep_chain.append(self._parent_role)
|
dep_chain.append(self._parent_role)
|
||||||
|
|
||||||
blocks = actual_role.compile(play=myplay, dep_chain=dep_chain)
|
blocks = actual_role.compile(play=myplay, dep_chain=dep_chain)
|
||||||
|
@ -115,7 +114,7 @@ class IncludeRole(TaskInclude):
|
||||||
if option in ir.args:
|
if option in ir.args:
|
||||||
setattr(ir, option, ir.args.get(option))
|
setattr(ir, option, ir.args.get(option))
|
||||||
|
|
||||||
return ir.load_data(data, variable_manager=variable_manager, loader=loader)
|
return ir
|
||||||
|
|
||||||
def copy(self, exclude_parent=False, exclude_tasks=False):
|
def copy(self, exclude_parent=False, exclude_tasks=False):
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue