diff options
author | James Cammarata <jimi@sngx.net> | 2017-06-21 15:28:36 +0100 |
---|---|---|
committer | James Cammarata <jimi@sngx.net> | 2017-06-21 15:28:36 +0100 |
commit | 020317b21bf54f49db56b95893be5e63a17ea4f8 (patch) | |
tree | c1acb6b1cdf6d7740ab3a7fb1230c4c0ed93a2f6 | |
parent | 830ad2351f049d94050b17c14f9bd86963e33fe1 (diff) | |
download | ansible-issue_25136_include_role_problems.tar.gz |
Don't include dependent roles in the dep chain for include_roleissue_25136_include_role_problems
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
-rw-r--r-- | lib/ansible/playbook/helpers.py | 2 | ||||
-rw-r--r-- | lib/ansible/playbook/role_include.py | 3 |
2 files changed, 3 insertions, 2 deletions
diff --git a/lib/ansible/playbook/helpers.py b/lib/ansible/playbook/helpers.py index ab1dc05f3f..abfa4088d4 100644 --- a/lib/ansible/playbook/helpers.py +++ b/lib/ansible/playbook/helpers.py @@ -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 if 'import_role' in task_ds: is_static = True + if ir.static is not None: display.deprecated("The use of 'static' for 'include_role' has been deprecated. " "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) ) 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)) diff --git a/lib/ansible/playbook/role_include.py b/lib/ansible/playbook/role_include.py index ccb2b1cf9f..bfa6950402 100644 --- a/lib/ansible/playbook/role_include.py +++ b/lib/ansible/playbook/role_include.py @@ -80,7 +80,6 @@ class IncludeRole(TaskInclude): 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) @@ -115,7 +114,7 @@ class IncludeRole(TaskInclude): 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): |