@ -401,15 +401,29 @@ class Play(object):
# *************************************************
# *************************************************
def _load_tasks ( self , tasks , vars = { } , default_vars = { } , sudo_vars = { } , additional_conditions = [ ] , original_file = None , role_name = None ) :
def _load_tasks ( self , tasks , vars = None , default_vars = None , sudo_vars = None , additional_conditions = None , original_file = None , role_name = None ) :
''' handle task and handler include statements '''
''' handle task and handler include statements '''
results = [ ]
results = [ ]
if tasks is None :
if tasks is None :
# support empty handler files, and the like.
# support empty handler files, and the like.
tasks = [ ]
tasks = [ ]
if additional_conditions is None :
additional_conditions = [ ]
if vars is None :
vars = { }
if default_vars is None :
default_vars = { }
if sudo_vars is None :
sudo_vars = { }
old_conditions = list ( additional_conditions )
for x in tasks :
for x in tasks :
# prevent assigning the same conditions to each task on an include
included_additional_conditions = list ( old_conditions )
if not isinstance ( x , dict ) :
if not isinstance ( x , dict ) :
raise errors . AnsibleError ( " expecting dict; got: %s " % x )
raise errors . AnsibleError ( " expecting dict; got: %s " % x )
@ -490,9 +504,11 @@ class Play(object):
for x in data :
for x in data :
if ' include ' in x :
if ' include ' in x :
x [ ' role_name ' ] = new_role
x [ ' role_name ' ] = new_role
results + = self . _load_tasks ( data , mv , default_vars , included_sudo_vars , included_additional_conditions , original_file = include_filename , role_name = new_role )
loaded = self . _load_tasks ( data , mv , default_vars , included_sudo_vars , list ( included_additional_conditions ) , original_file = include_filename , role_name = new_role )
results + = loaded
elif type ( x ) == dict :
elif type ( x ) == dict :
results . append ( Task ( self , x , module_vars = task_vars , default_vars = default_vars , additional_conditions = additional_conditions , role_name = role_name ) )
task = Task ( self , x , module_vars = task_vars , default_vars = default_vars , additional_conditions = list ( additional_conditions ) , role_name = role_name )
results . append ( task )
else :
else :
raise Exception ( " unexpected task type " )
raise Exception ( " unexpected task type " )