summaryrefslogtreecommitdiff
path: root/lib/ansible/playbook/included_file.py
diff options
context:
space:
mode:
authorJames Cammarata <jimi@sngx.net>2016-08-01 14:10:02 -0500
committerJames Cammarata <jimi@sngx.net>2016-08-08 15:58:46 -0500
commit06d4f4ad0e8f62c6b02b01833b94a0e44be008d0 (patch)
tree07113056312a231afd52c72ea47d983a801c9f59 /lib/ansible/playbook/included_file.py
parentd2b3b2c03e2934b126f5701e5f6e25821e2dbe35 (diff)
downloadansible-06d4f4ad0e8f62c6b02b01833b94a0e44be008d0.tar.gz
Move tasks/blocks to a single parent model
Diffstat (limited to 'lib/ansible/playbook/included_file.py')
-rw-r--r--lib/ansible/playbook/included_file.py17
1 files changed, 11 insertions, 6 deletions
diff --git a/lib/ansible/playbook/included_file.py b/lib/ansible/playbook/included_file.py
index b6992d2738..8303537d82 100644
--- a/lib/ansible/playbook/included_file.py
+++ b/lib/ansible/playbook/included_file.py
@@ -22,6 +22,7 @@ __metaclass__ = type
import os
from ansible.errors import AnsibleError
+from ansible.playbook.task_include import TaskInclude
from ansible.template import Templar
try:
@@ -86,16 +87,20 @@ class IncludedFile:
if loop_var in include_result:
task_vars[loop_var] = include_variables[loop_var] = include_result[loop_var]
+ include_file = None
if original_task:
if original_task.static:
continue
- if original_task._task_include:
+ if original_task._parent:
# handle relative includes by walking up the list of parent include
# tasks and checking the relative result to see if it exists
- parent_include = original_task._task_include
+ parent_include = original_task._parent
cumulative_path = None
while parent_include is not None:
+ if not isinstance(parent_include, TaskInclude):
+ parent_include = parent_include._parent
+ continue
parent_include_dir = templar.template(os.path.dirname(parent_include.args.get('_raw_params')))
if cumulative_path is None:
cumulative_path = parent_include_dir
@@ -111,14 +116,14 @@ class IncludedFile:
if os.path.exists(include_file):
break
else:
- parent_include = parent_include._task_include
- elif original_task._role:
+ parent_include = parent_include._parent
+
+ if include_file is None:
+ if original_task._role:
include_target = templar.template(include_result['include'])
include_file = loader.path_dwim_relative(original_task._role._role_path, 'tasks', include_target)
else:
include_file = loader.path_dwim(include_result['include'])
- else:
- include_file = loader.path_dwim(include_result['include'])
include_file = templar.template(include_file)
inc_file = IncludedFile(include_file, include_variables, original_task)