Merge ~adam-collard/maas:skip-ipoib-at-startup into maas:master

Proposed by Adam Collard
Status: Merged
Approved by: Adam Collard
Approved revision: f0a8340cbe08da771518133bd169e994a2e67df3
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~adam-collard/maas:skip-ipoib-at-startup
Merge into: maas:master
Diff against target: 98 lines (+28/-1)
5 files modified
src/maasserver/api/tests/test_nodes.py (+1/-1)
src/maasserver/fields.py (+4/-0)
src/maasserver/tests/test_fields.py (+4/-0)
src/metadataserver/builtin_scripts/network.py (+4/-0)
src/metadataserver/builtin_scripts/tests/test_network.py (+15/-0)
Reviewer Review Type Date Requested Status
MAAS Lander Approve
Alberto Donato (community) Approve
Review via email: mp+423352@code.launchpad.net

Commit message

Skip IPoIB in update_interface

To post a comment you must log in.
Revision history for this message
Alberto Donato (ack) wrote :

+1, lgtm

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

UNIT TESTS
-b skip-ipoib-at-startup lp:~adam-collard/maas/+git/maas into -b master lp:~maas-committers/maas

STATUS: FAILED
LOG: http://maas-ci.internal:8080/job/maas/job/branch-tester/12660/console
COMMIT: 7d06d74d5f0a2270142acd819ec497dcd1b86e90

review: Needs Fixing
a729a41... by Adam Collard

Add __len__ to fields.MAC

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

UNIT TESTS
-b skip-ipoib-at-startup lp:~adam-collard/maas/+git/maas into -b master lp:~maas-committers/maas

STATUS: FAILED
LOG: http://maas-ci.internal:8080/job/maas/job/branch-tester/12661/console
COMMIT: a729a41236e648a1a0841251c200cbe49dc7e8c1

review: Needs Fixing
f0a8340... by Adam Collard

Fix tests

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

UNIT TESTS
-b skip-ipoib-at-startup lp:~adam-collard/maas/+git/maas into -b master lp:~maas-committers/maas

STATUS: FAILED
LOG: http://maas-ci.internal:8080/job/maas/job/branch-tester/12662/console
COMMIT: f0a8340cbe08da771518133bd169e994a2e67df3

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

jenkins: !test

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

UNIT TESTS
-b skip-ipoib-at-startup lp:~adam-collard/maas/+git/maas into -b master lp:~maas-committers/maas

STATUS: FAILED
LOG: http://maas-ci.internal:8080/job/maas/job/branch-tester/12663/console
COMMIT: f0a8340cbe08da771518133bd169e994a2e67df3

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

jenkins: !test

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

UNIT TESTS
-b skip-ipoib-at-startup lp:~adam-collard/maas/+git/maas into -b master lp:~maas-committers/maas

STATUS: SUCCESS
COMMIT: f0a8340cbe08da771518133bd169e994a2e67df3

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/src/maasserver/api/tests/test_nodes.py b/src/maasserver/api/tests/test_nodes.py
2index 02d9a21..87af027 100644
3--- a/src/maasserver/api/tests/test_nodes.py
4+++ b/src/maasserver/api/tests/test_nodes.py
5@@ -133,7 +133,7 @@ class TestIsRegisteredAnonAPI(APITestCase.ForAnonymousAndUserAndAdmin):
6 interface = factory.make_Interface(INTERFACE_TYPE.UNKNOWN)
7 response = self.client.get(
8 reverse("nodes_handler"),
9- {"op": "is_registered", "mac_address": interface.mac_address},
10+ {"op": "is_registered", "mac_address": str(interface.mac_address)},
11 )
12 self.assertEqual(
13 (http.client.OK.value, "false"),
14diff --git a/src/maasserver/fields.py b/src/maasserver/fields.py
15index c7932bc..c968977 100644
16--- a/src/maasserver/fields.py
17+++ b/src/maasserver/fields.py
18@@ -248,6 +248,10 @@ class MAC:
19 def __bytes__(self):
20 return self._wrapped.encode("ascii")
21
22+ def __len__(self):
23+ """Defer to len of the wrapped value."""
24+ return len(self._wrapped)
25+
26 def __eq__(self, other):
27 """Two `MAC`s are equal if they wrap the same value.
28
29diff --git a/src/maasserver/tests/test_fields.py b/src/maasserver/tests/test_fields.py
30index 9d9fdcb..fd85a52 100644
31--- a/src/maasserver/tests/test_fields.py
32+++ b/src/maasserver/tests/test_fields.py
33@@ -111,6 +111,10 @@ class TestMAC(MAASServerTestCase):
34 addr = factory.make_mac_address()
35 self.assertEqual("'%s'::macaddr" % addr, MAC(MAC(addr)).getquoted())
36
37+ def test_mac_is_len_able(self):
38+ mac = factory.make_MAC()
39+ self.assertEqual(len(mac), len(mac.raw))
40+
41 def test_mac_equals_self(self):
42 mac = factory.make_MAC()
43 self.assertTrue(mac == mac)
44diff --git a/src/metadataserver/builtin_scripts/network.py b/src/metadataserver/builtin_scripts/network.py
45index f08f767..c155168 100644
46--- a/src/metadataserver/builtin_scripts/network.py
47+++ b/src/metadataserver/builtin_scripts/network.py
48@@ -18,6 +18,7 @@ from maasserver.utils.orm import transactional
49 from provisioningserver.events import EVENT_TYPES
50 from provisioningserver.logger import get_maas_logger
51 from provisioningserver.utils import flatten, sorttop
52+from provisioningserver.utils.ipaddr import is_ipoib_mac
53 from provisioningserver.utils.network import fix_link_addresses
54 from provisioningserver.utils.twisted import synchronous
55
56@@ -170,6 +171,9 @@ def update_interface(node, name, data, address_extra, hints=None):
57 # Ignore OpenBMC interfaces on switches which all share the
58 # same, hard-coded OpenBMC MAC address.
59 return None
60+ # See LP:1939456
61+ if is_ipoib_mac(network["hwaddr"]):
62+ return None
63
64 links = []
65 for address in network["addresses"]:
66diff --git a/src/metadataserver/builtin_scripts/tests/test_network.py b/src/metadataserver/builtin_scripts/tests/test_network.py
67index af89703..a3f5b1e 100644
68--- a/src/metadataserver/builtin_scripts/tests/test_network.py
69+++ b/src/metadataserver/builtin_scripts/tests/test_network.py
70@@ -37,6 +37,7 @@ from metadataserver.builtin_scripts import network as network_module
71 from metadataserver.builtin_scripts.network import (
72 _hardware_sync_network_device_notify,
73 get_interface_dependencies,
74+ update_interface,
75 update_node_interfaces,
76 )
77 from provisioningserver.events import EVENT_DETAILS, EVENT_TYPES
78@@ -2871,6 +2872,20 @@ class TestGetInterfaceDependencies(MAASTestCase):
79 )
80
81
82+class TestUpdateInterface(MAASServerTestCase):
83+ def test_update_interface_skips_ipoib_mac(self):
84+ node = factory.make_Node(with_boot_disk=False, interface=True)
85+ data = FakeCommissioningData()
86+ data.create_physical_network(
87+ "ibp4s0",
88+ mac_address="a0:00:02:20:fe:80:00:00:00:00:00:00:e4:1d:2d:03:00:4f:06:e1",
89+ )
90+ result = update_interface(
91+ node, "ibp4s0", data.render(), address_extra={}
92+ )
93+ self.assertIsNone(result)
94+
95+
96 class TestHardwareSyncNetworkDeviceNotify(MAASServerTestCase):
97 def setup(self):
98 details = EVENT_DETAILS[EVENT_TYPES.NODE_HARDWARE_SYNC_INTERFACE]

Subscribers

People subscribed via source and target branches