Merge ~adam-collard/maas:vmfs7-websocket into maas:master

Proposed by Adam Collard
Status: Merged
Approved by: Adam Collard
Approved revision: 294873a1fa79d234137cbf05f8074398140d4178
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~adam-collard/maas:vmfs7-websocket
Merge into: maas:master
Diff against target: 85 lines (+42/-4)
2 files modified
src/maasserver/websockets/handlers/node.py (+8/-3)
src/maasserver/websockets/handlers/tests/test_machine.py (+34/-1)
Reviewer Review Type Date Requested Status
Alberto Donato (community) Approve
MAAS Lander Needs Fixing
Review via email: mp+407512@code.launchpad.net

Commit message

Special case VMFS7 layout too.

To post a comment you must log in.
Revision history for this message
MAAS Lander (maas-lander) wrote :

UNIT TESTS
-b vmfs7-websocket lp:~adam-collard/maas/+git/maas into -b master lp:~maas-committers/maas

STATUS: FAILED
LOG: http://maas-ci.internal:8080/job/maas/job/branch-tester/10722/console
COMMIT: 294873a1fa79d234137cbf05f8074398140d4178

review: Needs Fixing
Revision history for this message
Alberto Donato (ack) wrote :

LGTM

review: Approve
Revision history for this message
MAAS Lander (maas-lander) wrote :

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/src/maasserver/websockets/handlers/node.py b/src/maasserver/websockets/handlers/node.py
2index 1417834..eff6132 100644
3--- a/src/maasserver/websockets/handlers/node.py
4+++ b/src/maasserver/websockets/handlers/node.py
5@@ -393,12 +393,17 @@ class NodeHandler(TimestampedModelHandler):
6 # partition. VMware ESXi does not directly mount the partitions
7 # used. As MAAS can't model that inject a place holder so the
8 # UI knows that these partitions are in use.
9- if detected_layout == "vmfs6":
10+ datastore_partition_for_layout = {
11+ "vmfs6": "-part3",
12+ "vmfs7": "-part8",
13+ }.get(detected_layout)
14+ if datastore_partition_for_layout is not None:
15 for disk in data["disks"]:
16 if disk["id"] == layout_bd.id:
17 for partition in disk["partitions"]:
18- if partition["name"].endswith("-part3"):
19- # Partition 3 is for the default datastore.
20+ if partition["name"].endswith(
21+ datastore_partition_for_layout
22+ ):
23 # This partition may be modified by the
24 # user.
25 continue
26diff --git a/src/maasserver/websockets/handlers/tests/test_machine.py b/src/maasserver/websockets/handlers/tests/test_machine.py
27index b13f953..90c871f 100644
28--- a/src/maasserver/websockets/handlers/tests/test_machine.py
29+++ b/src/maasserver/websockets/handlers/tests/test_machine.py
30@@ -71,6 +71,7 @@ from maasserver.storage_layouts import (
31 get_applied_storage_layout_for_node,
32 get_storage_layout_choices,
33 VMFS6StorageLayout,
34+ VMFS7StorageLayout,
35 )
36 from maasserver.testing.architecture import make_usable_architecture
37 from maasserver.testing.factory import factory
38@@ -825,7 +826,7 @@ class TestMachineHandler(MAASServerTestCase):
39 handler.dehydrate(node, data)
40 self.assertEqual(data["pod"], {"id": pod.id, "name": pod.name})
41
42- def test_dehydrate_with_vmfs_layout_sets_reserved(self):
43+ def test_dehydrate_with_vmfs6_layout_sets_reserved(self):
44 owner = factory.make_User()
45 node = factory.make_Node(with_boot_disk=False)
46 node.boot_disk = factory.make_PhysicalBlockDevice(
47@@ -857,6 +858,38 @@ class TestMachineHandler(MAASServerTestCase):
48 partition["filesystem"],
49 )
50
51+ def test_dehydrate_with_vmfs7_layout_sets_reserved(self):
52+ owner = factory.make_User()
53+ node = factory.make_Node(with_boot_disk=False)
54+ node.boot_disk = factory.make_PhysicalBlockDevice(
55+ node=node, size=LARGE_BLOCK_DEVICE
56+ )
57+ layout = VMFS7StorageLayout(node)
58+ layout.configure()
59+ handler = MachineHandler(owner, {}, None)
60+ for disk in handler.dehydrate(node, {})["disks"]:
61+ if disk["id"] == node.boot_disk.id:
62+ for partition in disk["partitions"]:
63+ if partition["name"].endswith("-part8"):
64+ self.assertEqual(
65+ "VMFS extent for datastore1", partition["used_for"]
66+ )
67+ else:
68+ self.assertEqual(
69+ "VMware ESXi OS partition", partition["used_for"]
70+ )
71+ self.assertDictEqual(
72+ {
73+ "id": -1,
74+ "label": "RESERVED",
75+ "mount_point": "RESERVED",
76+ "mount_options": None,
77+ "fstype": None,
78+ "is_format_fstype": False,
79+ },
80+ partition["filesystem"],
81+ )
82+
83 def test_dehydrate_power_parameters_returns_None_when_empty(self):
84 owner = factory.make_User()
85 handler = MachineHandler(owner, {}, None)

Subscribers

People subscribed via source and target branches