Refactor documentation structure and improve validation checks; update VM state handling and error management.
This commit is contained in:
@@ -396,7 +396,7 @@ class NetworkManagerTests(unittest.TestCase):
|
||||
self.runner.links = {self.vm.tap: {**self.tap_link, "linkinfo": info}}
|
||||
self.runner.calls.clear()
|
||||
self.vm.tap_owned = True
|
||||
with self.assertRaises(UvmError):
|
||||
with self.assertRaises(ConflictError):
|
||||
getattr(self.network, operation)(self.vm)
|
||||
self.assertEqual(self.runner.calls, [LINK_INVENTORY])
|
||||
self.assertIs(self.vm.tap_owned, True)
|
||||
|
||||
+26
-3
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user