Merge lp:~jtv/maas/bug-1391139 into lp:~maas-committers/maas/trunk

Proposed by Jeroen T. Vermeulen
Status: Merged
Approved by: Jeroen T. Vermeulen
Approved revision: no longer in the source branch.
Merged at revision: 3375
Proposed branch: lp:~jtv/maas/bug-1391139
Merge into: lp:~maas-committers/maas/trunk
Prerequisite: lp:~jtv/maas/unify-get_name_and_vlan_from_cluster_interface
Diff against target: 47 lines (+20/-2)
2 files modified
src/maasserver/utils/interfaces.py (+3/-0)
src/maasserver/utils/tests/test_interfaces.py (+17/-2)
To merge this branch: bzr merge lp:~jtv/maas/bug-1391139
Reviewer Review Type Date Requested Status
Gavin Panella (community) Approve
Review via email: mp+241739@code.launchpad.net

Commit message

Fix failure to parse VLAN tags in network interfaces that combine a VLAN and an alias in just the wrong way.

The bug manifested in migration 0099.

Description of the change

Small fix, but based on massive cleanup branch. If I'm on the wrong track, I'll just scuttle the two and forget about the bug.

Jeroen

To post a comment you must log in.
Revision history for this message
Gavin Panella (allenap) wrote :

LGTM.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'src/maasserver/utils/interfaces.py'
--- src/maasserver/utils/interfaces.py 2014-11-13 20:15:20 +0000
+++ src/maasserver/utils/interfaces.py 2014-11-13 20:15:20 +0000
@@ -49,6 +49,9 @@
49 vlan_tag = None49 vlan_tag = None
50 if '.' in name:50 if '.' in name:
51 _, vlan_tag = name.split('.', 1)51 _, vlan_tag = name.split('.', 1)
52 if ':' in vlan_tag:
53 # Nasty: there's an alias after the VLAN tag.
54 vlan_tag, _ = vlan_tag.split(':', 1)
52 name = name.replace('.', '-')55 name = name.replace('.', '-')
53 name = name.replace(':', '-')56 name = name.replace(':', '-')
54 network_name = "-".join((cluster_name, name))57 network_name = "-".join((cluster_name, name))
5558
=== modified file 'src/maasserver/utils/tests/test_interfaces.py'
--- src/maasserver/utils/tests/test_interfaces.py 2014-11-13 20:15:20 +0000
+++ src/maasserver/utils/tests/test_interfaces.py 2014-11-13 20:15:20 +0000
@@ -80,8 +80,7 @@
80 (expected_name, '%d' % vlan_tag),80 (expected_name, '%d' % vlan_tag),
81 get_name_and_vlan_from_cluster_interface(cluster, interface))81 get_name_and_vlan_from_cluster_interface(cluster, interface))
8282
83 def test_returns_name_with_crazy_colon_and_vlan(self):83 def test_returns_name_with_alias_and_vlan_tag(self):
84 # For truly twisted network admins.
85 cluster = factory.make_name('cluster')84 cluster = factory.make_name('cluster')
86 base_interface = self.make_interface()85 base_interface = self.make_interface()
87 vlan_tag = factory.make_vlan_tag()86 vlan_tag = factory.make_vlan_tag()
@@ -96,3 +95,19 @@
96 self.assertEqual(95 self.assertEqual(
97 (expected_name, '%d' % vlan_tag),96 (expected_name, '%d' % vlan_tag),
98 get_name_and_vlan_from_cluster_interface(cluster, interface))97 get_name_and_vlan_from_cluster_interface(cluster, interface))
98
99 def test_returns_name_with_vlan_tag_and_alias(self):
100 cluster = factory.make_name('cluster')
101 base_interface = self.make_interface()
102 vlan_tag = factory.make_vlan_tag()
103 alias = randint(0, 99)
104 interface = '%s.%d:%d' % (base_interface, vlan_tag, alias)
105 expected_name = '%s-%s-%d-%d' % (
106 cluster,
107 base_interface,
108 vlan_tag,
109 alias,
110 )
111 self.assertEqual(
112 (expected_name, '%d' % vlan_tag),
113 get_name_and_vlan_from_cluster_interface(cluster, interface))