mirror of
https://github.com/ansible-collections/ansible.posix.git
synced 2026-01-12 07:35:31 +01:00
Synchronize plugin: Do not turn an SSH path into an absolute path
SSH paths of the form user@host:/remote/path can be used as either src or dest with rsync. As the synchronize module already uses the presence of ':' to detect a source/destination over SSH, this commit updates the action plugin accordingly. Without this commit, the path is turned into /local/path/user@host:/remote/path, which is not a valid syntax for rsync.
This commit is contained in:
parent
74c8ca58e2
commit
ebb4d94da8
1 changed files with 5 additions and 9 deletions
|
|
@ -33,7 +33,7 @@ class ActionModule(ActionBase):
|
||||||
def _get_absolute_path(self, path):
|
def _get_absolute_path(self, path):
|
||||||
original_path = path
|
original_path = path
|
||||||
|
|
||||||
if path.startswith('rsync://'):
|
if path.startswith('rsync://') or path.startswith('/') or ':' in path:
|
||||||
return path
|
return path
|
||||||
|
|
||||||
if self._task._role is not None:
|
if self._task._role is not None:
|
||||||
|
|
@ -73,8 +73,7 @@ class ActionModule(ActionBase):
|
||||||
if host not in C.LOCALHOST:
|
if host not in C.LOCALHOST:
|
||||||
return self._format_rsync_rsh_target(host, path, user)
|
return self._format_rsync_rsh_target(host, path, user)
|
||||||
|
|
||||||
if ':' not in path and not path.startswith('/'):
|
path = self._get_absolute_path(path=path)
|
||||||
path = self._get_absolute_path(path=path)
|
|
||||||
return path
|
return path
|
||||||
|
|
||||||
def _process_remote(self, task_args, host, path, user, port_matches_localhost_port):
|
def _process_remote(self, task_args, host, path, user, port_matches_localhost_port):
|
||||||
|
|
@ -103,8 +102,7 @@ class ActionModule(ActionBase):
|
||||||
task_args['_substitute_controller'] = True
|
task_args['_substitute_controller'] = True
|
||||||
return self._format_rsync_rsh_target(host, path, user)
|
return self._format_rsync_rsh_target(host, path, user)
|
||||||
|
|
||||||
if ':' not in path and not path.startswith('/'):
|
path = self._get_absolute_path(path=path)
|
||||||
path = self._get_absolute_path(path=path)
|
|
||||||
return path
|
return path
|
||||||
|
|
||||||
def _override_module_replaced_vars(self, task_vars):
|
def _override_module_replaced_vars(self, task_vars):
|
||||||
|
|
@ -350,10 +348,8 @@ class ActionModule(ActionBase):
|
||||||
else:
|
else:
|
||||||
# Still need to munge paths (to account for roles) even if we aren't
|
# Still need to munge paths (to account for roles) even if we aren't
|
||||||
# copying files between hosts
|
# copying files between hosts
|
||||||
if not src.startswith('/'):
|
src = self._get_absolute_path(path=src)
|
||||||
src = self._get_absolute_path(path=src)
|
dest = self._get_absolute_path(path=dest)
|
||||||
if not dest.startswith('/'):
|
|
||||||
dest = self._get_absolute_path(path=dest)
|
|
||||||
|
|
||||||
_tmp_args['src'] = src
|
_tmp_args['src'] = src
|
||||||
_tmp_args['dest'] = dest
|
_tmp_args['dest'] = dest
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue