ssh_process_lifetime_manager
drunc.processes.ssh_process_lifetime_manager
Abstract base class for process lifetime management.
Defines the common interface for managing remote process lifecycles, including process startup, monitoring, termination, and output capture.
Classes
ProcessLifetimeManager(disable_host_key_check=False, disable_localhost_host_key_check=False, logger=None, on_process_exit=None)
Bases: ABC
Abstract base class for process lifetime management.
Provides a common interface for starting, monitoring, and terminating processes on remote hosts via SSH. Concrete implementations may use different underlying SSH libraries (e.g., Paramiko, sh library).
Initialise process lifetime manager.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
disable_host_key_check
|
bool
|
Disable SSH host key verification for all hosts |
False
|
disable_localhost_host_key_check
|
bool
|
Disable SSH host key verification for localhost |
False
|
logger
|
Optional[Logger]
|
Logger instance for real-time output logging |
None
|
on_process_exit
|
Optional[Callable[[str, Optional[int], Optional[Exception]], None]]
|
Optional callback function(uuid, exit_code, exception) invoked when process exits |
None
|
Source code in drunc/processes/ssh_process_lifetime_manager.py
Functions
cleanup_all()
abstractmethod
Clean up all processes and resources.
Terminates all managed processes and releases all associated resources.
cleanup_process(uuid)
abstractmethod
Clean up process resources.
Terminates the process (if still running) and releases all associated resources.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
uuid
|
str
|
Process UUID to clean up |
required |
Source code in drunc/processes/ssh_process_lifetime_manager.py
get_active_process_keys()
abstractmethod
Get list of active process UUIDs.
Returns:
| Type | Description |
|---|---|
List[str]
|
List of active process UUID strings |
get_exit_code(uuid)
abstractmethod
Get process exit code.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
uuid
|
str
|
Process UUID |
required |
Returns:
| Type | Description |
|---|---|
Optional[int]
|
Exit code if process has terminated, None if still running or not found |
Source code in drunc/processes/ssh_process_lifetime_manager.py
get_process_stderr(uuid)
abstractmethod
Get stderr from process.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
uuid
|
str
|
Process UUID |
required |
Returns:
| Type | Description |
|---|---|
Optional[str]
|
Accumulated stderr content as string, None if not found |
Source code in drunc/processes/ssh_process_lifetime_manager.py
get_process_stdout(uuid)
abstractmethod
Get stdout from process.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
uuid
|
str
|
Process UUID |
required |
Returns:
| Type | Description |
|---|---|
Optional[str]
|
Accumulated stdout content as string, None if not found |
Source code in drunc/processes/ssh_process_lifetime_manager.py
is_process_alive(uuid)
abstractmethod
Check if process is alive.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
uuid
|
str
|
Process UUID to check |
required |
Returns:
| Type | Description |
|---|---|
bool
|
True if process is alive, False otherwise |
read_log_file(hostname, user, log_file, num_lines=100)
abstractmethod
Read remote log file via SSH.
Creates a temporary SSH connection to read the log file and returns the last N lines.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
hostname
|
str
|
Target hostname |
required |
user
|
str
|
SSH username |
required |
log_file
|
str
|
Remote log file path |
required |
num_lines
|
int
|
Number of lines to read from end of file |
100
|
Returns:
| Type | Description |
|---|---|
List[str]
|
List of log lines |
Source code in drunc/processes/ssh_process_lifetime_manager.py
start_process(uuid, boot_request)
abstractmethod
Start a remote process using the boot request configuration.
Extracts all necessary parameters from the boot request and executes the process on the remote host via SSH.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
uuid
|
str
|
Unique identifier for this process |
required |
boot_request
|
BootRequest
|
BootRequest containing process configuration, metadata, environment variables, and execution parameters |
required |
Raises:
| Type | Description |
|---|---|
RuntimeError
|
If SSH connection or process execution fails |
Source code in drunc/processes/ssh_process_lifetime_manager.py
terminate_process(uuid, timeout=10.0)
abstractmethod
Terminate process gracefully with optional timeout.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
uuid
|
str
|
Process UUID to terminate |
required |
timeout
|
float
|
Timeout for graceful termination in seconds |
10.0
|
Source code in drunc/processes/ssh_process_lifetime_manager.py
validate_host_connection(host, auth_method, user)
abstractmethod
Validate SSH connection to the specified host.
Attempts to establish an SSH connection to the host and execute a simple command to verify connectivity. Used to validate access before starting processes.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
host
|
str
|
Target hostname |
required |
auth_method
|
str
|
Authentication method to use (implementation-specific) |
required |
user
|
str
|
SSH username |
required |
Raises:
| Type | Description |
|---|---|
RuntimeError
|
If SSH connection or command execution fails |