Commit ce88df3c by Paul Sokolovsky

copy: Handle dest path variations for recursive mode.

parent 6cf3975e
...@@ -113,6 +113,10 @@ class ActionModule(object): ...@@ -113,6 +113,10 @@ class ActionModule(object):
full_path = os.path.join(base_path, file) full_path = os.path.join(base_path, file)
rel_path = full_path[sz:] rel_path = full_path[sz:]
source_files.append((full_path, rel_path)) source_files.append((full_path, rel_path))
# If it's recursive copy, destination is always a dir,
# explictly mark it so (note - copy module relies on this).
if not dest.endswith("/"):
dest += "/"
else: else:
source_files.append((source, os.path.basename(source))) source_files.append((source, os.path.basename(source)))
...@@ -192,7 +196,11 @@ class ActionModule(object): ...@@ -192,7 +196,11 @@ class ActionModule(object):
# don't send down raw=no # don't send down raw=no
module_args.pop('raw') module_args.pop('raw')
module_args_tmp = "%s src=%s original_basename=%s" % (module_args, pipes.quote(tmp_src), pipes.quote(source_rel)) # src and dest here come after original and override them
# we pass dest only to make sure it includes trailing slash
# in case of recursive copy
module_args_tmp = "%s src=%s dest=%s original_basename=%s" % (module_args,
pipes.quote(tmp_src), pipes.quote(dest), pipes.quote(source_rel))
module_return = self.runner._execute_module(conn, tmp, 'copy', module_args_tmp, inject=inject, complex_args=complex_args) module_return = self.runner._execute_module(conn, tmp, 'copy', module_args_tmp, inject=inject, complex_args=complex_args)
else: else:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment