Skip to content

Commit 8f7a2db

Browse files
committed
Merge remote-tracking branch 'origin/pr/778'
* origin/pr/778: Skip events from mixins when unnecessary
2 parents 22e8087 + 4bb6e66 commit 8f7a2db

3 files changed

Lines changed: 20 additions & 12 deletions

File tree

qubes/tests/vm/qubesvm.py

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2457,8 +2457,6 @@ def test_620_qdb_standalone(
24572457
"/qubes-iptables-header": iptables_header,
24582458
"/qubes-service/qubes-update-check": "0",
24592459
"/qubes-service/meminfo-writer": "1",
2460-
"/connected-ips": "",
2461-
"/connected-ips6": "",
24622460
}
24632461

24642462
self.assertEqual(test_qubesdb.data, data)
@@ -2550,8 +2548,6 @@ def test_621_qdb_vm_with_network(
25502548
"/qubes-gui-enabled": "False",
25512549
"/qubes-primary-dns": "10.139.1.1",
25522550
"/qubes-secondary-dns": "10.139.1.2",
2553-
"/connected-ips": "",
2554-
"/connected-ips6": "",
25552551
}
25562552

25572553
with self.subTest("ipv4"):
@@ -2608,6 +2604,7 @@ def test_621_qdb_vm_with_network(
26082604
expected["/qubes-firewall/10.137.0.3/0000"] = "action=accept"
26092605
expected["/qubes-firewall/10.137.0.3/policy"] = "drop"
26102606
expected["/connected-ips"] = "10.137.0.3"
2607+
expected["/connected-ips6"] = ""
26112608

26122609
with unittest.mock.patch(
26132610
"qubes.vm.qubesvm.QubesVM.is_running", lambda _: True
@@ -2691,8 +2688,6 @@ def test_622_qdb_guivm_keyboard_layout(
26912688
"/qubes-iptables-header": unittest.mock.ANY,
26922689
"/qubes-service/qubes-update-check": "0",
26932690
"/qubes-service/meminfo-writer": "1",
2694-
"/connected-ips": "",
2695-
"/connected-ips6": "",
26962691
},
26972692
)
26982693

@@ -2750,8 +2745,6 @@ def test_623_qdb_audiovm(self, mock_qubesdb, mock_urandom, mock_timezone):
27502745
"/qubes-iptables-header": unittest.mock.ANY,
27512746
"/qubes-service/qubes-update-check": "0",
27522747
"/qubes-service/meminfo-writer": "1",
2753-
"/connected-ips": "",
2754-
"/connected-ips6": "",
27552748
},
27562749
)
27572750

@@ -2820,8 +2813,6 @@ def test_624_qdb_audiovm_change_to_new_and_none(
28202813
"/qubes-iptables-header": unittest.mock.ANY,
28212814
"/qubes-service/qubes-update-check": "0",
28222815
"/qubes-service/meminfo-writer": "1",
2823-
"/connected-ips": "",
2824-
"/connected-ips6": "",
28252816
}
28262817

28272818
with self.subTest("default"):
@@ -2926,8 +2917,6 @@ def test_626_qdb_keyboard_layout_change(
29262917
"/qubes-iptables-header": unittest.mock.ANY,
29272918
"/qubes-service/qubes-update-check": "0",
29282919
"/qubes-service/meminfo-writer": "1",
2929-
"/connected-ips": "",
2930-
"/connected-ips6": "",
29312920
}
29322921

29332922
with self.subTest("default"):

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()
@@ -134,6 +136,8 @@ def __on_domain_pre_start(self, event, **kwargs) -> None:
134136
@qubes.events.handler("domain-remove-from-disk")
135137
async def on_dvmtemplate_remove_from_disk(self, event, **kwargs):
136138
# pylint: disable=unused-argument
139+
if not getattr(self, "template_for_dispvms"):
140+
return
137141
preloads = [disp for disp in self.dispvms if disp.is_preload]
138142
if not preloads:
139143
return
@@ -151,13 +155,17 @@ async def on_dvmtemplate_domain_shutdown(self, _event, **_kwargs) -> None:
151155
"""
152156
Refresh preloaded disposables on shutdown.
153157
"""
158+
if not getattr(self, "template_for_dispvms"):
159+
return
154160
self.refresh_outdated_preload()
155161

156162
@qubes.events.handler("property-reset:*", "property-set:*")
157163
def on_dvmtemplate_property_changed(self, _event, name, **_kwargs) -> None:
158164
"""
159165
Refresh preloaded disposables if property affects the disposable.
160166
"""
167+
if not getattr(self, "template_for_dispvms"):
168+
return
161169
if name not in qubes.vm.dispvm.PRELOAD_OUTDATED_IGNORED_PROPERTIES:
162170
self.refresh_outdated_preload(delay=30)
163171

@@ -410,6 +418,8 @@ def __on_pre_property_set_template(
410418
property.
411419
"""
412420
# pylint: disable=unused-argument
421+
if not getattr(self, "template_for_dispvms"):
422+
return
413423
if newvalue == oldvalue:
414424
return
415425
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
@@ -740,6 +747,8 @@ def on_property_set_provides(self, _event, name, newvalue, oldvalue=None):
740747
def on_domain_qdb_create(self, event):
741748
"""Fills the QubesDB with firewall entries."""
742749
# pylint: disable=unused-argument
750+
if not self.provides_network:
751+
return
743752

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

0 commit comments

Comments
 (0)