Ensure complex_args is considered in all action_plugins

pull/2232/head
Daniel Hokka Zakrisson 12 years ago
parent 297259725a
commit ae8d6ac303

@ -379,7 +379,8 @@ class AnsibleModule(object):
return changed return changed
try: try:
# FIXME: support English modes # FIXME: support English modes
mode = int(mode, 8) if not isinstance(mode, int):
mode = int(mode, 8)
except Exception, e: except Exception, e:
self.fail_json(path=path, msg='mode needs to be something octalish', details=str(e)) self.fail_json(path=path, msg='mode needs to be something octalish', details=str(e))

@ -39,7 +39,10 @@ class ActionModule(object):
if self.runner.check: if self.runner.check:
return ReturnData(conn=conn, comm_ok=True, result=dict(skipped=True, msg='check mode not supported for this module')) return ReturnData(conn=conn, comm_ok=True, result=dict(skipped=True, msg='check mode not supported for this module'))
args = parse_kv(module_args) args = {}
if complex_args:
args.update(complex_args)
args.update(parse_kv(module_args))
if not 'hostname' in args and not 'name' in args: if not 'hostname' in args and not 'name' in args:
raise ae("'name' is a required argument.") raise ae("'name' is a required argument.")

@ -33,7 +33,7 @@ class ActionModule(object):
module_name = 'command' module_name = 'command'
module_args += " #USE_SHELL" module_args += " #USE_SHELL"
(module_path, is_new_style, shebang) = self.runner._copy_module(conn, tmp, module_name, module_args, inject) (module_path, is_new_style, shebang) = self.runner._copy_module(conn, tmp, module_name, module_args, inject, complex_args=complex_args)
self.runner._low_level_exec_command(conn, "chmod a+rx %s" % module_path, tmp) self.runner._low_level_exec_command(conn, "chmod a+rx %s" % module_path, tmp)
return self.runner._execute_module(conn, tmp, 'async_wrapper', module_args, return self.runner._execute_module(conn, tmp, 'async_wrapper', module_args,

@ -32,7 +32,10 @@ class ActionModule(object):
''' handler for file transfer operations ''' ''' handler for file transfer operations '''
# load up options # load up options
options = utils.parse_kv(module_args) options = {}
if complex_args:
options.update(complex_args)
options.update(utils.parse_kv(module_args))
source = options.get('src', None) source = options.get('src', None)
dest = options.get('dest', None) dest = options.get('dest', None)
@ -93,7 +96,7 @@ class ActionModule(object):
# run the copy module # run the copy module
module_args = "%s src=%s" % (module_args, tmp_src) module_args = "%s src=%s" % (module_args, tmp_src)
return self.runner._execute_module(conn, tmp, 'copy', module_args, inject=inject) return self.runner._execute_module(conn, tmp, 'copy', module_args, inject=inject, complex_args=complex_args)
else: else:
# no need to transfer the file, already correct md5, but still need to call # no need to transfer the file, already correct md5, but still need to call
@ -103,7 +106,7 @@ class ActionModule(object):
module_args = "%s src=%s" % (module_args, tmp_src) module_args = "%s src=%s" % (module_args, tmp_src)
if self.runner.check: if self.runner.check:
module_args = "%s CHECKMODE=True" % module_args module_args = "%s CHECKMODE=True" % module_args
return self.runner._execute_module(conn, tmp, 'file', module_args, inject=inject) return self.runner._execute_module(conn, tmp, 'file', module_args, inject=inject, complex_args=complex_args)
def _get_diff_data(self, conn, tmp, inject, destination, source): def _get_diff_data(self, conn, tmp, inject, destination, source):
peek_result = self.runner._execute_module(conn, tmp, 'file', "path=%s diff_peek=1" % destination, inject=inject, persist_files=True) peek_result = self.runner._execute_module(conn, tmp, 'file', "path=%s diff_peek=1" % destination, inject=inject, persist_files=True)

@ -29,7 +29,10 @@ class ActionModule(object):
self.runner = runner self.runner = runner
def run(self, conn, tmp, module_name, module_args, inject, complex_args=None, **kwargs): def run(self, conn, tmp, module_name, module_args, inject, complex_args=None, **kwargs):
args = utils.parse_kv(module_args) args = {}
if complex_args:
args.update(complex_args)
args.update(utils.parse_kv(module_args))
if not 'msg' in args: if not 'msg' in args:
args['msg'] = 'Hello world!' args['msg'] = 'Hello world!'

@ -33,7 +33,10 @@ class ActionModule(object):
# note: the fail module does not need to pay attention to check mode # note: the fail module does not need to pay attention to check mode
# it always runs. # it always runs.
args = utils.parse_kv(module_args) args = {}
if complex_args:
args.update(complex_args)
args.update(utils.parse_kv(module_args))
if not 'msg' in args: if not 'msg' in args:
args['msg'] = 'Failed as requested from task' args['msg'] = 'Failed as requested from task'

@ -40,7 +40,10 @@ class ActionModule(object):
return ReturnData(conn=conn, comm_ok=True, result=dict(skipped=True, msg='check mode not (yet) supported for this module')) return ReturnData(conn=conn, comm_ok=True, result=dict(skipped=True, msg='check mode not (yet) supported for this module'))
# load up options # load up options
options = utils.parse_kv(module_args) options = {}
if complex_args:
options.update(complex_args)
options.update(utils.parse_kv(module_args))
source = options.get('src', None) source = options.get('src', None)
dest = options.get('dest', None) dest = options.get('dest', None)
if source is None or dest is None: if source is None or dest is None:

@ -37,7 +37,10 @@ class ActionModule(object):
# the group_by module does not need to pay attention to check mode. # the group_by module does not need to pay attention to check mode.
# it always runs. # it always runs.
args = parse_kv(self.runner.module_args) args = {}
if complex_args:
args.update(complex_args)
args.update(utils.parse_kv(module_args))
if not 'key' in args: if not 'key' in args:
raise ae("'key' is a required argument.") raise ae("'key' is a required argument.")

@ -53,7 +53,10 @@ class ActionModule(object):
# flag, it always runs # flag, it always runs
hosts = ', '.join(self.runner.host_set) hosts = ', '.join(self.runner.host_set)
args = parse_kv(template(self.runner.basedir, module_args, inject)) args = {}
if complex_args:
args.update(complex_args)
args.update(parse_kv(template(self.runner.basedir, module_args, inject)))
# Are 'minutes' or 'seconds' keys that exist in 'args'? # Are 'minutes' or 'seconds' keys that exist in 'args'?
if 'minutes' in args or 'seconds' in args: if 'minutes' in args or 'seconds' in args:

@ -37,7 +37,10 @@ class ActionModule(object):
raise errors.AnsibleError("in current versions of ansible, templates are only usable in playbooks") raise errors.AnsibleError("in current versions of ansible, templates are only usable in playbooks")
# load up options # load up options
options = utils.parse_kv(module_args) options = {}
if complex_args:
options.update(complex_args)
options.update(utils.parse_kv(module_args))
source = options.get('src', None) source = options.get('src', None)
dest = options.get('dest', None) dest = options.get('dest', None)
@ -106,9 +109,9 @@ class ActionModule(object):
if self.runner.check: if self.runner.check:
return ReturnData(conn=conn, comm_ok=True, result=dict(changed=True), diff=dict(before_header=dest, after_header=source, before=dest_contents, after=resultant)) return ReturnData(conn=conn, comm_ok=True, result=dict(changed=True), diff=dict(before_header=dest, after_header=source, before=dest_contents, after=resultant))
else: else:
res = self.runner._execute_module(conn, tmp, 'copy', module_args, inject=inject) res = self.runner._execute_module(conn, tmp, 'copy', module_args, inject=inject, complex_args=complex_args)
res.diff = dict(before=dest_contents, after=resultant) res.diff = dict(before=dest_contents, after=resultant)
return res return res
else: else:
return self.runner._execute_module(conn, tmp, 'file', module_args, inject=inject) return self.runner._execute_module(conn, tmp, 'file', module_args, inject=inject, complex_args=complex_args)

Loading…
Cancel
Save