forked from TrueCloudLab/frostfs-testlib
Add loader and sceanrio runner interfaces, add support for local scenario
Signed-off-by: Andrey Berezin <a.berezin@yadro.com>
This commit is contained in:
parent
13ea25bff5
commit
182bd6ab36
19 changed files with 786 additions and 384 deletions
60
src/frostfs_testlib/load/loaders.py
Normal file
60
src/frostfs_testlib/load/loaders.py
Normal file
|
@ -0,0 +1,60 @@
|
|||
from frostfs_testlib.load.interfaces import Loader
|
||||
from frostfs_testlib.resources.load_params import (
|
||||
LOAD_NODE_SSH_PASSWORD,
|
||||
LOAD_NODE_SSH_PRIVATE_KEY_PASSPHRASE,
|
||||
LOAD_NODE_SSH_PRIVATE_KEY_PATH,
|
||||
LOAD_NODE_SSH_USER,
|
||||
)
|
||||
from frostfs_testlib.shell.interfaces import Shell, SshCredentials
|
||||
from frostfs_testlib.shell.ssh_shell import SSHShell
|
||||
from frostfs_testlib.storage.cluster import ClusterNode
|
||||
|
||||
|
||||
class RemoteLoader(Loader):
|
||||
def __init__(self, ssh_credentials: SshCredentials, ip: str) -> None:
|
||||
self.ssh_credentials = ssh_credentials
|
||||
self._ip = ip
|
||||
|
||||
@property
|
||||
def ip(self):
|
||||
return self._ip
|
||||
|
||||
def get_shell(self) -> Shell:
|
||||
ssh_client = SSHShell(
|
||||
host=self.ip,
|
||||
login=self.ssh_credentials.ssh_login,
|
||||
password=self.ssh_credentials.ssh_password,
|
||||
private_key_path=self.ssh_credentials.ssh_key_path,
|
||||
private_key_passphrase=self.ssh_credentials.ssh_key_passphrase,
|
||||
)
|
||||
|
||||
return ssh_client
|
||||
|
||||
@classmethod
|
||||
def from_ip_list(cls, ip_list: list[str]) -> list[Loader]:
|
||||
loaders: list[Loader] = []
|
||||
ssh_credentials = SshCredentials(
|
||||
LOAD_NODE_SSH_USER,
|
||||
LOAD_NODE_SSH_PASSWORD,
|
||||
LOAD_NODE_SSH_PRIVATE_KEY_PATH,
|
||||
LOAD_NODE_SSH_PRIVATE_KEY_PASSPHRASE,
|
||||
)
|
||||
|
||||
for ip in ip_list:
|
||||
loaders.append(RemoteLoader(ssh_credentials, ip))
|
||||
|
||||
return loaders
|
||||
|
||||
|
||||
class NodeLoader(Loader):
|
||||
"""When ClusterNode is the loader for itself (for Local scenario only)."""
|
||||
|
||||
def __init__(self, cluster_node: ClusterNode) -> None:
|
||||
self.cluster_node = cluster_node
|
||||
|
||||
def get_shell(self) -> Shell:
|
||||
return self.cluster_node.host.get_shell()
|
||||
|
||||
@property
|
||||
def ip(self):
|
||||
return self.cluster_node.host_ip
|
Loading…
Add table
Add a link
Reference in a new issue