qubesadmin.events package

Submodules

qubesadmin.events.utils module

Utilities for common events-based actions

qubesadmin.events.utils.interrupt_on_vm_shutdown(vms: set[QubesVM], dispatcher: EventsDispatcher, subject: QubesVM, event: str) None[source]

Interrupt events processing when given VM was shutdown

async qubesadmin.events.utils.wait_for_domain_shutdown(vms: Iterable[QubesVM]) None[source]

Helper function to wait for domain shutdown.

This function wait for domain shutdown, but do not initiate the shutdown itself.

Parameters:

vms – QubesVM object collection to wait for shutdown on

Module contents

Event handling implementation, require Python >=3.5.2 for asyncio.

class qubesadmin.events.EventsDispatcher(app: QubesBase, api_method: str = 'admin.Events', enable_cache: bool = True)[source]

Bases: object

Events dispatcher, responsible for receiving events and calling appropriate handlers

add_handler(event: str, handler: Callable[[QubesVM | None, str, ...], Any]) None[source]

Register handler for event

Use ‘*’ as event to register a handler for all events.

Handler function is called with:
  • subject (VM object or None)

  • event name (str)

  • keyword arguments related to the event, if any - all values as str

:param event Event name, or ‘*’ for all events :param handler Handler function

app

Qubes() object

handle(subject_name: str | None, event: str, **kwargs) None[source]

Call handlers for given event

handlers

event handlers - dict of event -> handlers

async listen_for_events(vm: QubesVM | None = None, reconnect: bool = True) None[source]

Listen for events and call appropriate handlers. This function do not exit until manually terminated.

This is coroutine.

Parameters:
  • vm – Listen for events only for this VM, use None to listen for events about all VMs and not related to any particular VM.

  • reconnect – should reconnect to qubesd if connection is interrupted?

Return type:

None

remove_handler(event: str, handler: Callable[[QubesVM | None, str, ...], Any]) None[source]

Remove previously registered event handler

:param event Event name :param handler Handler function

stop() None[source]

Stop currently running dispatcher