now modules can implement with_items list globbing w/o updating

hardcoded lists in ansible code, just add WITH_ITEMS_USES_LIST in a
comment anywhere, and of course, support recieving params as list.

Signed-off-by: Brian Coca <briancoca+dev@gmail.com>
pull/3227/head
Brian Coca 11 years ago
parent 0bd5fe9951
commit 4942a06bc2

@ -163,6 +163,7 @@ class Runner(object):
self.is_playbook = is_playbook
self.environment = environment
self.complex_args = complex_args
self.module_with_list = False
self.callbacks.runner = self
@ -405,8 +406,8 @@ class Runner(object):
if type(items) != list:
raise errors.AnsibleError("lookup plugins have to return a list: %r" % items)
if len(items) and utils.is_list_of_strings(items) and self.module_name in [ 'apt', 'yum', 'pkgng' ]:
# hack for apt, yum, and pkgng so that with_items maps back into a single module call
if len(items) and utils.is_list_of_strings(items) and self.module_with_list:
# with_items maps back into a single module call, making modules that support this more efficient
inject['item'] = ",".join(items)
items = None
@ -711,6 +712,9 @@ class Runner(object):
if 'WANT_JSON' in module_data:
module_style = 'non_native_want_json'
if 'WITH_ITEMS_USES_LIST' in module_data:
self.module_with_list = True
complex_args_json = utils.jsonify(complex_args)
# We force conversion of module_args to str because module_common calls shlex.split,
# a standard library function that incorrectly handles Unicode input before Python 2.7.3.

@ -1,5 +1,6 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-
# WITH_ITEMS_USES_LIST
# (c) 2012, Flowroute LLC
# Written by Matthew Williams <matthew@flowroute.com>

@ -1,5 +1,6 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-
# WITH_ITEMS_USES_LIST
# (c) 2013, bleader
# Written by bleader <bleader@ratonland.org>

@ -1,5 +1,6 @@
#!/usr/bin/python -tt
# -*- coding: utf-8 -*-
# WITH_ITEMS_USES_LIST
# (c) 2012, Red Hat, Inc
# Written by Seth Vidal <skvidal at fedoraproject.org>

Loading…
Cancel
Save