Merge ~ack/maas:pod-websocket-always-storage-pools into maas:master

Proposed by Alberto Donato
Status: Merged
Approved by: Alberto Donato
Approved revision: a775c3f3623dc7b48755eff1219794307a3e353f
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~ack/maas:pod-websocket-always-storage-pools
Merge into: maas:master
Diff against target: 111 lines (+45/-28)
2 files modified
src/maasserver/websockets/handlers/pod.py (+29/-27)
src/maasserver/websockets/handlers/tests/test_pod.py (+16/-1)
Reviewer Review Type Date Requested Status
Adam Collard (community) Approve
MAAS Lander Approve
Review via email: mp+397726@code.launchpad.net

Commit message

LP: #1912727 - always include default_storage_pool/storage_pools in Pod websocket

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

UNIT TESTS
-b pod-websocket-always-storage-pools lp:~ack/maas/+git/maas into -b master lp:~maas-committers/maas

STATUS: SUCCESS
COMMIT: a75de86dfe63204d8f7b61ecd7b6e7b7908b2986

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

UNIT TESTS
-b pod-websocket-always-storage-pools lp:~ack/maas/+git/maas into -b master lp:~maas-committers/maas

STATUS: SUCCESS
COMMIT: a775c3f3623dc7b48755eff1219794307a3e353f

review: Approve
Revision history for this message
Adam Collard (adam-collard) wrote :

+1

review: Approve

There was an error fetching revisions from git servers. Please try again in a few minutes. If the problem persists, contact Launchpad support.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
diff --git a/src/maasserver/websockets/handlers/pod.py b/src/maasserver/websockets/handlers/pod.py
index ab9b876..8180a69 100644
--- a/src/maasserver/websockets/handlers/pod.py
+++ b/src/maasserver/websockets/handlers/pod.py
@@ -102,33 +102,37 @@ class PodHandler(TimestampedModelHandler):
102 """Add extra fields to `data`."""102 """Add extra fields to `data`."""
103 if self.user.is_superuser:103 if self.user.is_superuser:
104 data.update(obj.power_parameters)104 data.update(obj.power_parameters)
105 data["type"] = obj.power_type105 data.update(
106 data["total"] = self.dehydrate_total(obj)106 {
107 data["used"] = self.dehydrate_used(obj)107 "type": obj.power_type,
108 data["available"] = self.dehydrate_available(obj)108 "total": self.dehydrate_total(obj),
109 data["composed_machines_count"] = obj.node_set.filter(109 "used": self.dehydrate_used(obj),
110 node_type=NODE_TYPE.MACHINE110 "available": self.dehydrate_available(obj),
111 ).count()111 "composed_machines_count": obj.node_set.filter(
112 data["owners_count"] = (112 node_type=NODE_TYPE.MACHINE
113 obj.node_set.exclude(owner=None)113 ).count(),
114 .values_list("owner")114 "owners_count": (
115 .distinct()115 obj.node_set.exclude(owner=None)
116 .count()116 .values_list("owner")
117 .distinct()
118 .count()
119 ),
120 "hints": self.dehydrate_hints(obj.hints),
121 "storage_pools": [
122 self.dehydrate_storage_pool(pool)
123 for pool in obj.storage_pools.all()
124 ],
125 "default_storage_pool": (
126 obj.default_storage_pool.pool_id
127 if obj.default_storage_pool
128 else None
129 ),
130 "host": obj.host.system_id if obj.host else None,
131 "numa_pinning": self.dehydrate_numa_pinning(obj),
132 }
117 )133 )
118 data["hints"] = self.dehydrate_hints(obj.hints)
119 storage_pools = obj.storage_pools.all()
120 if len(storage_pools) > 0:
121 pools_data = []
122 for pool in storage_pools:
123 pools_data.append(self.dehydrate_storage_pool(pool))
124 data["storage_pools"] = pools_data
125 data["default_storage_pool"] = obj.default_storage_pool.pool_id
126 if obj.host is not None:
127 data["host"] = obj.host.system_id
128 else:
129 data["host"] = None
130 if not for_list:134 if not for_list:
131 if obj.host is not None:135 if obj.host:
132 data["attached_vlans"] = list(136 data["attached_vlans"] = list(
133 obj.host.interface_set.filter(137 obj.host.interface_set.filter(
134 vlan_id__isnull=False138 vlan_id__isnull=False
@@ -146,8 +150,6 @@ class PodHandler(TimestampedModelHandler):
146 data["attached_vlans"] = []150 data["attached_vlans"] = []
147 data["boot_vlans"] = []151 data["boot_vlans"] = []
148152
149 data["numa_pinning"] = self.dehydrate_numa_pinning(obj)
150
151 if self.user.has_perm(PodPermission.compose, obj):153 if self.user.has_perm(PodPermission.compose, obj):
152 data["permissions"].append("compose")154 data["permissions"].append("compose")
153155
diff --git a/src/maasserver/websockets/handlers/tests/test_pod.py b/src/maasserver/websockets/handlers/tests/test_pod.py
index 9e91f34..f76be47 100644
--- a/src/maasserver/websockets/handlers/tests/test_pod.py
+++ b/src/maasserver/websockets/handlers/tests/test_pod.py
@@ -14,7 +14,7 @@ from twisted.internet.defer import inlineCallbacks, succeed
14from maasserver.enum import INTERFACE_TYPE14from maasserver.enum import INTERFACE_TYPE
15from maasserver.forms import pods15from maasserver.forms import pods
16from maasserver.forms.pods import PodForm16from maasserver.forms.pods import PodForm
17from maasserver.models import Pod17from maasserver.models import Pod, PodStoragePool
18from maasserver.models.virtualmachine import MB, VirtualMachineInterface18from maasserver.models.virtualmachine import MB, VirtualMachineInterface
19from maasserver.testing.factory import factory19from maasserver.testing.factory import factory
20from maasserver.testing.testcase import MAASTransactionServerTestCase20from maasserver.testing.testcase import MAASTransactionServerTestCase
@@ -228,6 +228,21 @@ class TestPodHandler(MAASTransactionServerTestCase):
228 ],228 ],
229 )229 )
230230
231 def test_get_with_pod_host_no_storage_pools(self):
232 admin = factory.make_admin()
233 handler = PodHandler(admin, {}, None)
234 node = factory.make_Node()
235 pod = self.make_pod_with_hints(
236 pod_type="lxd",
237 host=node,
238 )
239 pod.default_storage_pool = None
240 pod.save()
241 PodStoragePool.objects.all().delete()
242 result = handler.get({"id": pod.id})
243 self.assertIsNone(result["default_storage_pool"])
244 self.assertEqual(result["storage_pools"], [])
245
231 def test_get_with_pod_host_no_vlan(self):246 def test_get_with_pod_host_no_vlan(self):
232 admin = factory.make_admin()247 admin = factory.make_admin()
233 handler = PodHandler(admin, {}, None)248 handler = PodHandler(admin, {}, None)

Subscribers

People subscribed via source and target branches