mlox.operations

Core operations for interacting with MLOX projects.

This module centralises the business logic used by the different user interfaces (CLI, TUI, web UI, ...). Each operation returns an OperationResult which carries a success flag, an error code, a human-readable message and optional payload data.

The functions are designed to be side-effect free outside of their intended purpose and expose a small cache to avoid repeated session initialisation for the same project credentials.

@dataclass
class OperationResult:

Container describing the outcome of an operation.

OperationResult( success: bool, code: int, message: str, data: typing.Any | None = None)
success: bool
code: int
message: str
data: typing.Any | None = None
def create_project(name: str, password: str) -> OperationResult:

Create or load a project by initialising a session.

def list_servers(project: str, password: str) -> OperationResult:
def add_server( project: str, password: str, *, template_path: str, ip: str, port: int, root_user: str, root_password: str, extra_params: Optional[Dict[str, str]] = None) -> OperationResult:
def setup_server( project: str, password: str, *, ip: str) -> OperationResult:
def teardown_server( project: str, password: str, *, ip: str) -> OperationResult:
def save_server_key( project: str, password: str, *, ip: str, output_path: str) -> OperationResult:
def list_services(project: str, password: str) -> OperationResult:
def add_service( project: str, password: str, *, server_ip: str, template_id: str, params: Optional[Dict[str, str]] = None) -> OperationResult:
def setup_service( project: str, password: str, *, name: str) -> OperationResult:
def teardown_service( project: str, password: str, *, name: str) -> OperationResult:
def service_logs( project: str, password: str, *, name: str, label: Optional[str] = None, tail: int = 200) -> OperationResult:
def list_server_configs() -> OperationResult:
def list_service_configs() -> OperationResult:
def invalidate_session_cache(project: Optional[str] = None) -> None:

Clear cached sessions for a project or entirely.