salvus.flow.sites.concrete_sites.local_hpc
Local versions of all the HPC sites.
They still interact with the job queueing system. They do not use SSH to communicate but directly execute the commands.
Classes
LocalGridEngineSite
LocalGridEngineSiteclass LocalGridEngineSite(
salvus.flow.sites.concrete_sites.grid_engine.GridEngineSite,
salvus.flow.sites.concrete_sites.local.LocalSite,
):
def __init__(
self,
name: str,
configuration: Dict,
keyring_settings: Optional[Dict],
db: Any,
verbosity: int = 1,
skip_version_number_check: bool = False,
):
...namestr — Site name.configurationDict — Configuration for the site.keyring_settingsOptional[Dict] — Keyring settings, if any.dbAny — Connection to the internal database.verbosityint — Verbosity level.skip_version_number_checkbool — Skip the version number check of the local Python version vs the remote site. Useful for initializing and updating sites.
file_path_type Union[Type[pathlib.PurePosixPath], Type[pathlib.PureWindowsPath]]
file_path_type Union[Type[pathlib.PurePosixPath], Type[pathlib.PureWindowsPath]]Returns the type of file paths for the given site.
home_dir pathlib.PurePosixPath
home_dir pathlib.PurePosixPathThe home directory.
is_initialized bool
is_initialized boolTrue if the site has been synchronized/initialized with the remote site.
sftp_client salvus.flow.sites.remote_io_site.LocalSFTPClient
sftp_client salvus.flow.sites.remote_io_site.LocalSFTPClientGet the sftp client instance.
Will be initialized upon the first access.
ssh_client salvus.flow.sites.remote_io_site.LocalSSHClient
ssh_client salvus.flow.sites.remote_io_site.LocalSSHClientGet the ssh client instance.
Will be initialized upon the first access.
update_interval_in_seconds float
update_interval_in_seconds floatA site’s actual update interval.
use_cuda_capable_gpus bool
use_cuda_capable_gpus boolTrue if a site uses license tokens.
use_license_tokens float
use_license_tokens floatTrue if a site uses license tokens.
cancel_job()
cancel_job()def cancel_job(self, job_dir: str) -> None:
...Cancel the GridEngine job by calling qdel.
job_dirstr — The job directory.
check_if_folder_can_be_written_to()
check_if_folder_can_be_written_to()def check_if_folder_can_be_written_to(
self, path: Union[str, pathlib.Path, pathlib.PurePosixPath]
) -> bool:
...Checks if the folder can be written to.
pathUnion[str, pathlib.Path, pathlib.PurePosixPath] — Path on the remote machine.
get_job_status()
get_job_status()def get_job_status(
self, job_dir: str
) -> Union[
salvus.flow.sites.types.JobStatus, List[salvus.flow.sites.types.JobStatus]
]:
...Returns the status of the job or job array to the best knowledge of the remote site.
If the job is a job array, return the status of every job in a list if possible, otherwise just the total status of the whole job.
This is a single method as, in practice, it turns out to be more convenient to implement.
job_dirstr — The job directory.
launch_many_mpi_jobs()
launch_many_mpi_jobs()def launch_many_mpi_jobs(
self,
job_commands: Dict[int, Any],
working_dir: str,
stdout_path: str,
stderr_path: str,
wall_time_in_seconds_per_job: Optional[int],
license_tokens: Optional[List[str]] = None,
) -> List[salvus.flow.sites.types.JobStatus]:
...Launch many MPI jobs at once.
job_commandsDict[int, Any] — Dictionary of a list of commands, one per list per job.working_dirstr — The remote working directory for the execution.stdout_pathstr — Path to pipe stdout to.stderr_pathstr — Path to pipe stderr to.wall_time_in_seconds_per_jobOptional[int] — Wall-time in seconds per job. Must be set for GridEngine sites.license_tokensOptional[List[str]] — If the job array uses license tokens for the license enforcement they are passed here.
launch_mpi_job()
launch_mpi_job()def launch_mpi_job(
self,
commands: List[salvus.flow.sites.site_utils.RemoteCommand],
job_dir: str,
working_dir: str,
stdout_path: str,
stderr_path: str,
wall_time_in_seconds: Optional[int],
is_debug_job: bool = False,
) -> salvus.flow.sites.types.JobStatus:
...Launch a job on a GridEngine cluster using MPI.
Returns the initial status - always “pending” here.
commandsList[salvus.flow.sites.site_utils.RemoteCommand] — List of commands. One will be run after the other, but all will be submitted at the same time.job_dirstr — The remote directory where all the job files are stored.working_dirstr — The remote working directory for the execution.stdout_pathstr — Path to pipe stdout to.stderr_pathstr — Path to pipe stderr to.wall_time_in_secondsOptional[int] — Wall-time in seconds. Must be set for GridEngine sites.is_debug_jobbool — True if this is supposed to be a debug job. Some job management systems have debug or other “fast” queues. Use these special queues if this is set to true.
pretty_print()
pretty_print()def pretty_print(self) -> None:
...Pretty and colorful representation of the site.
remote_exists()
remote_exists()def remote_exists(
self, path: Union[str, pathlib.Path, pathlib.PurePosixPath]
) -> bool:
...Check if the remote path exists or not.
pathUnion[str, pathlib.Path, pathlib.PurePosixPath] — Remote path to check.
remote_get()
remote_get()def remote_get(
self,
remotepath: Union[str, pathlib.Path, pathlib.PurePosixPath],
localpath: Union[_io.BytesIO, pathlib.Path],
progressbar: bool = False,
) -> None:
...Get a remote file.
remotepathUnion[str, pathlib.Path, pathlib.PurePosixPath] — Remote file to get.localpathUnion[_io.BytesIO, pathlib.Path] — Local path to save to Can be a file or a file like object.progressbarbool — Show progressbar.
remote_listdir()
remote_listdir()def remote_listdir(
self, path: Union[str, pathlib.Path, pathlib.PurePosixPath]
) -> List[str]:
...List the contents of a remote directory.
pathUnion[str, pathlib.Path, pathlib.PurePosixPath] — Remote path whose contents to list.
remote_mkdir()
remote_mkdir()def remote_mkdir(
self,
path: Union[str, pathlib.Path, pathlib.PurePosixPath],
mode: int = 511,
) -> None:
...Remotely create a directory.
pathUnion[str, pathlib.Path, pathlib.PurePosixPath] — Directory to create.modeint — Permissions for the new directory.
remote_put()
remote_put()def remote_put(
self,
localpath: Union[_io.BytesIO, pathlib.Path],
remotepath: Union[str, pathlib.Path, pathlib.PurePosixPath],
progressbar: bool = False,
) -> None:
...Copy a local file to a remote path.
localpathUnion[_io.BytesIO, pathlib.Path] — Local file to copy. Can be a file like object.remotepathUnion[str, pathlib.Path, pathlib.PurePosixPath] — Where to copy to.progressbarbool — Show a progressbar.
remote_rmdir()
remote_rmdir()def remote_rmdir(
self,
path: Union[str, pathlib.Path, pathlib.PurePosixPath],
verbosity: int = 1,
) -> None:
...Remotely and recursively delete a remote folder and its contents.
pathUnion[str, pathlib.Path, pathlib.PurePosixPath] — Remote path to delete.verbosityint — Verbosity level.
run_ssh_command()
run_ssh_command()def run_ssh_command(
self,
cmd: str,
assert_ok: bool = True,
environment: Optional[Dict[str, str]] = None,
) -> Tuple[int, List[str], List[str]]:
...Run the “ssh command” on this machine without using SSH.
cmdstr — Command to run.assert_okbool — Assert that it exits with code zero, otherwise raise a remote execution error with more information.environmentOptional[Dict[str, str]] — A dict of shell environment variables to be merged into the default environment that the remote command executes with.
safe_remote_rmdir()
safe_remote_rmdir()def safe_remote_rmdir(
self,
path: Union[str, pathlib.Path, pathlib.PurePosixPath],
allow_failure: bool,
verbosity: int = 1,
) -> None:
...Convenience wrapper that optionally allows the remote_rmdir() command to fail. Useful for some networked file systems.
pathUnion[str, pathlib.Path, pathlib.PurePosixPath] — Remote path to delete.allow_failurebool — Whether to allow failure or not.verbosityint — Verbosity level.
LocalLSFSite
LocalLSFSiteclass LocalLSFSite(
salvus.flow.sites.concrete_sites.lsf.LSFSite,
salvus.flow.sites.concrete_sites.local.LocalSite,
):
def __init__(
self,
name: str,
configuration: Dict,
keyring_settings: Optional[Dict],
db: Any,
verbosity: int = 1,
skip_version_number_check: bool = False,
):
...namestr — Site name.configurationDict — Configuration for the site.keyring_settingsOptional[Dict] — Keyring settings, if any.dbAny — Connection to the internal database.verbosityint — Verbosity level.skip_version_number_checkbool — Skip the version number check of the local Python version vs the remote site. Useful for initializing and updating sites.
file_path_type Union[Type[pathlib.PurePosixPath], Type[pathlib.PureWindowsPath]]
file_path_type Union[Type[pathlib.PurePosixPath], Type[pathlib.PureWindowsPath]]Returns the type of file paths for the given site.
home_dir pathlib.PurePosixPath
home_dir pathlib.PurePosixPathThe home directory.
is_initialized bool
is_initialized boolTrue if the site has been synchronized/initialized with the remote site.
sftp_client salvus.flow.sites.remote_io_site.LocalSFTPClient
sftp_client salvus.flow.sites.remote_io_site.LocalSFTPClientGet the sftp client instance.
Will be initialized upon the first access.
ssh_client salvus.flow.sites.remote_io_site.LocalSSHClient
ssh_client salvus.flow.sites.remote_io_site.LocalSSHClientGet the ssh client instance.
Will be initialized upon the first access.
update_interval_in_seconds float
update_interval_in_seconds floatA site’s actual update interval.
use_cuda_capable_gpus bool
use_cuda_capable_gpus boolTrue if a site uses license tokens.
use_license_tokens float
use_license_tokens floatTrue if a site uses license tokens.
cancel_job()
cancel_job()def cancel_job(self, job_dir: str) -> None:
...Cancel the LSF job by calling bkill.
job_dirstr — Directory where job is running.
check_if_folder_can_be_written_to()
check_if_folder_can_be_written_to()def check_if_folder_can_be_written_to(
self, path: Union[str, pathlib.Path, pathlib.PurePosixPath]
) -> bool:
...Checks if the folder can be written to.
pathUnion[str, pathlib.Path, pathlib.PurePosixPath] — Path on the remote machine.
get_job_status()
get_job_status()def get_job_status(
self, job_dir: str
) -> Union[
salvus.flow.sites.types.JobStatus, List[salvus.flow.sites.types.JobStatus]
]:
...Return the status of the job or job array.
This is a single method as, in practice, it turns out to be more convenient to implement.
job_dirstr — Directory where job is running.
launch_many_mpi_jobs()
launch_many_mpi_jobs()def launch_many_mpi_jobs(
self,
job_commands: Dict[int, Any],
working_dir: str,
stdout_path: str,
stderr_path: str,
wall_time_in_seconds_per_job: Optional[int],
license_tokens: Optional[List[str]] = None,
) -> List[salvus.flow.sites.types.JobStatus]:
...Launch many MPI jobs at once.
job_commandsDict[int, Any] — Dictionary of a list of commands, one per list per job.working_dirstr — The remote working directory for the execution.stdout_pathstr — Path to pipe stdout to.stderr_pathstr — Path to pipe stderr to.wall_time_in_seconds_per_jobOptional[int] — Wall-time in seconds per job. Must be given for an LSF site.license_tokensOptional[List[str]] — If the job array uses license tokens for the license enforcement they are passed here.
launch_mpi_job()
launch_mpi_job()def launch_mpi_job(
self,
commands: List[salvus.flow.sites.site_utils.RemoteCommand],
job_dir: str,
working_dir: str,
stdout_path: str,
stderr_path: str,
wall_time_in_seconds: Optional[int],
is_debug_job: bool = False,
) -> salvus.flow.sites.types.JobStatus:
...Launch a job on LSF cluster using MPI.
commandsList[salvus.flow.sites.site_utils.RemoteCommand] — List of commands to run.job_dirstr — Root directory of job, where all files will be copied.working_dirstr — Run directory of job, where Salvus will be executed.stdout_pathstr — Path to the Salvus stdout file.stderr_pathstr — Path to the Salvus stderr file.wall_time_in_secondsOptional[int] — Max wall time in seconds for the job.is_debug_jobbool — Should we run this job in the debug queue, by default False
pretty_print()
pretty_print()def pretty_print(self) -> None:
...Pretty and colorful representation of the site.
remote_exists()
remote_exists()def remote_exists(
self, path: Union[str, pathlib.Path, pathlib.PurePosixPath]
) -> bool:
...Check if the remote path exists or not.
pathUnion[str, pathlib.Path, pathlib.PurePosixPath] — Remote path to check.
remote_get()
remote_get()def remote_get(
self,
remotepath: Union[str, pathlib.Path, pathlib.PurePosixPath],
localpath: Union[_io.BytesIO, pathlib.Path],
progressbar: bool = False,
) -> None:
...Get a remote file.
remotepathUnion[str, pathlib.Path, pathlib.PurePosixPath] — Remote file to get.localpathUnion[_io.BytesIO, pathlib.Path] — Local path to save to Can be a file or a file like object.progressbarbool — Show progressbar.
remote_listdir()
remote_listdir()def remote_listdir(
self, path: Union[str, pathlib.Path, pathlib.PurePosixPath]
) -> List[str]:
...List the contents of a remote directory.
pathUnion[str, pathlib.Path, pathlib.PurePosixPath] — Remote path whose contents to list.
remote_mkdir()
remote_mkdir()def remote_mkdir(
self,
path: Union[str, pathlib.Path, pathlib.PurePosixPath],
mode: int = 511,
) -> None:
...Remotely create a directory.
pathUnion[str, pathlib.Path, pathlib.PurePosixPath] — Directory to create.modeint — Permissions for the new directory.
remote_put()
remote_put()def remote_put(
self,
localpath: Union[_io.BytesIO, pathlib.Path],
remotepath: Union[str, pathlib.Path, pathlib.PurePosixPath],
progressbar: bool = False,
) -> None:
...Copy a local file to a remote path.
localpathUnion[_io.BytesIO, pathlib.Path] — Local file to copy. Can be a file like object.remotepathUnion[str, pathlib.Path, pathlib.PurePosixPath] — Where to copy to.progressbarbool — Show a progressbar.
remote_rmdir()
remote_rmdir()def remote_rmdir(
self,
path: Union[str, pathlib.Path, pathlib.PurePosixPath],
verbosity: int = 1,
) -> None:
...Remotely and recursively delete a remote folder and its contents.
pathUnion[str, pathlib.Path, pathlib.PurePosixPath] — Remote path to delete.verbosityint — Verbosity level.
run_ssh_command()
run_ssh_command()def run_ssh_command(
self,
cmd: str,
assert_ok: bool = True,
environment: Optional[Dict[str, str]] = None,
) -> Tuple[int, List[str], List[str]]:
...Run the “ssh command” on this machine without using SSH.
cmdstr — Command to run.assert_okbool — Assert that it exits with code zero, otherwise raise a remote execution error with more information.environmentOptional[Dict[str, str]] — A dict of shell environment variables to be merged into the default environment that the remote command executes with.
safe_remote_rmdir()
safe_remote_rmdir()def safe_remote_rmdir(
self,
path: Union[str, pathlib.Path, pathlib.PurePosixPath],
allow_failure: bool,
verbosity: int = 1,
) -> None:
...Convenience wrapper that optionally allows the remote_rmdir() command to fail. Useful for some networked file systems.
pathUnion[str, pathlib.Path, pathlib.PurePosixPath] — Remote path to delete.allow_failurebool — Whether to allow failure or not.verbosityint — Verbosity level.
LocalPbsSite
LocalPbsSiteclass LocalPbsSite(
salvus.flow.sites.concrete_sites.pbs.PbsSite,
salvus.flow.sites.concrete_sites.local.LocalSite,
):
def __init__(
self,
name: str,
configuration: Dict,
keyring_settings: Optional[Dict],
db: Any,
verbosity: int = 1,
skip_version_number_check: bool = False,
):
...namestr — Site name.configurationDict — Configuration for the site.keyring_settingsOptional[Dict] — Keyring settings, if any.dbAny — Connection to the internal database.verbosityint — Verbosity level.skip_version_number_checkbool — Skip the version number check of the local Python version vs the remote site. Useful for initializing and updating sites.
file_path_type Union[Type[pathlib.PurePosixPath], Type[pathlib.PureWindowsPath]]
file_path_type Union[Type[pathlib.PurePosixPath], Type[pathlib.PureWindowsPath]]Returns the type of file paths for the given site.
home_dir pathlib.PurePosixPath
home_dir pathlib.PurePosixPathThe home directory.
is_initialized bool
is_initialized boolTrue if the site has been synchronized/initialized with the remote site.
sftp_client salvus.flow.sites.remote_io_site.LocalSFTPClient
sftp_client salvus.flow.sites.remote_io_site.LocalSFTPClientGet the sftp client instance.
Will be initialized upon the first access.
ssh_client salvus.flow.sites.remote_io_site.LocalSSHClient
ssh_client salvus.flow.sites.remote_io_site.LocalSSHClientGet the ssh client instance.
Will be initialized upon the first access.
update_interval_in_seconds float
update_interval_in_seconds floatA site’s actual update interval.
use_cuda_capable_gpus bool
use_cuda_capable_gpus boolTrue if a site uses license tokens.
use_license_tokens float
use_license_tokens floatTrue if a site uses license tokens.
cancel_job()
cancel_job()def cancel_job(self, job_dir: str) -> None:
...Cancel the PBS job by calling qdel.
job_dirstr — The job directory.
check_if_folder_can_be_written_to()
check_if_folder_can_be_written_to()def check_if_folder_can_be_written_to(
self, path: Union[str, pathlib.Path, pathlib.PurePosixPath]
) -> bool:
...Checks if the folder can be written to.
pathUnion[str, pathlib.Path, pathlib.PurePosixPath] — Path on the remote machine.
get_job_status()
get_job_status()def get_job_status(
self, job_dir: str
) -> Union[
salvus.flow.sites.types.JobStatus, List[salvus.flow.sites.types.JobStatus]
]:
...Returns the status of the job or job array to the best knowledge of the remote site.
If the job is a job array, return the status of every job in a list if possible, otherwise just the total status of the whole job.
This is a single method as, in practice, it turns out to be more convenient to implement.
job_dirstr — The job directory.
launch_many_mpi_jobs()
launch_many_mpi_jobs()def launch_many_mpi_jobs(
self,
job_commands: Dict[int, Any],
working_dir: str,
stdout_path: str,
stderr_path: str,
wall_time_in_seconds_per_job: Optional[int],
license_tokens: Optional[List[str]] = None,
) -> List[salvus.flow.sites.types.JobStatus]:
...Launch many MPI jobs at once.
job_commandsDict[int, Any] — Dictionary of a list of commands, one per list per job.working_dirstr — The remote working directory for the execution.stdout_pathstr — Path to pipe stdout to.stderr_pathstr — Path to pipe stderr to.wall_time_in_seconds_per_jobOptional[int] — Wall-time in seconds per job. Must be set for PBS sites.license_tokensOptional[List[str]] — If the job array uses license tokens for the license enforcement they are passed here.
launch_mpi_job()
launch_mpi_job()def launch_mpi_job(
self,
commands: List[salvus.flow.sites.site_utils.RemoteCommand],
job_dir: str,
working_dir: str,
stdout_path: str,
stderr_path: str,
wall_time_in_seconds: Optional[int],
is_debug_job: bool = False,
) -> salvus.flow.sites.types.JobStatus:
...Launch a job on a PBS cluster using MPI.
Returns the initial status - always “pending” here.
commandsList[salvus.flow.sites.site_utils.RemoteCommand] — List of commands. One will be run after the other, but all will be submitted at the same time.job_dirstr — The remote directory where all the job files are stored.working_dirstr — The remote working directory for the execution.stdout_pathstr — Path to pipe stdout to.stderr_pathstr — Path to pipe stderr to.wall_time_in_secondsOptional[int] — Wall-time in seconds. Must be set for PBS sites.is_debug_jobbool — True if this is supposed to be a debug job. Some job management systems have debug or other “fast” queues. Use these special queues if this is set to true.
pretty_print()
pretty_print()def pretty_print(self) -> None:
...Pretty and colorful representation of the site.
remote_exists()
remote_exists()def remote_exists(
self, path: Union[str, pathlib.Path, pathlib.PurePosixPath]
) -> bool:
...Check if the remote path exists or not.
pathUnion[str, pathlib.Path, pathlib.PurePosixPath] — Remote path to check.
remote_get()
remote_get()def remote_get(
self,
remotepath: Union[str, pathlib.Path, pathlib.PurePosixPath],
localpath: Union[_io.BytesIO, pathlib.Path],
progressbar: bool = False,
) -> None:
...Get a remote file.
remotepathUnion[str, pathlib.Path, pathlib.PurePosixPath] — Remote file to get.localpathUnion[_io.BytesIO, pathlib.Path] — Local path to save to Can be a file or a file like object.progressbarbool — Show progressbar.
remote_listdir()
remote_listdir()def remote_listdir(
self, path: Union[str, pathlib.Path, pathlib.PurePosixPath]
) -> List[str]:
...List the contents of a remote directory.
pathUnion[str, pathlib.Path, pathlib.PurePosixPath] — Remote path whose contents to list.
remote_mkdir()
remote_mkdir()def remote_mkdir(
self,
path: Union[str, pathlib.Path, pathlib.PurePosixPath],
mode: int = 511,
) -> None:
...Remotely create a directory.
pathUnion[str, pathlib.Path, pathlib.PurePosixPath] — Directory to create.modeint — Permissions for the new directory.
remote_put()
remote_put()def remote_put(
self,
localpath: Union[_io.BytesIO, pathlib.Path],
remotepath: Union[str, pathlib.Path, pathlib.PurePosixPath],
progressbar: bool = False,
) -> None:
...Copy a local file to a remote path.
localpathUnion[_io.BytesIO, pathlib.Path] — Local file to copy. Can be a file like object.remotepathUnion[str, pathlib.Path, pathlib.PurePosixPath] — Where to copy to.progressbarbool — Show a progressbar.
remote_rmdir()
remote_rmdir()def remote_rmdir(
self,
path: Union[str, pathlib.Path, pathlib.PurePosixPath],
verbosity: int = 1,
) -> None:
...Remotely and recursively delete a remote folder and its contents.
pathUnion[str, pathlib.Path, pathlib.PurePosixPath] — Remote path to delete.verbosityint — Verbosity level.
run_ssh_command()
run_ssh_command()def run_ssh_command(
self,
cmd: str,
assert_ok: bool = True,
environment: Optional[Dict[str, str]] = None,
) -> Tuple[int, List[str], List[str]]:
...Run the “ssh command” on this machine without using SSH.
cmdstr — Command to run.assert_okbool — Assert that it exits with code zero, otherwise raise a remote execution error with more information.environmentOptional[Dict[str, str]] — A dict of shell environment variables to be merged into the default environment that the remote command executes with.
safe_remote_rmdir()
safe_remote_rmdir()def safe_remote_rmdir(
self,
path: Union[str, pathlib.Path, pathlib.PurePosixPath],
allow_failure: bool,
verbosity: int = 1,
) -> None:
...Convenience wrapper that optionally allows the remote_rmdir() command to fail. Useful for some networked file systems.
pathUnion[str, pathlib.Path, pathlib.PurePosixPath] — Remote path to delete.allow_failurebool — Whether to allow failure or not.verbosityint — Verbosity level.
LocalSlurmSite
LocalSlurmSiteclass LocalSlurmSite(
salvus.flow.sites.concrete_sites.slurm.SlurmSite,
salvus.flow.sites.concrete_sites.local.LocalSite,
):
def __init__(
self,
name: str,
configuration: Dict,
keyring_settings: Optional[Dict],
db: Any,
verbosity: int = 1,
skip_version_number_check: bool = False,
):
...namestr — Site name.configurationDict — Configuration for the site.keyring_settingsOptional[Dict] — Keyring settings, if any.dbAny — Connection to the internal database.verbosityint — Verbosity level.skip_version_number_checkbool — Skip the version number check of the local Python version vs the remote site. Useful for initializing and updating sites.
file_path_type Union[Type[pathlib.PurePosixPath], Type[pathlib.PureWindowsPath]]
file_path_type Union[Type[pathlib.PurePosixPath], Type[pathlib.PureWindowsPath]]Returns the type of file paths for the given site.
home_dir pathlib.PurePosixPath
home_dir pathlib.PurePosixPathThe home directory.
is_initialized bool
is_initialized boolTrue if the site has been synchronized/initialized with the remote site.
sftp_client salvus.flow.sites.remote_io_site.LocalSFTPClient
sftp_client salvus.flow.sites.remote_io_site.LocalSFTPClientGet the sftp client instance.
Will be initialized upon the first access.
ssh_client salvus.flow.sites.remote_io_site.LocalSSHClient
ssh_client salvus.flow.sites.remote_io_site.LocalSSHClientGet the ssh client instance.
Will be initialized upon the first access.
update_interval_in_seconds float
update_interval_in_seconds floatA site’s actual update interval.
use_cuda_capable_gpus bool
use_cuda_capable_gpus boolTrue if a site uses license tokens.
use_license_tokens float
use_license_tokens floatTrue if a site uses license tokens.
cancel_job()
cancel_job()def cancel_job(self, job_dir: str) -> None:
...Cancels the job.
job_dirstr — The job directory.
check_if_folder_can_be_written_to()
check_if_folder_can_be_written_to()def check_if_folder_can_be_written_to(
self, path: Union[str, pathlib.Path, pathlib.PurePosixPath]
) -> bool:
...Checks if the folder can be written to.
pathUnion[str, pathlib.Path, pathlib.PurePosixPath] — Path on the remote machine.
get_job_status()
get_job_status()def get_job_status(
self, job_dir: str
) -> Union[
salvus.flow.sites.types.JobStatus, List[salvus.flow.sites.types.JobStatus]
]:
...Returns the status of the job or job array to the best knowledge of the remote site.
If the job is a job array, return the status of every job in a list if possible, otherwise just the total status of the whole job.
This is a single method as, in practice, it turns out to be more convenient to implement.
job_dirstr — The job directory.
launch_many_mpi_jobs()
launch_many_mpi_jobs()def launch_many_mpi_jobs(
self,
job_commands: Dict[int, Any],
working_dir: str,
stdout_path: str,
stderr_path: str,
wall_time_in_seconds_per_job: Optional[int],
license_tokens: Optional[List[str]] = None,
) -> List[salvus.flow.sites.types.JobStatus]:
...Launch many MPI jobs at once.
job_commandsDict[int, Any] — Dictionary of a list of commands, one per list per job.working_dirstr — The remote working directory for the execution.stdout_pathstr — Path to pipe stdout to.stderr_pathstr — Path to pipe stderr to.wall_time_in_seconds_per_jobOptional[int] — Wall-time in seconds per job. Must be given for slurm sites.license_tokensOptional[List[str]] — If the job array uses license tokens for the license enforcement they are passed here.
launch_mpi_job()
launch_mpi_job()def launch_mpi_job(
self,
commands: List[salvus.flow.sites.site_utils.RemoteCommand],
job_dir: str,
working_dir: str,
stdout_path: str,
stderr_path: str,
wall_time_in_seconds: Optional[int],
is_debug_job: bool = False,
) -> salvus.flow.sites.types.JobStatus:
...Run an MPI job.
Returns the initial status. Always “pending” for slurm jobs.
commandsList[salvus.flow.sites.site_utils.RemoteCommand] — List of commands. One will be run after the other, but all will be submitted at the same time.job_dirstr — The remote directory where all the job files are stored.working_dirstr — The remote working directory for the execution.stdout_pathstr — Path to pipe stdout to.stderr_pathstr — Path to pipe stderr to.wall_time_in_secondsOptional[int] — Wall-time in seconds. Must be given for slurm sites.is_debug_jobbool — True if this is supposed to be a debug job. Some job management systems have debug or other “fast” queues. Use these special queues if this is set to true.
pretty_print()
pretty_print()def pretty_print(self) -> None:
...Pretty and colorful representation of the site.
remote_exists()
remote_exists()def remote_exists(
self, path: Union[str, pathlib.Path, pathlib.PurePosixPath]
) -> bool:
...Check if the remote path exists or not.
pathUnion[str, pathlib.Path, pathlib.PurePosixPath] — Remote path to check.
remote_get()
remote_get()def remote_get(
self,
remotepath: Union[str, pathlib.Path, pathlib.PurePosixPath],
localpath: Union[_io.BytesIO, pathlib.Path],
progressbar: bool = False,
) -> None:
...Get a remote file.
remotepathUnion[str, pathlib.Path, pathlib.PurePosixPath] — Remote file to get.localpathUnion[_io.BytesIO, pathlib.Path] — Local path to save to Can be a file or a file like object.progressbarbool — Show progressbar.
remote_listdir()
remote_listdir()def remote_listdir(
self, path: Union[str, pathlib.Path, pathlib.PurePosixPath]
) -> List[str]:
...List the contents of a remote directory.
pathUnion[str, pathlib.Path, pathlib.PurePosixPath] — Remote path whose contents to list.
remote_mkdir()
remote_mkdir()def remote_mkdir(
self,
path: Union[str, pathlib.Path, pathlib.PurePosixPath],
mode: int = 511,
) -> None:
...Remotely create a directory.
pathUnion[str, pathlib.Path, pathlib.PurePosixPath] — Directory to create.modeint — Permissions for the new directory.
remote_put()
remote_put()def remote_put(
self,
localpath: Union[_io.BytesIO, pathlib.Path],
remotepath: Union[str, pathlib.Path, pathlib.PurePosixPath],
progressbar: bool = False,
) -> None:
...Copy a local file to a remote path.
localpathUnion[_io.BytesIO, pathlib.Path] — Local file to copy. Can be a file like object.remotepathUnion[str, pathlib.Path, pathlib.PurePosixPath] — Where to copy to.progressbarbool — Show a progressbar.
remote_rmdir()
remote_rmdir()def remote_rmdir(
self,
path: Union[str, pathlib.Path, pathlib.PurePosixPath],
verbosity: int = 1,
) -> None:
...Remotely and recursively delete a remote folder and its contents.
pathUnion[str, pathlib.Path, pathlib.PurePosixPath] — Remote path to delete.verbosityint — Verbosity level.
run_ssh_command()
run_ssh_command()def run_ssh_command(
self,
cmd: str,
assert_ok: bool = True,
environment: Optional[Dict[str, str]] = None,
) -> Tuple[int, List[str], List[str]]:
...Run the “ssh command” on this machine without using SSH.
cmdstr — Command to run.assert_okbool — Assert that it exits with code zero, otherwise raise a remote execution error with more information.environmentOptional[Dict[str, str]] — A dict of shell environment variables to be merged into the default environment that the remote command executes with.
safe_remote_rmdir()
safe_remote_rmdir()def safe_remote_rmdir(
self,
path: Union[str, pathlib.Path, pathlib.PurePosixPath],
allow_failure: bool,
verbosity: int = 1,
) -> None:
...Convenience wrapper that optionally allows the remote_rmdir() command to fail. Useful for some networked file systems.
pathUnion[str, pathlib.Path, pathlib.PurePosixPath] — Remote path to delete.allow_failurebool — Whether to allow failure or not.verbosityint — Verbosity level.