Merge ~cgrabowski/maas:fix_vlan_discovery_3.2 into maas:3.2

Proposed by Christian Grabowski
Status: Merged
Approved by: Alberto Donato
Approved revision: 14202cb7119c1f7bc8c0ca02d04a2472ffb0e795
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~cgrabowski/maas:fix_vlan_discovery_3.2
Merge into: maas:3.2
Diff against target: 71 lines (+7/-15)
3 files modified
src/maasserver/models/interface.py (+2/-10)
src/maasserver/models/tests/test_interface.py (+2/-2)
src/maasserver/models/tests/test_node.py (+3/-3)
Reviewer Review Type Date Requested Status
Alberto Donato (community) Approve
MAAS Lander Approve
Review via email: mp+424988@code.launchpad.net

Commit message

update report_neighbours test
(cherry picked from commit 50f817870f78b6fadfe6f7c0e371d92ef7a93d0c)

ignore observed vlan if already exists
(cherry picked from commit 717044811f229360753ea10ff32f91ea897f16ec)

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

UNIT TESTS
-b fix_vlan_discovery_3.2 lp:~cgrabowski/maas/+git/maas into -b 3.2 lp:~maas-committers/maas

STATUS: SUCCESS
COMMIT: 14202cb7119c1f7bc8c0ca02d04a2472ffb0e795

review: Approve
Revision history for this message
Alberto Donato (ack) wrote :

+1

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/src/maasserver/models/interface.py b/src/maasserver/models/interface.py
2index 7945291..4fb826b 100644
3--- a/src/maasserver/models/interface.py
4+++ b/src/maasserver/models/interface.py
5@@ -1547,16 +1547,8 @@ class Interface(CleanSave, TimestampedModel):
6
7 if ip:
8 subnet = Subnet.objects.get_best_subnet_for_ip(ip)
9- if subnet:
10- vlan = subnet.vlan
11- vlan.fabric = fabric
12- vlan.save()
13- maaslog.info(
14- "%s: Automatically updated VLAN %d (observed on %s).",
15- self.get_log_string(),
16- vid,
17- vlan.fabric.get_name(),
18- )
19+ # VLAN already exists, don't update it
20+ if subnet and subnet.vlan.vid == vid:
21 return
22
23 vlan, created = VLAN.objects.get_or_create(
24diff --git a/src/maasserver/models/tests/test_interface.py b/src/maasserver/models/tests/test_interface.py
25index fcfdc85..8213518 100644
26--- a/src/maasserver/models/tests/test_interface.py
27+++ b/src/maasserver/models/tests/test_interface.py
28@@ -4076,7 +4076,7 @@ class TestReportVID(MAASServerTestCase):
29 new_vlan.description,
30 )
31
32- def test_report_vid_handles_existing_vlan(self):
33+ def test_report_vid_does_not_modify_existing_vlan(self):
34 fabric1 = factory.make_Fabric()
35 fabric2 = factory.make_Fabric()
36 observing_vlan = fabric1.get_default_vlan()
37@@ -4088,7 +4088,7 @@ class TestReportVID(MAASServerTestCase):
38 neighbour_vlan.vid, ip=subnet2.get_next_ip_for_allocation()
39 )
40 neighbour_vlan.refresh_from_db()
41- self.assertEqual(observing_vlan.fabric, neighbour_vlan.fabric)
42+ self.assertEqual(observing_vlan.fabric, fabric1)
43
44
45 class TestInterfaceGetDefaultBridgeName(MAASServerTestCase):
46diff --git a/src/maasserver/models/tests/test_node.py b/src/maasserver/models/tests/test_node.py
47index f585f53..09fac42 100644
48--- a/src/maasserver/models/tests/test_node.py
49+++ b/src/maasserver/models/tests/test_node.py
50@@ -10994,7 +10994,7 @@ class TestReportNeighbours(MAASServerTestCase):
51 [call(3, ip=neighbours[0]["ip"]), call(7, ip=neighbours[1]["ip"])]
52 )
53
54- def test_updates_fabric_of_existing_vlan(self):
55+ def test_does_not_updates_fabric_of_existing_vlan(self):
56 rack = factory.make_RackController()
57 observing_fabric = factory.make_Fabric()
58 other_fabric = factory.make_Fabric()
59@@ -11015,10 +11015,10 @@ class TestReportNeighbours(MAASServerTestCase):
60 ]
61 rack.report_neighbours(neighbours)
62 observed_vlan.refresh_from_db()
63- self.assertEqual(observing_fabric, observed_vlan.fabric)
64+ self.assertEqual(other_fabric, observed_vlan.fabric)
65 self.assertEqual(
66 VLAN.objects.filter(
67- vid=observed_vlan.vid, fabric=observing_fabric
68+ vid=observed_vlan.vid, fabric=other_fabric
69 ).count(),
70 1,
71 )

Subscribers

People subscribed via source and target branches