Refactor documentation structure and improve validation checks; update VM state handling and error management.

This commit is contained in:
2026-09-09 17:47:50 +05:30
parent d8a25209b9
commit ee26962902
9 changed files with 86 additions and 31 deletions
+26 -3
View File
@@ -86,7 +86,7 @@ class StateStoreTests(unittest.TestCase):
self.assertIsNone(vm.network)
self.assertIsNone(vm.bridge)
self.assertFalse(vm.disk_ready)
self.assertFalse(vm.runtime_owned)
self.assertTrue(vm.runtime_owned)
self.assertFalse(vm.tap_owned)
self.assertFalse(vm.spawn_pending)
self.assertEqual(vm.updated_at, vm.created_at)
@@ -103,6 +103,8 @@ class StateStoreTests(unittest.TestCase):
self.assertEqual(persisted["next_mac_index"], 2)
self.assertEqual(persisted["vms"]["vm-test"]["status"], "stopped")
self.assertIsNone(persisted["vms"]["vm-test"]["ports"])
self.assertIs(persisted["vms"]["vm-test"]["runtime_owned"], True)
self.assertIs(persisted["vms"]["vm-test"]["disk_ready"], False)
def test_round_trip_preserves_policy_ownership_and_recovery_fields(self) -> None:
for ports in (None, (), (PortRule(22), PortRule(8080, "http"))):
@@ -258,8 +260,8 @@ class DomainStateTests(unittest.TestCase):
("stopped", "/tmp/rootfs.ext4", None, (True, True, False)),
("error", "/tmp/rootfs.ext4", 123, (False, True, True)),
("starting", "/tmp/rootfs.ext4", None, (False, True, False)),
("running", "", 123, (False, False, True)),
("unknown", "", None, (False, False, False)),
("running", "", 123, (False, True, True)),
("unknown", "", None, (False, True, False)),
)
for status, disk, pid, expected in cases:
with self.subTest(status=status, disk=disk, pid=pid):
@@ -270,6 +272,27 @@ class DomainStateTests(unittest.TestCase):
self.assertEqual((vm.disk_ready, vm.runtime_owned, vm.tap_owned), expected)
self.assertIsNone(vm.ports)
def test_empty_disk_legacy_runtime_is_owned_but_explicit_false_is_respected(self) -> None:
for disk_fields in ({}, {"disk": ""}):
with self.subTest(disk_fields=disk_fields):
raw = replace(make_vm(), status="stopped").to_dict()
for field in ("disk", "ports", "disk_ready", "runtime_owned"):
raw.pop(field)
raw.update(disk_fields)
legacy = VmRecord.from_dict(raw)
self.assertEqual(legacy.disk, "")
self.assertIs(legacy.runtime_owned, True)
self.assertIs(legacy.disk_ready, False)
self.assertIsNone(legacy.ports)
self.assertEqual(VmRecord.from_dict(legacy.to_dict()), legacy)
new = VmRecord.from_dict({**raw, "ports": [], "runtime_owned": False})
self.assertIs(new.runtime_owned, False)
self.assertIs(new.disk_ready, False)
self.assertEqual(new.ports, ())
self.assertEqual(VmRecord.from_dict(new.to_dict()), new)
def test_missing_spawn_pending_recovers_only_a_legacy_spawning_operation(self) -> None:
for operation in (None, "spawning", "configuring", "stopping", "policy"):
with self.subTest(operation=operation):