salvus.flow.executors.remote_io_executor
salvus.flow.executors.remote_io_executor salvus flow executors remote_io_executor Remote I/O functionality.
Classes
LocalSFTPClient
LocalSFTPClientclass LocalSFTPClient(builtins.object):
def __init__(self): ...Everything is based on SSH but for the local site its not needed. Thus we implement a custom SFTP client on top of direct file system operations.
close()
close()def close(self) -> None: ...Mock method.
get()
get()def get(
self, remotepath: str, localpath: str, callback: typing.Callable | None
) -> None: ...Get a remote file.
remotepathstr — Remote path.localpathstr — Local path.callbacktyping.Callable | None — Callback function.
getfo()
getfo()def getfo(
self, remotepath: str, fl: typing.IO, callback: typing.Callable | None
) -> None: ...Get a remote file and copy it to an open file handle.
remotepathstr — Remote path.fltyping.IO — Open file handle.callbacktyping.Callable | None — Callback function.
listdir()
listdir()def listdir(self, path: str) -> list[str]: ...List the contents of a directory.
pathstr — The path.
mkdir()
mkdir()def mkdir(self, path: str, mode: int = 511) -> None: ...Create directory.
pathstr — The path.modeint — Permission mode.
put()
put()def put(
self, localpath: str, remotepath: str, callback: typing.Callable | None
) -> None: ...Copy a local file to remote site.
localpathstr — Local file.remotepathstr — Remote path.callbacktyping.Callable | None — Callback function.
putfo()
putfo()def putfo(
self, fl: typing.IO, remotepath: str, callback: typing.Callable | None
) -> None: ...Put the contents of an open file handle to a remote path.
fltyping.IO — Open file handle.remotepathstr — Remote path.callbacktyping.Callable | None — Callback function.
rmdir()
rmdir()def rmdir(self, path: str) -> None: ...Remove a directory.
pathstr — The path.
stat()
stat()def stat(self, path: str) -> os.stat_result: ...Return stat().
pathstr — The path.
unlink()
unlink()def unlink(self, path: str) -> None: ...Unlink the path.
pathstr — The path.
LocalSSHClient
LocalSSHClientclass LocalSSHClient(builtins.object):
def __init__(self): ...Fake “local” SSH client.
close()
close()def close(self) -> None: ...Mock method.
connect()
connect()def connect(self) -> None: ...Mock method.
exec_command()
exec_command()def exec_command(self) -> None: ...Mock method.
load_system_host_keys()
load_system_host_keys()def load_system_host_keys(self) -> None: ...Mock method.
open_sftp()
open_sftp()def open_sftp(self) -> None: ...Mock method.
set_missing_host_key_policy()
set_missing_host_key_policy()def set_missing_host_key_policy(self) -> None: ...Mock method.
OSType
OSTypeclass OSType(enum.Enum):
def __init__(self): ...Enumerate the type of operating system.
RemoteIOExecutor
RemoteIOExecutorclass RemoteIOExecutor(builtins.object):
def __init__(self): ...Class to encapsulate SSH/SFTP client initialization and remote I/O functionality.
Not useful on its own - does require self.name and self.config to be available.
file_path_type type[pathlib.PurePosixPath | pathlib.PureWindowsPath]
file_path_type type[pathlib.PurePosixPath | pathlib.PureWindowsPath]Returns the type of file paths for the given site.
home_dir pathlib.PurePosixPath | pathlib.PureWindowsPath
home_dir pathlib.PurePosixPath | pathlib.PureWindowsPathThe home directory.
os_type OSType
os_type OSTypeReturns the type of the operating system.
Subclasses can overwrite this.
sftp_client paramiko.sftp_client.SFTPClient | LocalSFTPClient
sftp_client paramiko.sftp_client.SFTPClient | LocalSFTPClientGet the sftp client instance.
Will be initialized upon the first access.
ssh_client paramiko.client.SSHClient | LocalSSHClient
ssh_client paramiko.client.SSHClient | LocalSSHClientGet the ssh client instance.
Will be initialized upon the first access.
execute_command()
execute_command()def execute_command(
self,
command: str,
assert_ok: bool = True,
environment: dict[str, str] | None = None,
) -> tuple[int, list[str], list[str]]: ...Execute the command.
commandstr — The command to run as a string.assert_okbool — Raise if the command does not exist with a code of 0.environmentdict[str, str] | None — Environment variables to be set for this command.
is_folder_writeable()
is_folder_writeable()def is_folder_writeable(self, path: _RemotePathInputType) -> bool: ...Return True if the user has write permissions in the chosen folder.
path_RemotePathInputType — Path on the remote machine.
remote_exists()
remote_exists()def remote_exists(self, path: _RemotePathInputType) -> bool: ...Check if a remote file or directory exists.
path_RemotePathInputType — Path to check.
remote_get()
remote_get()def remote_get(
self,
remotepath: _RemotePathInputType,
localpath: io.BytesIO | pathlib.Path,
show_progressbar: bool = False,
) -> None: ...Get a remote file.
remotepath_RemotePathInputType — Remote file to get.localpathio.BytesIO | pathlib.Path — Local path to save to Can be a file or a file like object.show_progressbarbool — Show a progressbar or not.
remote_listdir()
remote_listdir()def remote_listdir(self, path: _RemotePathInputType) -> list[str]: ...List the contents of a remote directory.
Just dispatches to the underlying representation.
path_RemotePathInputType — Remote path whose contents to list.
remote_mkdir()
remote_mkdir()def remote_mkdir(
self, path: _RemotePathInputType, mode: int = 511
) -> None: ...Create a directory on the remote or local machine.
path_RemotePathInputType — Directory to create.modeint — Permissions for the new directory.
remote_put()
remote_put()def remote_put(
self,
localpath: io.BytesIO | pathlib.Path,
remotepath: _RemotePathInputType,
show_progressbar: bool = False,
) -> None: ...Copy a local file to a remote path.
localpathio.BytesIO | pathlib.Path — Local file to copy. Can be a file like object.remotepath_RemotePathInputType — Where to copy to.show_progressbarbool — Show a progressbar or not.
remote_rmdir()
remote_rmdir()def remote_rmdir(
self, path: _RemotePathInputType, verbosity: int = 1
) -> None: ...Remotely and recursively delete a remote folder and its contents.
path_RemotePathInputType — Remote path to delete.verbosityint — Verbosity level.
safe_remote_rmdir()
safe_remote_rmdir()def safe_remote_rmdir(
self, path: _RemotePathInputType, allow_failure: bool, verbosity: int = 1
) -> None: ...Convenience wrapper that optionally allows the remote_rmdir() command to fail. Useful for some networked file systems.
path_RemotePathInputType — Remote path to delete.allow_failurebool — Whether to allow failure or not.verbosityint — Verbosity level.