Merge ~ack/maas:1859210-controllers-interfaces-update into maas:master

Proposed by Alberto Donato
Status: Merged
Approved by: Alberto Donato
Approved revision: 8a77775b6a76d6da18333cd7e555dc617b4192cf
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~ack/maas:1859210-controllers-interfaces-update
Merge into: maas:master
Diff against target: 84 lines (+61/-1)
2 files modified
src/maasserver/models/node.py (+2/-1)
src/maasserver/models/tests/test_node.py (+59/-0)
Reviewer Review Type Date Requested Status
Newell Jensen (community) Approve
MAAS Lander Approve
Review via email: mp+378178@code.launchpad.net

Commit message

LP: #1859210 - only update interface info for physical interfaces

To post a comment you must log in.
Revision history for this message
MAAS Lander (maas-lander) wrote :

UNIT TESTS
-b 1859210-controllers-interfaces-update lp:~ack/maas/+git/maas into -b master lp:~maas-committers/maas

STATUS: FAILED
LOG: http://maas-ci-jenkins.internal:8080/job/maas/job/branch-tester/7075/console
COMMIT: 4146943fd52dbf96486e082a793f88b3484791b8

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

UNIT TESTS
-b 1859210-controllers-interfaces-update lp:~ack/maas/+git/maas into -b master lp:~maas-committers/maas

STATUS: SUCCESS
COMMIT: 8a77775b6a76d6da18333cd7e555dc617b4192cf

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

+1

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

LANDING
-b 1859210-controllers-interfaces-update lp:~ack/maas/+git/maas into -b master lp:~maas-committers/maas

STATUS: FAILED BUILD
LOG: http://maas-ci-jenkins.internal:8080/job/maas/job/branch-tester/7077/consoleText

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/models/node.py b/src/maasserver/models/node.py
2index 1fb7b52..5306ff1 100644
3--- a/src/maasserver/models/node.py
4+++ b/src/maasserver/models/node.py
5@@ -6828,7 +6828,8 @@ class Controller(Node):
6 )
7 if interface is not None:
8 interface.update_discovery_state(discovery_mode, settings)
9- update_interface_details(interface, interfaces_details)
10+ if interface.type == INTERFACE_TYPE.PHYSICAL:
11+ update_interface_details(interface, interfaces_details)
12 if interface.id in current_interfaces:
13 del current_interfaces[interface.id]
14
15diff --git a/src/maasserver/models/tests/test_node.py b/src/maasserver/models/tests/test_node.py
16index eb7c419..62fc0a9 100644
17--- a/src/maasserver/models/tests/test_node.py
18+++ b/src/maasserver/models/tests/test_node.py
19@@ -11680,6 +11680,65 @@ class TestUpdateInterfaces(MAASServerTestCase, UpdateInterfacesMixin):
20 MatchesSetwise(Equals("eth0"), Equals("eth1")),
21 )
22
23+ def test__bridge_with_mac_as_phyisical_not_updated(self):
24+ controller = self.create_empty_controller(with_empty_script_sets=True)
25+ controller = self.create_empty_controller()
26+ mac_address = factory.make_mac_address()
27+ eth0 = factory.make_Interface(
28+ INTERFACE_TYPE.PHYSICAL, node=controller, mac_address=mac_address
29+ )
30+ factory.make_Interface(
31+ INTERFACE_TYPE.BRIDGE, parents=[eth0], mac_address=mac_address
32+ )
33+ interfaces = {
34+ "eth0": {
35+ "type": "physical",
36+ "mac_address": mac_address,
37+ "parents": [],
38+ "links": [],
39+ "enabled": True,
40+ },
41+ "br0": {
42+ "type": "bridge",
43+ "mac_address": mac_address,
44+ "parents": ["eth0"],
45+ "links": [],
46+ "enabled": True,
47+ },
48+ }
49+
50+ vendor = factory.make_name("vendor")
51+ product = factory.make_name("product")
52+ firmware_version = factory.make_name("firmware_version")
53+ test_hooks.create_IPADDR_OUTPUT_NAME_script(
54+ controller, test_hooks.IP_ADDR_OUTPUT
55+ )
56+ lxd_script = controller.current_commissioning_script_set.find_script_result(
57+ script_name=LXD_OUTPUT_NAME
58+ )
59+ lxd_script_output = {
60+ "network": {
61+ "cards": [
62+ {
63+ "ports": [
64+ {"id": "eth0", "address": mac_address, "port": 0}
65+ ],
66+ "vendor": vendor,
67+ "product": product,
68+ "firmware_version": firmware_version,
69+ }
70+ ]
71+ }
72+ }
73+ lxd_script.store_result(
74+ 0, stdout=json.dumps(lxd_script_output).encode("utf-8")
75+ )
76+ self.update_interfaces(controller, interfaces)
77+ br0 = Interface.objects.get(name="br0", node=controller)
78+ self.assertNotEqual(vendor, br0.vendor)
79+ self.assertNotEqual(product, br0.product)
80+ self.assertNotEqual(firmware_version, br0.firmware_version)
81+
82 def test__removes_missing_interfaces(self):
83 controller = self.create_empty_controller()
84 fabric = factory.make_Fabric()

Subscribers

People subscribed via source and target branches