mirror of https://github.com/F-Stack/f-stack.git
63 lines
1.9 KiB
Python
63 lines
1.9 KiB
Python
# SPDX-License-Identifier: BSD-3-Clause
|
|
# Copyright(c) 2010-2014 Intel Corporation
|
|
# Copyright(c) 2022 PANTHEON.tech s.r.o.
|
|
# Copyright(c) 2022 University of New Hampshire
|
|
|
|
"""
|
|
A node is a generic host that DTS connects to and manages.
|
|
"""
|
|
|
|
from framework.config import NodeConfiguration
|
|
from framework.logger import DTSLOG, getLogger
|
|
from framework.remote_session import RemoteSession, create_remote_session
|
|
from framework.settings import SETTINGS
|
|
|
|
|
|
class Node(object):
|
|
"""
|
|
Basic module for node management. This module implements methods that
|
|
manage a node, such as information gathering (of CPU/PCI/NIC) and
|
|
environment setup.
|
|
"""
|
|
|
|
name: str
|
|
main_session: RemoteSession
|
|
logger: DTSLOG
|
|
_config: NodeConfiguration
|
|
_other_sessions: list[RemoteSession]
|
|
|
|
def __init__(self, node_config: NodeConfiguration):
|
|
self._config = node_config
|
|
self._other_sessions = []
|
|
|
|
self.name = node_config.name
|
|
self.logger = getLogger(self.name)
|
|
self.logger.info(f"Created node: {self.name}")
|
|
self.main_session = create_remote_session(self._config, self.name, self.logger)
|
|
|
|
def send_command(self, cmds: str, timeout: float = SETTINGS.timeout) -> str:
|
|
"""
|
|
Send commands to node and return string before timeout.
|
|
"""
|
|
|
|
return self.main_session.send_command(cmds, timeout)
|
|
|
|
def create_session(self, name: str) -> RemoteSession:
|
|
connection = create_remote_session(
|
|
self._config,
|
|
name,
|
|
getLogger(name, node=self.name),
|
|
)
|
|
self._other_sessions.append(connection)
|
|
return connection
|
|
|
|
def node_exit(self) -> None:
|
|
"""
|
|
Recover all resource before node exit
|
|
"""
|
|
if self.main_session:
|
|
self.main_session.close()
|
|
for session in self._other_sessions:
|
|
session.close()
|
|
self.logger.logger_exit()
|