Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Inform synchronize module about community.docker collection #144

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
---
bugfixes:
- synchronize - add ``community.docker.docker`` to the list of supported
transports (https://github.com/ansible-collections/ansible.posix/issues/132).
14 changes: 8 additions & 6 deletions plugins/action/synchronize.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ def _format_rsync_rsh_target(self, host, path, user):
return path

# If using docker or buildah, do not add user information
if self._remote_transport not in ['docker', 'community.general.docker', 'buildah', 'containers.podman.buildah'] and user:
Akasurde marked this conversation as resolved.
Show resolved Hide resolved
if self._remote_transport not in ['docker', 'community.general.docker', 'community.docker.docker', 'buildah', 'containers.podman.buildah'] and user:
user_prefix = '%s@' % (user, )

if self._host_is_ipv6_address(host):
Expand Down Expand Up @@ -170,7 +170,7 @@ def run(self, tmp=None, task_vars=None):
self._remote_transport = self._connection.transport

# Handle docker connection options
if self._remote_transport in ['docker', 'community.general.docker']:
if self._remote_transport in ['docker', 'community.general.docker', 'community.docker.docker']:
self._docker_cmd = self._connection.docker_cmd
if self._play_context.docker_extra_args:
self._docker_cmd = "%s %s" % (self._docker_cmd, self._play_context.docker_extra_args)
Expand All @@ -192,7 +192,7 @@ def run(self, tmp=None, task_vars=None):
# ssh paramiko docker buildah and local are fully supported transports. Anything
# else only works with delegate_to
if delegate_to is None and self._connection.transport not in \
('ssh', 'paramiko', 'local', 'docker', 'community.general.docker', 'buildah', 'containers.podman.buildah'):
('ssh', 'paramiko', 'local', 'docker', 'community.general.docker', 'community.docker.docker', 'buildah', 'containers.podman.buildah'):
result['failed'] = True
result['msg'] = (
"synchronize uses rsync to function. rsync needs to connect to the remote "
Expand Down Expand Up @@ -365,7 +365,7 @@ def run(self, tmp=None, task_vars=None):
if not dest_is_local:
# don't escalate for docker. doing --rsync-path with docker exec fails
# and we can switch directly to the user via docker arguments
if self._play_context.become and not rsync_path and self._remote_transport not in ['docker', 'community.general.docker']:
if self._play_context.become and not rsync_path and self._remote_transport not in ['docker', 'community.general.docker', 'community.docker.docker']:
# If no rsync_path is set, become was originally set, and dest is
# remote then add privilege escalation here.
if self._play_context.become_method == 'sudo':
Expand All @@ -389,7 +389,9 @@ def run(self, tmp=None, task_vars=None):

# If launching synchronize against docker container
# use rsync_opts to support container to override rsh options
if self._remote_transport in ['docker', 'community.general.docker', 'buildah', 'containers.podman.buildah'] and not use_delegate:
if self._remote_transport in [
'docker', 'community.general.docker', 'community.docker.docker', 'buildah', 'containers.podman.buildah'
] and not use_delegate:
# Replicate what we do in the module argumentspec handling for lists
if not isinstance(_tmp_args.get('rsync_opts'), MutableSequence):
tmp_rsync_opts = _tmp_args.get('rsync_opts', [])
Expand All @@ -402,7 +404,7 @@ def run(self, tmp=None, task_vars=None):
if '--blocking-io' not in _tmp_args['rsync_opts']:
_tmp_args['rsync_opts'].append('--blocking-io')

if self._remote_transport in ['docker', 'community.general.docker']:
if self._remote_transport in ['docker', 'community.general.docker', 'community.docker.docker']:
if become and self._play_context.become_user:
_tmp_args['rsync_opts'].append("--rsh=%s exec -u %s -i" % (self._docker_cmd, self._play_context.become_user))
elif user is not None:
Expand Down