Skip to content

Commit

Permalink
Don't include dependent roles in the dep chain for include_role
Browse files Browse the repository at this point in the history
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 #25136

(cherry picked from commit 020317b)
  • Loading branch information
jimi-c committed Jun 22, 2017
1 parent 5512c94 commit eeaa676
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 2 deletions.
1 change: 1 addition & 0 deletions lib/ansible/playbook/helpers.py
Expand Up @@ -296,6 +296,7 @@ def load_list_of_tasks(ds, play, block=None, role=None, task_include=None, use_h
(use_handlers and C.DEFAULT_HANDLER_INCLUDES_STATIC) or \
(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))

if is_static:
# uses compiled list from object
t = task_list.extend(ir.get_block_list(variable_manager=variable_manager, loader=loader))
Expand Down
3 changes: 1 addition & 2 deletions lib/ansible/playbook/role_include.py
Expand Up @@ -82,7 +82,6 @@ def get_block_list(self, play=None, variable_manager=None, loader=None):
dep_chain = []
else:
dep_chain = list(self._parent_role._parents)
dep_chain.extend(self._parent_role.get_all_dependencies())
dep_chain.append(self._parent_role)

blocks = actual_role.compile(play=myplay, dep_chain=dep_chain)
Expand Down Expand Up @@ -117,7 +116,7 @@ def load(data, block=None, role=None, task_include=None, variable_manager=None,
if option in ir.args:
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):

Expand Down

0 comments on commit eeaa676

Please sign in to comment.