Merge ~ack/maas:1912727-2.9 into maas:2.9

Proposed by Alberto Donato
Status: Merged
Approved by: Alberto Donato
Approved revision: 6d704acd093a30c90ec9fde0ec3ce2b9a00f1a90
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~ack/maas:1912727-2.9
Merge into: maas:2.9
Diff against target: 110 lines (+45/-27)
2 files modified
src/maasserver/websockets/handlers/pod.py (+29/-27)
src/maasserver/websockets/handlers/tests/test_pod.py (+16/-0)
Reviewer Review Type Date Requested Status
MAAS Lander Needs Fixing
Alberto Donato (community) Approve
Review via email: mp+398125@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
Alberto Donato (ack) :
review: Approve
Revision history for this message
MAAS Lander (maas-lander) wrote :
Revision history for this message
MAAS Lander (maas-lander) wrote :

UNIT TESTS
-b 1912727-2.9 lp:~ack/maas/+git/maas into -b 2.9 lp:~maas-committers/maas

STATUS: FAILED
LOG: http://maas-ci.internal:8080/job/maas/job/branch-tester/9234/console
COMMIT: 795387887bf5b531b7ed0c8cfe31d565daf3ecbf

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

UNIT TESTS
-b 1912727-2.9 lp:~ack/maas/+git/maas into -b 2.9 lp:~maas-committers/maas

STATUS: FAILED
LOG: http://maas-ci.internal:8080/job/maas/job/branch-tester/9236/console
COMMIT: 6d704acd093a30c90ec9fde0ec3ce2b9a00f1a90

review: Needs Fixing

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 bfe3676..686f9a9 100644
--- a/src/maasserver/websockets/handlers/pod.py
+++ b/src/maasserver/websockets/handlers/pod.py
@@ -97,33 +97,37 @@ class PodHandler(TimestampedModelHandler):
97 """Add extra fields to `data`."""97 """Add extra fields to `data`."""
98 if self.user.is_superuser:98 if self.user.is_superuser:
99 data.update(obj.power_parameters)99 data.update(obj.power_parameters)
100 data["type"] = obj.power_type100 data.update(
101 data["total"] = self.dehydrate_total(obj)101 {
102 data["used"] = self.dehydrate_used(obj)102 "type": obj.power_type,
103 data["available"] = self.dehydrate_available(obj)103 "total": self.dehydrate_total(obj),
104 data["composed_machines_count"] = obj.node_set.filter(104 "used": self.dehydrate_used(obj),
105 node_type=NODE_TYPE.MACHINE105 "available": self.dehydrate_available(obj),
106 ).count()106 "composed_machines_count": obj.node_set.filter(
107 data["owners_count"] = (107 node_type=NODE_TYPE.MACHINE
108 obj.node_set.exclude(owner=None)108 ).count(),
109 .values_list("owner")109 "owners_count": (
110 .distinct()110 obj.node_set.exclude(owner=None)
111 .count()111 .values_list("owner")
112 .distinct()
113 .count()
114 ),
115 "hints": self.dehydrate_hints(obj.hints),
116 "storage_pools": [
117 self.dehydrate_storage_pool(pool)
118 for pool in obj.storage_pools.all()
119 ],
120 "default_storage_pool": (
121 obj.default_storage_pool.pool_id
122 if obj.default_storage_pool
123 else None
124 ),
125 "host": obj.host.system_id if obj.host else None,
126 "numa_pinning": self.dehydrate_numa_pinning(obj),
127 }
112 )128 )
113 data["hints"] = self.dehydrate_hints(obj.hints)
114 storage_pools = obj.storage_pools.all()
115 if len(storage_pools) > 0:
116 pools_data = []
117 for pool in storage_pools:
118 pools_data.append(self.dehydrate_storage_pool(pool))
119 data["storage_pools"] = pools_data
120 data["default_storage_pool"] = obj.default_storage_pool.pool_id
121 if obj.host is not None:
122 data["host"] = obj.host.system_id
123 else:
124 data["host"] = None
125 if not for_list:129 if not for_list:
126 if obj.host is not None:130 if obj.host:
127 data["attached_vlans"] = list(131 data["attached_vlans"] = list(
128 obj.host.interface_set.all().values_list(132 obj.host.interface_set.all().values_list(
129 "vlan_id", flat=True133 "vlan_id", flat=True
@@ -141,8 +145,6 @@ class PodHandler(TimestampedModelHandler):
141 data["attached_vlans"] = []145 data["attached_vlans"] = []
142 data["boot_vlans"] = []146 data["boot_vlans"] = []
143147
144 data["numa_pinning"] = self.dehydrate_numa_pinning(obj)
145
146 if self.user.has_perm(PodPermission.compose, obj):148 if self.user.has_perm(PodPermission.compose, obj):
147 data["permissions"].append("compose")149 data["permissions"].append("compose")
148150
diff --git a/src/maasserver/websockets/handlers/tests/test_pod.py b/src/maasserver/websockets/handlers/tests/test_pod.py
index 6137c38..f4e857f 100644
--- a/src/maasserver/websockets/handlers/tests/test_pod.py
+++ b/src/maasserver/websockets/handlers/tests/test_pod.py
@@ -14,6 +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 PodStoragePool
17from maasserver.models.virtualmachine import MB, VirtualMachineInterface18from maasserver.models.virtualmachine import MB, VirtualMachineInterface
18from maasserver.testing.factory import factory19from maasserver.testing.factory import factory
19from maasserver.testing.testcase import MAASTransactionServerTestCase20from maasserver.testing.testcase import MAASTransactionServerTestCase
@@ -226,6 +227,21 @@ class TestPodHandler(MAASTransactionServerTestCase):
226 ],227 ],
227 )228 )
228229
230 def test_get_with_pod_host_no_storage_pools(self):
231 admin = factory.make_admin()
232 handler = PodHandler(admin, {}, None)
233 node = factory.make_Node()
234 pod = self.make_pod_with_hints(
235 pod_type="lxd",
236 host=node,
237 )
238 pod.default_storage_pool = None
239 pod.save()
240 PodStoragePool.objects.all().delete()
241 result = handler.get({"id": pod.id})
242 self.assertIsNone(result["default_storage_pool"])
243 self.assertEqual(result["storage_pools"], [])
244
229 def test_get_host_interfaces_no_sriov(self):245 def test_get_host_interfaces_no_sriov(self):
230 admin = factory.make_admin()246 admin = factory.make_admin()
231 handler = PodHandler(admin, {}, None)247 handler = PodHandler(admin, {}, None)

Subscribers

People subscribed via source and target branches