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
1diff --git a/src/maasserver/websockets/handlers/pod.py b/src/maasserver/websockets/handlers/pod.py
2index bfe3676..686f9a9 100644
3--- a/src/maasserver/websockets/handlers/pod.py
4+++ b/src/maasserver/websockets/handlers/pod.py
5@@ -97,33 +97,37 @@ class PodHandler(TimestampedModelHandler):
6 """Add extra fields to `data`."""
7 if self.user.is_superuser:
8 data.update(obj.power_parameters)
9- data["type"] = obj.power_type
10- data["total"] = self.dehydrate_total(obj)
11- data["used"] = self.dehydrate_used(obj)
12- data["available"] = self.dehydrate_available(obj)
13- data["composed_machines_count"] = obj.node_set.filter(
14- node_type=NODE_TYPE.MACHINE
15- ).count()
16- data["owners_count"] = (
17- obj.node_set.exclude(owner=None)
18- .values_list("owner")
19- .distinct()
20- .count()
21+ data.update(
22+ {
23+ "type": obj.power_type,
24+ "total": self.dehydrate_total(obj),
25+ "used": self.dehydrate_used(obj),
26+ "available": self.dehydrate_available(obj),
27+ "composed_machines_count": obj.node_set.filter(
28+ node_type=NODE_TYPE.MACHINE
29+ ).count(),
30+ "owners_count": (
31+ obj.node_set.exclude(owner=None)
32+ .values_list("owner")
33+ .distinct()
34+ .count()
35+ ),
36+ "hints": self.dehydrate_hints(obj.hints),
37+ "storage_pools": [
38+ self.dehydrate_storage_pool(pool)
39+ for pool in obj.storage_pools.all()
40+ ],
41+ "default_storage_pool": (
42+ obj.default_storage_pool.pool_id
43+ if obj.default_storage_pool
44+ else None
45+ ),
46+ "host": obj.host.system_id if obj.host else None,
47+ "numa_pinning": self.dehydrate_numa_pinning(obj),
48+ }
49 )
50- data["hints"] = self.dehydrate_hints(obj.hints)
51- storage_pools = obj.storage_pools.all()
52- if len(storage_pools) > 0:
53- pools_data = []
54- for pool in storage_pools:
55- pools_data.append(self.dehydrate_storage_pool(pool))
56- data["storage_pools"] = pools_data
57- data["default_storage_pool"] = obj.default_storage_pool.pool_id
58- if obj.host is not None:
59- data["host"] = obj.host.system_id
60- else:
61- data["host"] = None
62 if not for_list:
63- if obj.host is not None:
64+ if obj.host:
65 data["attached_vlans"] = list(
66 obj.host.interface_set.all().values_list(
67 "vlan_id", flat=True
68@@ -141,8 +145,6 @@ class PodHandler(TimestampedModelHandler):
69 data["attached_vlans"] = []
70 data["boot_vlans"] = []
71
72- data["numa_pinning"] = self.dehydrate_numa_pinning(obj)
73-
74 if self.user.has_perm(PodPermission.compose, obj):
75 data["permissions"].append("compose")
76
77diff --git a/src/maasserver/websockets/handlers/tests/test_pod.py b/src/maasserver/websockets/handlers/tests/test_pod.py
78index 6137c38..f4e857f 100644
79--- a/src/maasserver/websockets/handlers/tests/test_pod.py
80+++ b/src/maasserver/websockets/handlers/tests/test_pod.py
81@@ -14,6 +14,7 @@ from twisted.internet.defer import inlineCallbacks, succeed
82 from maasserver.enum import INTERFACE_TYPE
83 from maasserver.forms import pods
84 from maasserver.forms.pods import PodForm
85+from maasserver.models import PodStoragePool
86 from maasserver.models.virtualmachine import MB, VirtualMachineInterface
87 from maasserver.testing.factory import factory
88 from maasserver.testing.testcase import MAASTransactionServerTestCase
89@@ -226,6 +227,21 @@ class TestPodHandler(MAASTransactionServerTestCase):
90 ],
91 )
92
93+ def test_get_with_pod_host_no_storage_pools(self):
94+ admin = factory.make_admin()
95+ handler = PodHandler(admin, {}, None)
96+ node = factory.make_Node()
97+ pod = self.make_pod_with_hints(
98+ pod_type="lxd",
99+ host=node,
100+ )
101+ pod.default_storage_pool = None
102+ pod.save()
103+ PodStoragePool.objects.all().delete()
104+ result = handler.get({"id": pod.id})
105+ self.assertIsNone(result["default_storage_pool"])
106+ self.assertEqual(result["storage_pools"], [])
107+
108 def test_get_host_interfaces_no_sriov(self):
109 admin = factory.make_admin()
110 handler = PodHandler(admin, {}, None)

Subscribers

People subscribed via source and target branches