mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-06-27 18:50:21 -07:00
Fixes a dev branch glitch where a conditional could be applied to multiple tasks. Also improves the errors on parsing bad conditionals to make them less confusing to users.
This commit is contained in:
parent
a20d5462b6
commit
9ea54fcaaf
3 changed files with 24 additions and 6 deletions
|
@ -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 '''
|
||||
|
||||
results = []
|
||||
if tasks is None:
|
||||
# support empty handler files, and the like.
|
||||
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:
|
||||
|
||||
# prevent assigning the same conditions to each task on an include
|
||||
included_additional_conditions = list(old_conditions)
|
||||
|
||||
if not isinstance(x, dict):
|
||||
raise errors.AnsibleError("expecting dict; got: %s" % x)
|
||||
|
||||
|
@ -490,9 +504,11 @@ class Play(object):
|
|||
for x in data:
|
||||
if 'include' in x:
|
||||
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:
|
||||
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:
|
||||
raise Exception("unexpected task type")
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue