diff --git a/changelogs/fragments/80-update_docker_connection_plugin.yml b/changelogs/fragments/80-update_docker_connection_plugin.yml new file mode 100644 index 0000000000..dfc2b7116c --- /dev/null +++ b/changelogs/fragments/80-update_docker_connection_plugin.yml @@ -0,0 +1,2 @@ +bugfixes: + - docker connection plugin - do not prefix remote path if running on Windows containers. diff --git a/plugins/connection/docker.py b/plugins/connection/docker.py index a2daf4e191..b8b5c459e5 100644 --- a/plugins/connection/docker.py +++ b/plugins/connection/docker.py @@ -274,9 +274,13 @@ class Connection(ConnectionBase): Can revisit using $HOME instead if it's a problem ''' - if not remote_path.startswith(os.path.sep): - remote_path = os.path.join(os.path.sep, remote_path) - return os.path.normpath(remote_path) + if getattr(self._shell, "_IS_WINDOWS", False): + import ntpath + return ntpath.normpath(remote_path) + else: + if not remote_path.startswith(os.path.sep): + remote_path = os.path.join(os.path.sep, remote_path) + return os.path.normpath(remote_path) def put_file(self, in_path, out_path): """ Transfer a file from local to docker container """ @@ -328,7 +332,11 @@ class Connection(ConnectionBase): stdout=subprocess.PIPE, stderr=subprocess.PIPE) p.communicate() - actual_out_path = os.path.join(out_dir, os.path.basename(in_path)) + if getattr(self._shell, "_IS_WINDOWS", False): + import ntpath + actual_out_path = ntpath.join(out_dir, ntpath.basename(in_path)) + else: + actual_out_path = os.path.join(out_dir, os.path.basename(in_path)) if p.returncode != 0: # Older docker doesn't have native support for fetching files command `cp`