From 19703617b8be22fc17d7a74e2959ed38ace4cfb4 Mon Sep 17 00:00:00 2001 From: James Cammarata Date: Thu, 25 Sep 2014 11:06:01 -0500 Subject: [PATCH] Fix action_plugins for modules not respecting check mode Fixes #9140 --- lib/ansible/runner/action_plugins/assemble.py | 5 +++++ lib/ansible/runner/action_plugins/unarchive.py | 11 ++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/lib/ansible/runner/action_plugins/assemble.py b/lib/ansible/runner/action_plugins/assemble.py index 54b5d1985cd..c6f7165d822 100644 --- a/lib/ansible/runner/action_plugins/assemble.py +++ b/lib/ansible/runner/action_plugins/assemble.py @@ -147,6 +147,11 @@ class ActionModule(object): dest=dest, original_basename=os.path.basename(src), ) + + # make sure checkmod is passed on correctly + if self.runner.noop_on_check(inject): + new_module_args['CHECKMODE'] = True + module_args_tmp = utils.merge_module_args(module_args, new_module_args) return self.runner._execute_module(conn, tmp, 'file', module_args_tmp, inject=inject) diff --git a/lib/ansible/runner/action_plugins/unarchive.py b/lib/ansible/runner/action_plugins/unarchive.py index 40bc5d9149a..a569403cac3 100644 --- a/lib/ansible/runner/action_plugins/unarchive.py +++ b/lib/ansible/runner/action_plugins/unarchive.py @@ -77,13 +77,22 @@ class ActionModule(object): # fix file permissions when the copy is done as a different user if copy: if self.runner.sudo and self.runner.sudo_user != 'root' or self.runner.su and self.runner.su_user != 'root': - self.runner._remote_chmod(conn, 'a+r', tmp_src, tmp) + if not self.runner.noop_on_check(inject): + self.runner._remote_chmod(conn, 'a+r', tmp_src, tmp) # Build temporary module_args. new_module_args = dict( src=tmp_src, original_basename=os.path.basename(source), ) + + # make sure checkmod is passed on correctly + if self.runner.noop_on_check(inject): + new_module_args['CHECKMODE'] = True + module_args = utils.merge_module_args(module_args, new_module_args) else: module_args = "%s original_basename=%s" % (module_args, pipes.quote(os.path.basename(source))) + # make sure checkmod is passed on correctly + if self.runner.noop_on_check(inject): + module_args += " CHECKMODE=True" return self.runner._execute_module(conn, tmp, 'unarchive', module_args, inject=inject, complex_args=complex_args)