From 1be63dd93e0593bb245c88d23ae0b0ec0568e229 Mon Sep 17 00:00:00 2001 From: "Mr. Outis" Date: Sat, 24 Aug 2019 00:16:37 -0500 Subject: [PATCH] ssh: implement interface for fs related operations --- dvc/remote/ssh/__init__.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/dvc/remote/ssh/__init__.py b/dvc/remote/ssh/__init__.py index 6562b19af..e03154fd3 100644 --- a/dvc/remote/ssh/__init__.py +++ b/dvc/remote/ssh/__init__.py @@ -176,6 +176,18 @@ class RemoteSSH(RemoteBASE): with self.ssh(path_info) as ssh: return ssh.isdir(path_info.path) + def isfile(self, path_info): + with self.ssh(path_info) as ssh: + return ssh.isfile(path_info.path) + + def getsize(self, path_info): + with self.ssh(path_info) as ssh: + return ssh.getsize(path_info.path) + + def open(self, path_info, mode="r", encoding=None): + with self.ssh(path_info) as ssh: + return ssh.open(path_info.path, mode=mode, encoding=encoding) + def copy(self, from_info, to_info): if from_info.scheme != self.scheme or to_info.scheme != self.scheme: raise NotImplementedError @@ -183,6 +195,27 @@ class RemoteSSH(RemoteBASE): with self.ssh(from_info) as ssh: ssh.cp(from_info.path, to_info.path) + def symlink(self, from_info, to_info): + if from_info.scheme != self.scheme or to_info.scheme != self.scheme: + raise NotImplementedError + + with self.ssh(from_info) as ssh: + ssh.symlink(from_info.path, to_info.path) + + def hardlink(self, from_info, to_info): + if from_info.scheme != self.scheme or to_info.scheme != self.scheme: + raise NotImplementedError + + with self.ssh(from_info) as ssh: + ssh.hardlink(from_info.path, to_info.path) + + def reflink(self, from_info, to_info): + if from_info.scheme != self.scheme or to_info.scheme != self.scheme: + raise NotImplementedError + + with self.ssh(from_info) as ssh: + ssh.reflink(from_info.path, to_info.path) + def remove(self, path_info): if path_info.scheme != self.scheme: raise NotImplementedError