Skip to content

Commit 98ecb1d

Browse files
committed
Inform clients about suspend
Since there is "resume", and there is a moment when resuming that domain might still be suspended, or event suspending a domain on purposed, allow clients to know the domain state.
1 parent 856e0a1 commit 98ecb1d

2 files changed

Lines changed: 18 additions & 0 deletions

File tree

qubes/app.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1738,6 +1738,15 @@ def _domain_event_callback(self, _conn, domain, event, _detail, _opaque):
17381738

17391739
if event == libvirt.VIR_DOMAIN_EVENT_STOPPED:
17401740
vm.on_libvirt_domain_stopped()
1741+
elif event == libvirt.VIR_DOMAIN_EVENT_PMSUSPENDED:
1742+
try:
1743+
vm.fire_event("domain-suspended")
1744+
except Exception: # pylint: disable=broad-except
1745+
self.log.exception(
1746+
"Uncaught exception from domain-suspended handler "
1747+
"for domain %s",
1748+
vm.name,
1749+
)
17411750
elif event == libvirt.VIR_DOMAIN_EVENT_SUSPENDED:
17421751
try:
17431752
vm.fire_event("domain-paused")

qubes/vm/qubesvm.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -447,6 +447,15 @@ class QubesVM(qubes.vm.mix.net.NetVMMixin, qubes.vm.LocalVM):
447447
:param subject: Event emitter (the qube object)
448448
:param event: Event name (``'domain-unpaused'``)
449449
450+
.. event:: domain-suspended (subject, event)
451+
452+
Fired when the domain has been suspended.
453+
454+
Handler for this event may be asynchronous.
455+
456+
:param subject: Event emitter (the qube object)
457+
:param event: Event name (``'domain-suspended'``)
458+
450459
.. event:: domain-resumed (subject, event)
451460
452461
Fired when the domain has been resumed from suspend.

0 commit comments

Comments
 (0)