Merge ~bjornt/maas:backport-bug-1811377 into maas:2.5

Proposed by Björn Tillenius
Status: Merged
Approved by: Björn Tillenius
Approved revision: 3879a16d447b897ee3bb3d1e6894981787be2dfe
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~bjornt/maas:backport-bug-1811377
Merge into: maas:2.5
Diff against target: 64 lines (+19/-5)
3 files modified
src/maasserver/websockets/handlers/machine.py (+1/-2)
src/maasserver/websockets/handlers/tests/test_controller.py (+1/-1)
src/maasserver/websockets/handlers/tests/test_machine.py (+17/-2)
Reviewer Review Type Date Requested Status
Björn Tillenius Approve
Review via email: mp+362116@code.launchpad.net

Commit message

Backport d651887adf44ef4cc78973cab2ed8c32f1ebf758 - LP: #1811377 - JS error in machine listing: TypeError: Cannot read property 'filter' of undefined

Always include ip_addresses when dehydrating a machine. Every information that
is available in the list needs to be there when viewing the object by itself.

To post a comment you must log in.
Revision history for this message
Björn Tillenius (bjornt) wrote :

Self-approving backport

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/src/maasserver/websockets/handlers/machine.py b/src/maasserver/websockets/handlers/machine.py
2index 0d7845b..f5b3f10 100644
3--- a/src/maasserver/websockets/handlers/machine.py
4+++ b/src/maasserver/websockets/handlers/machine.py
5@@ -221,8 +221,7 @@ class MachineHandler(NodeHandler):
6 data["pxe_mac_vendor"] = obj.get_pxe_mac_vendor()
7 data["power_type"] = obj.power_type
8 data["vlan"] = self.dehydrate_vlan(obj, boot_interface)
9- if for_list:
10- data["ip_addresses"] = self.dehydrate_all_ip_addresses(obj)
11+ data["ip_addresses"] = self.dehydrate_all_ip_addresses(obj)
12 else:
13 data["pxe_mac"] = data["pxe_mac_vendor"] = ""
14
15diff --git a/src/maasserver/websockets/handlers/tests/test_controller.py b/src/maasserver/websockets/handlers/tests/test_controller.py
16index 9fc748c..fc3368a 100644
17--- a/src/maasserver/websockets/handlers/tests/test_controller.py
18+++ b/src/maasserver/websockets/handlers/tests/test_controller.py
19@@ -133,7 +133,7 @@ class TestControllerHandler(MAASServerTestCase):
20 # number means regiond has to do more work slowing down its process
21 # and slowing down the client waiting for the response.
22 self.assertEqual(
23- queries, 31,
24+ queries, 35,
25 "Number of queries has changed; make sure this is expected.")
26
27 def test_get_form_class_for_create(self):
28diff --git a/src/maasserver/websockets/handlers/tests/test_machine.py b/src/maasserver/websockets/handlers/tests/test_machine.py
29index d8b2d33..b3cffe1 100644
30--- a/src/maasserver/websockets/handlers/tests/test_machine.py
31+++ b/src/maasserver/websockets/handlers/tests/test_machine.py
32@@ -316,8 +316,7 @@ class TestMachineHandler(MAASServerTestCase):
33 }
34 if boot_interface:
35 data["vlan"] = handler.dehydrate_vlan(node, boot_interface)
36- if for_list:
37- data["ip_addresses"] = handler.dehydrate_all_ip_addresses(node)
38+ data["ip_addresses"] = handler.dehydrate_all_ip_addresses(node)
39 bmc = node.bmc
40 if bmc is not None and bmc.bmc_type == BMC_TYPE.POD:
41 data['pod'] = {'id': bmc.id, 'name': bmc.name}
42@@ -1778,6 +1777,22 @@ class TestMachineHandler(MAASServerTestCase):
43 [handler.dehydrate_filesystem(filesystem)])
44 }))
45
46+ def test_get_includes_static_ip_addresses(self):
47+ user = factory.make_User()
48+ machine = factory.make_Machine(owner=user)
49+ [interface1, interface2] = [
50+ factory.make_Interface(INTERFACE_TYPE.PHYSICAL, node=machine)
51+ for _ in range(2)
52+ ]
53+ ip_address1 = factory.make_StaticIPAddress(interface=interface1)
54+ ip_address2 = factory.make_StaticIPAddress(interface=interface2)
55+ handler = MachineHandler(user, {}, None)
56+ dehydrated_machine = handler.get({"system_id": machine.system_id})
57+ dehydrated_ips = [
58+ info['ip'] for info in dehydrated_machine['ip_addresses']]
59+ self.assertEqual(
60+ sorted(dehydrated_ips), sorted([ip_address1.ip, ip_address2.ip]))
61+
62 def test_list(self):
63 user = factory.make_User()
64 node = factory.make_Node(status=NODE_STATUS.ALLOCATED, owner=user)

Subscribers

People subscribed via source and target branches