pysnap.runtime package

Runtime helpers for PySnap.

Submodules

pysnap.runtime.sessions module

Persistent session registry used by terminal connections.

class pysnap.runtime.sessions.SessionRecord(vm_name, serial_port, pid, attached_at, control_port=None, control_token=None)[source]

Bases: object

Represent one live terminal session.

Parameters:
  • control_port (int | None) – Local TCP port of the session control channel, used by pysnap report extract while the session is attached.

  • control_token (str | None) – Secret that a control request must present.

  • vm_name (str)

  • serial_port (int)

  • pid (int)

  • attached_at (str)

vm_name: str
serial_port: int
pid: int
attached_at: str
control_port: int | None = None
control_token: str | None = None
class pysnap.runtime.sessions.SessionRegistry(root_dir=None)[source]

Bases: object

Store terminal session metadata in a temp-directory registry.

Parameters:

root_dir (Path | None)

WINDOWS_PROCESS_QUERY_LIMITED_INFORMATION = 4096
WINDOWS_STILL_ACTIVE = 259
WINDOWS_ERROR_ACCESS_DENIED = 5
list_live_sessions()[source]

Return live session records keyed by VM name.

Returns:

Live session records.

Return type:

dict[str, SessionRecord]

get_live_session(vm_name)[source]

Return one live session for the specified VM.

Parameters:

vm_name (str) – VM name to inspect.

Returns:

Live session record or None.

Return type:

SessionRecord | None

register(vm_name, serial_port, control_port=None, control_token=None)[source]

Register a session for the duration of a context manager.

The record is readable only by the current user because it may hold the control-channel secret.

Parameters:
  • vm_name (str) – VM name.

  • serial_port (int) – Attached serial TCP port.

  • control_port (int | None) – Optional local control-channel port.

  • control_token (str | None) – Optional control-channel secret.

Yields:

Persisted session record.

Return type:

Iterator[SessionRecord]