mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
Get with_items to work with new play/task architecture.
This commit is contained in:
parent
ecb944892d
commit
4664e354c3
2 changed files with 25 additions and 9 deletions
|
@ -80,13 +80,23 @@ class Play(object):
|
||||||
include_file = tokens[0]
|
include_file = tokens[0]
|
||||||
data = utils.parse_yaml_from_file(utils.path_dwim(self.playbook.basedir, include_file))
|
data = utils.parse_yaml_from_file(utils.path_dwim(self.playbook.basedir, include_file))
|
||||||
for y in data:
|
for y in data:
|
||||||
|
items = y.get('with_items',None)
|
||||||
|
if items is None:
|
||||||
|
items = [ '' ]
|
||||||
|
for item in items:
|
||||||
t = Task(self,y)
|
t = Task(self,y)
|
||||||
# TODO: rename this to just 'vars'
|
mv = self.vars.copy()
|
||||||
t.module_vars = self.vars.copy()
|
mv.update(task_vars)
|
||||||
t.module_vars.update(task_vars)
|
mv['item'] = item
|
||||||
results.append(t)
|
results.append(Task(self,y,module_vars=mv))
|
||||||
elif type(x) == dict:
|
elif type(x) == dict:
|
||||||
results.append(Task(self, x))
|
items = x.get('with_items', None)
|
||||||
|
if items is None:
|
||||||
|
items = [ '' ]
|
||||||
|
for item in items:
|
||||||
|
mv = self.vars.copy()
|
||||||
|
mv['item'] = item
|
||||||
|
results.append(Task(self,x,module_vars=mv))
|
||||||
else:
|
else:
|
||||||
raise Exception("unexpected task type")
|
raise Exception("unexpected task type")
|
||||||
return results
|
return results
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
#############################################
|
#############################################
|
||||||
|
|
||||||
from ansible import errors
|
from ansible import errors
|
||||||
|
from ansible import utils
|
||||||
|
|
||||||
class Task(object):
|
class Task(object):
|
||||||
|
|
||||||
|
@ -26,10 +27,13 @@ class Task(object):
|
||||||
'notify', 'module_name', 'module_args', 'module_vars', 'play', 'notified_by',
|
'notify', 'module_name', 'module_args', 'module_vars', 'play', 'notified_by',
|
||||||
]
|
]
|
||||||
|
|
||||||
def __init__(self, play, ds):
|
def __init__(self, play, ds, module_vars=None):
|
||||||
''' constructor loads from a task or handler datastructure '''
|
''' constructor loads from a task or handler datastructure '''
|
||||||
|
|
||||||
# TODO: more error handling
|
# TODO: more error handling
|
||||||
|
# include task specific vars
|
||||||
|
|
||||||
|
self.module_vars = module_vars
|
||||||
|
|
||||||
self.play = play
|
self.play = play
|
||||||
self.name = ds.get('name', None)
|
self.name = ds.get('name', None)
|
||||||
|
@ -55,8 +59,10 @@ class Task(object):
|
||||||
if len(tokens) > 1:
|
if len(tokens) > 1:
|
||||||
self.module_args = tokens[1]
|
self.module_args = tokens[1]
|
||||||
|
|
||||||
# include task specific vars
|
|
||||||
self.module_vars = ds.get('vars', {})
|
self.name = utils.template(self.name, self.module_vars)
|
||||||
|
self.action = utils.template(self.name, self.module_vars)
|
||||||
|
|
||||||
|
|
||||||
if 'first_available_file' in ds:
|
if 'first_available_file' in ds:
|
||||||
self.module_vars['first_available_file'] = ds.get('first_available_file')
|
self.module_vars['first_available_file'] = ds.get('first_available_file')
|
||||||
|
|
Loading…
Reference in a new issue