Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 1 addition & 12 deletions qubes/tests/vm/qubesvm.py
Original file line number Diff line number Diff line change
Expand Up @@ -2457,8 +2457,6 @@ def test_620_qdb_standalone(
"/qubes-iptables-header": iptables_header,
"/qubes-service/qubes-update-check": "0",
"/qubes-service/meminfo-writer": "1",
"/connected-ips": "",
"/connected-ips6": "",
}

self.assertEqual(test_qubesdb.data, data)
Expand Down Expand Up @@ -2550,8 +2548,6 @@ def test_621_qdb_vm_with_network(
"/qubes-gui-enabled": "False",
"/qubes-primary-dns": "10.139.1.1",
"/qubes-secondary-dns": "10.139.1.2",
"/connected-ips": "",
"/connected-ips6": "",
}

with self.subTest("ipv4"):
Expand Down Expand Up @@ -2608,6 +2604,7 @@ def test_621_qdb_vm_with_network(
expected["/qubes-firewall/10.137.0.3/0000"] = "action=accept"
expected["/qubes-firewall/10.137.0.3/policy"] = "drop"
expected["/connected-ips"] = "10.137.0.3"
expected["/connected-ips6"] = ""

with unittest.mock.patch(
"qubes.vm.qubesvm.QubesVM.is_running", lambda _: True
Expand Down Expand Up @@ -2691,8 +2688,6 @@ def test_622_qdb_guivm_keyboard_layout(
"/qubes-iptables-header": unittest.mock.ANY,
"/qubes-service/qubes-update-check": "0",
"/qubes-service/meminfo-writer": "1",
"/connected-ips": "",
"/connected-ips6": "",
},
)

Expand Down Expand Up @@ -2750,8 +2745,6 @@ def test_623_qdb_audiovm(self, mock_qubesdb, mock_urandom, mock_timezone):
"/qubes-iptables-header": unittest.mock.ANY,
"/qubes-service/qubes-update-check": "0",
"/qubes-service/meminfo-writer": "1",
"/connected-ips": "",
"/connected-ips6": "",
},
)

Expand Down Expand Up @@ -2820,8 +2813,6 @@ def test_624_qdb_audiovm_change_to_new_and_none(
"/qubes-iptables-header": unittest.mock.ANY,
"/qubes-service/qubes-update-check": "0",
"/qubes-service/meminfo-writer": "1",
"/connected-ips": "",
"/connected-ips6": "",
}

with self.subTest("default"):
Expand Down Expand Up @@ -2926,8 +2917,6 @@ def test_626_qdb_keyboard_layout_change(
"/qubes-iptables-header": unittest.mock.ANY,
"/qubes-service/qubes-update-check": "0",
"/qubes-service/meminfo-writer": "1",
"/connected-ips": "",
"/connected-ips6": "",
}

with self.subTest("default"):
Expand Down
10 changes: 10 additions & 0 deletions qubes/vm/mix/dvmtemplate.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,8 @@ def on_domain_loaded(self, event) -> None:
"""
# pylint: disable=unused-argument
assert isinstance(self, qubes.vm.BaseVM)
if not getattr(self, "template_for_dispvms"):
return
changes = False
# Began preloading, host rebooted, autostart script didn't run yet.
old_preload = self.get_feat_preload()
Expand Down Expand Up @@ -131,6 +133,8 @@ def __on_domain_pre_start(self, event, **kwargs) -> None:
@qubes.events.handler("domain-remove-from-disk")
async def on_dvmtemplate_remove_from_disk(self, event, **kwargs):
# pylint: disable=unused-argument
if not getattr(self, "template_for_dispvms"):
return
preloads = [disp for disp in self.dispvms if disp.is_preload]
if not preloads:
return
Expand All @@ -148,13 +152,17 @@ async def on_dvmtemplate_domain_shutdown(self, _event, **_kwargs) -> None:
"""
Refresh preloaded disposables on shutdown.
"""
if not getattr(self, "template_for_dispvms"):
return
self.refresh_outdated_preload()

@qubes.events.handler("property-reset:*", "property-set:*")
def on_dvmtemplate_property_changed(self, _event, name, **_kwargs) -> None:
"""
Refresh preloaded disposables if property affects the disposable.
"""
if not getattr(self, "template_for_dispvms"):
return
if name not in qubes.vm.dispvm.PRELOAD_OUTDATED_IGNORED_PROPERTIES:
self.refresh_outdated_preload(delay=30)

Expand Down Expand Up @@ -407,6 +415,8 @@ def __on_pre_property_set_template(
property.
"""
# pylint: disable=unused-argument
if not getattr(self, "template_for_dispvms"):
return
if newvalue == oldvalue:
return
dependencies = [
Expand Down
9 changes: 9 additions & 0 deletions qubes/vm/mix/net.py
Original file line number Diff line number Diff line change
Expand Up @@ -294,6 +294,8 @@ def on_domain_load_netvm_loop_check(self, event):
# pylint: disable=unused-argument
# make sure there are no netvm loops - which could cause qubesd
# looping infinitely
if not self.netvm:
return
if self is self.netvm:
self.log.error(
"vm '%s' network-connected to itself, breaking the "
Expand Down Expand Up @@ -338,6 +340,9 @@ async def on_domain_started_net(self, event, **kwargs):
if self.netvm:
self.netvm.reload_firewall_for_vm(self) # pylint: disable=no-member

if not self.provides_network:
return

for vm in self.connected_vms:
if not vm.is_running() or vm.is_paused():
continue
Expand Down Expand Up @@ -409,6 +414,8 @@ def on_domain_pre_shutdown(self, event, force=False):
If `force` is `True` tries to detach network interfaces of connected
vms
""" # pylint: disable=unused-argument
if not self.provides_network:
return

connected_vms = [
vm
Expand Down Expand Up @@ -741,6 +748,8 @@ def on_property_set_provides(self, _event, name, newvalue, oldvalue=None):
def on_domain_qdb_create(self, event):
"""Fills the QubesDB with firewall entries."""
# pylint: disable=unused-argument
if not self.provides_network:
return

# Keep the following in sync with on_firewall_changed.
self.reload_connected_ips()
Expand Down