Merge ~mpontillo/maas:interface-params-websocket--bug-1801776 into maas:master

Proposed by Mike Pontillo
Status: Merged
Approved by: Mike Pontillo
Approved revision: 66929cdd3a71ec297d117ce221d27303d9cb592a
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~mpontillo/maas:interface-params-websocket--bug-1801776
Merge into: maas:master
Diff against target: 121 lines (+39/-0)
3 files modified
src/maasserver/websockets/handlers/node.py (+1/-0)
src/maasserver/websockets/handlers/tests/test_device.py (+1/-0)
src/maasserver/websockets/handlers/tests/test_machine.py (+37/-0)
Reviewer Review Type Date Requested Status
Newell Jensen (community) Approve
Anthony Dillon Approve
MAAS Lander unittests Pending
Review via email: mp+358350@code.launchpad.net

Commit message

LP: #1801776 - Add bond and bridge parameters to interface websocket JSON.

Description of the change

This is needed to unblock some work the web team is doing with regard to bond and bridge parameters.

To post a comment you must log in.
Revision history for this message
Anthony Dillon (ya-bo-ng) wrote :

Awesome, thank you +1

review: Approve
Revision history for this message
Newell Jensen (newell-jensen) wrote :

+1

review: Approve
Revision history for this message
Mike Pontillo (mpontillo) wrote :

Ah, forgot to go back and fix a couple of tests that failed as a side effect of this. Will take care of those before landing.

Revision history for this message
MAAS Lander (maas-lander) wrote :
66929cd... by Mike Pontillo

Fix TestDeviceHandler.test_get().

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 3a5e72d..d025038 100644
3--- a/src/maasserver/websockets/handlers/node.py
4+++ b/src/maasserver/websockets/handlers/node.py
5@@ -577,6 +577,7 @@ class NodeHandler(TimestampedModelHandler):
6 "is_boot": interface == obj.get_boot_interface(),
7 "mac_address": "%s" % interface.mac_address,
8 "vlan_id": interface.vlan_id,
9+ "params": interface.params,
10 "parents": [
11 nic.id
12 for nic in interface.parents.all()
13diff --git a/src/maasserver/websockets/handlers/tests/test_device.py b/src/maasserver/websockets/handlers/tests/test_device.py
14index 82eca61..f60f9bb 100644
15--- a/src/maasserver/websockets/handlers/tests/test_device.py
16+++ b/src/maasserver/websockets/handlers/tests/test_device.py
17@@ -105,6 +105,7 @@ class TestDeviceHandler(MAASTransactionServerTestCase):
18 "is_boot": interface == obj.get_boot_interface(),
19 "mac_address": "%s" % interface.mac_address,
20 "vlan_id": interface.vlan_id,
21+ "params": interface.params,
22 "parents": [
23 nic.id
24 for nic in interface.parents.all()
25diff --git a/src/maasserver/websockets/handlers/tests/test_machine.py b/src/maasserver/websockets/handlers/tests/test_machine.py
26index 68b1f11..2cf3f57 100644
27--- a/src/maasserver/websockets/handlers/tests/test_machine.py
28+++ b/src/maasserver/websockets/handlers/tests/test_machine.py
29@@ -1155,6 +1155,7 @@ class TestMachineHandler(MAASServerTestCase):
30 "is_boot": True,
31 "mac_address": "%s" % interface.mac_address,
32 "vlan_id": interface.vlan_id,
33+ "params": interface.params,
34 "parents": [
35 nic.id
36 for nic in interface.parents.all()
37@@ -1175,6 +1176,7 @@ class TestMachineHandler(MAASServerTestCase):
38 "is_boot": False,
39 "mac_address": "%s" % interface2.mac_address,
40 "vlan_id": interface2.vlan_id,
41+ "params": interface2.params,
42 "parents": [
43 nic.id
44 for nic in interface2.parents.all()
45@@ -1206,6 +1208,7 @@ class TestMachineHandler(MAASServerTestCase):
46 "is_boot": interface == node.get_boot_interface(),
47 "mac_address": "%s" % interface.mac_address,
48 "vlan_id": interface.vlan_id,
49+ "params": interface.params,
50 "parents": [
51 nic.id
52 for nic in interface.parents.all()
53@@ -1245,6 +1248,7 @@ class TestMachineHandler(MAASServerTestCase):
54 "is_boot": interface == node.get_boot_interface(),
55 "mac_address": "%s" % interface.mac_address,
56 "vlan_id": interface.vlan_id,
57+ "params": interface.params,
58 "parents": [
59 nic.id
60 for nic in interface.parents.all()
61@@ -1257,6 +1261,36 @@ class TestMachineHandler(MAASServerTestCase):
62 "discovered": expected_discovered,
63 }, handler.dehydrate_interface(interface, node))
64
65+ def test_dehydrate_interface_includes_params(self):
66+ owner = factory.make_User()
67+ node = factory.make_Node(owner=owner, status=NODE_STATUS.COMMISSIONING)
68+ handler = MachineHandler(owner, {}, None)
69+ eth0 = factory.make_Interface(INTERFACE_TYPE.PHYSICAL, node=node)
70+ eth1 = factory.make_Interface(INTERFACE_TYPE.PHYSICAL, node=node)
71+ bond_params = {
72+ "bond_downdelay": 0,
73+ "bond_lacp_rate": "slow",
74+ "bond_miimon": 100,
75+ "bond_mode": "balance-xor",
76+ "bond_num_grat_arp": 1,
77+ "bond_updelay": 0,
78+ "bond_xmit_hash_policy": "layer3+4"
79+ }
80+ bond0 = factory.make_Interface(
81+ INTERFACE_TYPE.BOND, node=node, parents=[eth0, eth1],
82+ params=bond_params)
83+ bridge_params = {
84+ "bridge_fd": 5,
85+ "bridge_stp": True
86+ }
87+ br_bond0 = factory.make_Interface(
88+ INTERFACE_TYPE.BRIDGE, node=node, parents=[bond0],
89+ params=bridge_params)
90+ bond_json = handler.dehydrate_interface(bond0, node)
91+ bridge_json = handler.dehydrate_interface(br_bond0, node)
92+ self.assertThat(bond_json['params'], Equals(bond_params))
93+ self.assertThat(bridge_json['params'], Equals(bridge_params))
94+
95 def test_dehydrate_interface_for_rescue_mode_node(self):
96 owner = factory.make_User()
97 node = factory.make_Node(
98@@ -1289,6 +1323,7 @@ class TestMachineHandler(MAASServerTestCase):
99 "is_boot": interface == node.get_boot_interface(),
100 "mac_address": "%s" % interface.mac_address,
101 "vlan_id": interface.vlan_id,
102+ "params": interface.params,
103 "parents": [
104 nic.id
105 for nic in interface.parents.all()
106@@ -1329,6 +1364,7 @@ class TestMachineHandler(MAASServerTestCase):
107 "is_boot": interface == node.get_boot_interface(),
108 "mac_address": "%s" % interface.mac_address,
109 "vlan_id": interface.vlan_id,
110+ "params": interface.params,
111 "parents": [
112 nic.id
113 for nic in interface.parents.all()
114@@ -1371,6 +1407,7 @@ class TestMachineHandler(MAASServerTestCase):
115 "is_boot": interface == node.get_boot_interface(),
116 "mac_address": "%s" % interface.mac_address,
117 "vlan_id": interface.vlan_id,
118+ "params": interface.params,
119 "parents": [
120 nic.id
121 for nic in interface.parents.all()

Subscribers

People subscribed via source and target branches