Skip to content
29 changes: 2 additions & 27 deletions qubes/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -1972,7 +1972,7 @@ def register_event_handlers(self, old_connection=None):
if not vm.is_running():
vm.on_libvirt_domain_stopped()

def _domain_event_callback(self, _conn, domain, event, _detail, _opaque):
def _domain_event_callback(self, _conn, domain, event, detail, _opaque):
"""Generic libvirt event handler (virConnectDomainEventCallback),
translate libvirt event into qubes.events.
"""
Expand All @@ -1984,32 +1984,7 @@ def _domain_event_callback(self, _conn, domain, event, _detail, _opaque):
except KeyError:
# ignore events for unknown domains
return

if event == libvirt.VIR_DOMAIN_EVENT_STOPPED:
vm.on_libvirt_domain_stopped()
elif event == libvirt.VIR_DOMAIN_EVENT_SUSPENDED:
try:
vm.fire_event("domain-paused")
except Exception: # pylint: disable=broad-except
self.log.exception(
"Uncaught exception from domain-paused handler "
"for domain %s",
vm.name,
)
elif event == libvirt.VIR_DOMAIN_EVENT_RESUMED:
try:
if getattr(vm, "skip_unpause_event", False):
vm.skip_unpause_event = False
else:
asyncio.ensure_future(
vm.fire_event_async("domain-unpaused")
)
except Exception: # pylint: disable=broad-except
self.log.exception(
"Uncaught exception from domain-unpaused handler "
"for domain %s",
vm.name,
)
vm.on_libvirt_domain_lifecycle(event=event, detail=detail)

@qubes.events.handler("domain-pre-delete")
def on_domain_pre_deleted(self, event, vm):
Expand Down
6 changes: 4 additions & 2 deletions qubes/tests/api_admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -5133,9 +5133,11 @@ async def coroutine_mock(*args, **kwargs):
self.assertEventFired(self.emitter, "domain-volume-import-end")

def test_900_current_state_default(self):
value = self.call_mgmt_func(b"admin.vm.CurrentState", b"test-vm1")
vm = self.app.domains["test-vm1"]
value = self.call_mgmt_func(b"admin.vm.CurrentState", vm.name.encode())
maxmem = vm.maxmem * 1024
self.assertEqual(
value, "mem=0 mem_static_max=0 cputime=0 power_state=Halted"
value, f"mem=0 mem_static_max={maxmem} cputime=0 power_state=Halted"
)

def test_901_current_state_changed(self):
Expand Down
Loading