Warning
This document is for an in-development version of Galaxy. You can alternatively view this page in the latest release if it exists or view the top of the latest release's documentation.
Source code for galaxy.files.sources.ssh
try:
from fs.sshfs.sshfs import SSHFS
except ImportError:
SSHFS = None
from typing import (
Optional,
Union,
)
from galaxy.files.models import (
BaseFileSourceConfiguration,
BaseFileSourceTemplateConfiguration,
FilesSourceRuntimeContext,
)
from galaxy.util.config_templates import TemplateExpansion
from ._pyfilesystem2 import PyFilesystem2FilesSource
class SshFileSourceTemplateConfiguration(BaseFileSourceTemplateConfiguration):
host: Union[str, TemplateExpansion]
user: Optional[Union[str, TemplateExpansion]] = None
passwd: Optional[Union[str, TemplateExpansion]] = None
pkey: Optional[Union[str, TemplateExpansion]] = None
timeout: Union[int, TemplateExpansion] = 10
port: Union[int, TemplateExpansion] = 22
compress: Union[bool, TemplateExpansion] = False
config_path: Union[str, TemplateExpansion] = "~/.ssh/config"
path: Union[str, TemplateExpansion]
class SshFileSourceConfiguration(BaseFileSourceConfiguration):
host: str
user: Optional[str] = None
passwd: Optional[str] = None
pkey: Optional[str] = None
timeout: int = 10
port: int = 22
compress: bool = False
config_path: str = "~/.ssh/config"
path: str
[docs]
class SshFilesSource(PyFilesystem2FilesSource[SshFileSourceTemplateConfiguration, SshFileSourceConfiguration]):
plugin_type = "ssh"
required_module = SSHFS
required_package = "fs.sshfs"
template_config_class = SshFileSourceTemplateConfiguration
resolved_config_class = SshFileSourceConfiguration
def _open_fs(self, context: FilesSourceRuntimeContext[SshFileSourceConfiguration]):
if SSHFS is None:
raise self.required_package_exception
config = context.config
handle = SSHFS(
host=config.host,
user=config.user,
passwd=config.passwd,
pkey=config.pkey,
port=config.port,
timeout=config.timeout,
compress=config.compress,
config_path=config.config_path,
)
if config.path:
return handle.opendir(config.path)
return handle
__all__ = ("SshFilesSource",)