Merge pull request #144 from xlab-steampunk/teach-synchronize-about-community-docker

Inform synchronize module about community.docker collection

Reviewed-by: https://github.com/apps/ansible-zuul
This commit is contained in:
ansible-zuul[bot] 2021-03-05 17:49:45 +00:00 committed by GitHub
commit 1747370f30
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 6 deletions

View file

@ -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).

View file

@ -60,7 +60,7 @@ class ActionModule(ActionBase):
return path return path
# If using docker or buildah, do not add user information # 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: if self._remote_transport not in ['docker', 'community.general.docker', 'community.docker.docker', 'buildah', 'containers.podman.buildah'] and user:
user_prefix = '%s@' % (user, ) user_prefix = '%s@' % (user, )
if self._host_is_ipv6_address(host): if self._host_is_ipv6_address(host):
@ -170,7 +170,7 @@ class ActionModule(ActionBase):
self._remote_transport = self._connection.transport self._remote_transport = self._connection.transport
# Handle docker connection options # 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 self._docker_cmd = self._connection.docker_cmd
if self._play_context.docker_extra_args: if self._play_context.docker_extra_args:
self._docker_cmd = "%s %s" % (self._docker_cmd, self._play_context.docker_extra_args) self._docker_cmd = "%s %s" % (self._docker_cmd, self._play_context.docker_extra_args)
@ -192,7 +192,7 @@ class ActionModule(ActionBase):
# ssh paramiko docker buildah and local are fully supported transports. Anything # ssh paramiko docker buildah and local are fully supported transports. Anything
# else only works with delegate_to # else only works with delegate_to
if delegate_to is None and self._connection.transport not in \ 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['failed'] = True
result['msg'] = ( result['msg'] = (
"synchronize uses rsync to function. rsync needs to connect to the remote " "synchronize uses rsync to function. rsync needs to connect to the remote "
@ -365,7 +365,7 @@ class ActionModule(ActionBase):
if not dest_is_local: if not dest_is_local:
# don't escalate for docker. doing --rsync-path with docker exec fails # don't escalate for docker. doing --rsync-path with docker exec fails
# and we can switch directly to the user via docker arguments # 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 # If no rsync_path is set, become was originally set, and dest is
# remote then add privilege escalation here. # remote then add privilege escalation here.
if self._play_context.become_method == 'sudo': if self._play_context.become_method == 'sudo':
@ -389,7 +389,9 @@ class ActionModule(ActionBase):
# If launching synchronize against docker container # If launching synchronize against docker container
# use rsync_opts to support container to override rsh options # 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 # Replicate what we do in the module argumentspec handling for lists
if not isinstance(_tmp_args.get('rsync_opts'), MutableSequence): if not isinstance(_tmp_args.get('rsync_opts'), MutableSequence):
tmp_rsync_opts = _tmp_args.get('rsync_opts', []) tmp_rsync_opts = _tmp_args.get('rsync_opts', [])
@ -402,7 +404,7 @@ class ActionModule(ActionBase):
if '--blocking-io' not in _tmp_args['rsync_opts']: if '--blocking-io' not in _tmp_args['rsync_opts']:
_tmp_args['rsync_opts'].append('--blocking-io') _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: 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)) _tmp_args['rsync_opts'].append("--rsh=%s exec -u %s -i" % (self._docker_cmd, self._play_context.become_user))
elif user is not None: elif user is not None: