Skip to content

Commit a6e8a0d

Browse files
committed
Skip events from mixins when unnecessary
Mixins are loaded to other classes, which means that these events are called on a varied number of qubes even when it is unnecessary.
1 parent 71d268f commit a6e8a0d

2 files changed

Lines changed: 19 additions & 0 deletions

File tree

qubes/vm/mix/dvmtemplate.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ def on_domain_loaded(self, event) -> None:
6262
"""
6363
# pylint: disable=unused-argument
6464
assert isinstance(self, qubes.vm.BaseVM)
65+
if not getattr(self, "template_for_dispvms"):
66+
return
6567
changes = False
6668
# Began preloading, host rebooted, autostart script didn't run yet.
6769
old_preload = self.get_feat_preload()
@@ -131,6 +133,8 @@ def __on_domain_pre_start(self, event, **kwargs) -> None:
131133
@qubes.events.handler("domain-remove-from-disk")
132134
async def on_dvmtemplate_remove_from_disk(self, event, **kwargs):
133135
# pylint: disable=unused-argument
136+
if not getattr(self, "template_for_dispvms"):
137+
return
134138
preloads = [disp for disp in self.dispvms if disp.is_preload]
135139
if not preloads:
136140
return
@@ -148,13 +152,17 @@ async def on_dvmtemplate_domain_shutdown(self, _event, **_kwargs) -> None:
148152
"""
149153
Refresh preloaded disposables on shutdown.
150154
"""
155+
if not getattr(self, "template_for_dispvms"):
156+
return
151157
self.refresh_outdated_preload()
152158

153159
@qubes.events.handler("property-reset:*", "property-set:*")
154160
def on_dvmtemplate_property_changed(self, _event, name, **_kwargs) -> None:
155161
"""
156162
Refresh preloaded disposables if property affects the disposable.
157163
"""
164+
if not getattr(self, "template_for_dispvms"):
165+
return
158166
if name not in qubes.vm.dispvm.PRELOAD_OUTDATED_IGNORED_PROPERTIES:
159167
self.refresh_outdated_preload(delay=30)
160168

@@ -407,6 +415,8 @@ def __on_pre_property_set_template(
407415
property.
408416
"""
409417
# pylint: disable=unused-argument
418+
if not getattr(self, "template_for_dispvms"):
419+
return
410420
if newvalue == oldvalue:
411421
return
412422
dependencies = [

qubes/vm/mix/net.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -294,6 +294,8 @@ def on_domain_load_netvm_loop_check(self, event):
294294
# pylint: disable=unused-argument
295295
# make sure there are no netvm loops - which could cause qubesd
296296
# looping infinitely
297+
if not self.netvm:
298+
return
297299
if self is self.netvm:
298300
self.log.error(
299301
"vm '%s' network-connected to itself, breaking the "
@@ -338,6 +340,9 @@ async def on_domain_started_net(self, event, **kwargs):
338340
if self.netvm:
339341
self.netvm.reload_firewall_for_vm(self) # pylint: disable=no-member
340342

343+
if not self.provides_network:
344+
return
345+
341346
for vm in self.connected_vms:
342347
if not vm.is_running() or vm.is_paused():
343348
continue
@@ -409,6 +414,8 @@ def on_domain_pre_shutdown(self, event, force=False):
409414
If `force` is `True` tries to detach network interfaces of connected
410415
vms
411416
""" # pylint: disable=unused-argument
417+
if not self.provides_network:
418+
return
412419

413420
connected_vms = [
414421
vm
@@ -741,6 +748,8 @@ def on_property_set_provides(self, _event, name, newvalue, oldvalue=None):
741748
def on_domain_qdb_create(self, event):
742749
"""Fills the QubesDB with firewall entries."""
743750
# pylint: disable=unused-argument
751+
if not self.provides_network:
752+
return
744753

745754
# Keep the following in sync with on_firewall_changed.
746755
self.reload_connected_ips()

0 commit comments

Comments
 (0)