|
|
@ -170,12 +170,12 @@ class Runner(object):
|
|
|
|
for (k,v) in action_plugin_list.iteritems():
|
|
|
|
for (k,v) in action_plugin_list.iteritems():
|
|
|
|
self.action_plugins[k] = v.ActionModule(self)
|
|
|
|
self.action_plugins[k] = v.ActionModule(self)
|
|
|
|
for (k,v) in lookup_plugin_list.iteritems():
|
|
|
|
for (k,v) in lookup_plugin_list.iteritems():
|
|
|
|
self.lookup_plugins[k] = v.LookupModule(self)
|
|
|
|
self.lookup_plugins[k] = v.LookupModule(runner=self, basedir=self.basedir)
|
|
|
|
|
|
|
|
|
|
|
|
for (k,v) in utils.import_plugins(os.path.join(self.basedir, 'action_plugins')).iteritems():
|
|
|
|
for (k,v) in utils.import_plugins(os.path.join(self.basedir, 'action_plugins')).iteritems():
|
|
|
|
self.action_plugins[k] = v.ActionModule(self)
|
|
|
|
self.action_plugins[k] = v.ActionModule(self)
|
|
|
|
for (k,v) in utils.import_plugins(os.path.join(self.basedir, 'lookup_plugins')).iteritems():
|
|
|
|
for (k,v) in utils.import_plugins(os.path.join(self.basedir, 'lookup_plugins')).iteritems():
|
|
|
|
self.lookup_plugins[k] = v.LookupModule(self)
|
|
|
|
self.lookup_plugins[k] = v.LookupModule(runner=self, basedir=self.basedir)
|
|
|
|
|
|
|
|
|
|
|
|
# *****************************************************
|
|
|
|
# *****************************************************
|
|
|
|
|
|
|
|
|
|
|
@ -290,27 +290,25 @@ class Runner(object):
|
|
|
|
inject['groups'] = self.inventory.groups_list()
|
|
|
|
inject['groups'] = self.inventory.groups_list()
|
|
|
|
|
|
|
|
|
|
|
|
# allow with_foo to work in playbooks...
|
|
|
|
# allow with_foo to work in playbooks...
|
|
|
|
items = []
|
|
|
|
items = None
|
|
|
|
items_plugin = self.module_vars.get('items_lookup_plugin', None)
|
|
|
|
items_plugin = self.module_vars.get('items_lookup_plugin', None)
|
|
|
|
if items_plugin is not None:
|
|
|
|
if items_plugin is not None and items_plugin in self.lookup_plugins:
|
|
|
|
items_terms = self.module_vars.get('items_lookup_terms', '')
|
|
|
|
items_terms = self.module_vars.get('items_lookup_terms', '')
|
|
|
|
if items_plugin in self.lookup_plugins:
|
|
|
|
items_terms = utils.varReplaceWithItems(self.basedir, items_terms, inject)
|
|
|
|
items_terms = utils.varReplaceWithItems(self.basedir, items_terms, inject)
|
|
|
|
items = self.lookup_plugins[items_plugin].run(items_terms, inject=inject)
|
|
|
|
items = self.lookup_plugins[items_plugin].run(items_terms)
|
|
|
|
if type(items) != list:
|
|
|
|
|
|
|
|
raise errors.AnsibleError("lookup plugins have to return a list: %r" % items)
|
|
|
|
|
|
|
|
|
|
|
|
if type(items) != list:
|
|
|
|
if len(items) and self.module_name in [ 'apt', 'yum' ]:
|
|
|
|
raise errors.AnsibleError("lookup plugins have to return a list: %r" % items)
|
|
|
|
# hack for apt and soon yum, with_items maps back into a single module call
|
|
|
|
|
|
|
|
inject['item'] = ",".join(items)
|
|
|
|
if len(items) and self.module_name in [ 'apt', 'yum' ]:
|
|
|
|
items = None
|
|
|
|
# hack for apt and soon yum, with_items maps back into a single module call
|
|
|
|
|
|
|
|
inject['item'] = ",".join(items)
|
|
|
|
|
|
|
|
items = []
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# logic to decide how to run things depends on whether with_items is used
|
|
|
|
# logic to decide how to run things depends on whether with_items is used
|
|
|
|
|
|
|
|
|
|
|
|
if len(items) == 0:
|
|
|
|
if items is None:
|
|
|
|
return self._executor_internal_inner(host, self.module_name, self.module_args, inject, port)
|
|
|
|
return self._executor_internal_inner(host, self.module_name, self.module_args, inject, port)
|
|
|
|
else:
|
|
|
|
elif len(items) > 0:
|
|
|
|
# executing using with_items, so make multiple calls
|
|
|
|
# executing using with_items, so make multiple calls
|
|
|
|
# TODO: refactor
|
|
|
|
# TODO: refactor
|
|
|
|
aggregrate = {}
|
|
|
|
aggregrate = {}
|
|
|
@ -339,6 +337,9 @@ class Runner(object):
|
|
|
|
if not all_failed:
|
|
|
|
if not all_failed:
|
|
|
|
del rd_result['failed']
|
|
|
|
del rd_result['failed']
|
|
|
|
return ReturnData(host=host, comm_ok=all_comm_ok, result=rd_result)
|
|
|
|
return ReturnData(host=host, comm_ok=all_comm_ok, result=rd_result)
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
self.callbacks.on_skipped(host, None)
|
|
|
|
|
|
|
|
return ReturnData(host=host, comm_ok=True, result=dict(skipped=True))
|
|
|
|
|
|
|
|
|
|
|
|
# *****************************************************
|
|
|
|
# *****************************************************
|
|
|
|
|
|
|
|
|
|
|
|