Merge lp:~allenap/maas/guess-address-for-alias--1.6 into lp:maas/1.6

Proposed by Gavin Panella
Status: Merged
Approved by: Gavin Panella
Approved revision: no longer in the source branch.
Merged at revision: 2540
Proposed branch: lp:~allenap/maas/guess-address-for-alias--1.6
Merge into: lp:maas/1.6
Diff against target: 76 lines (+42/-2)
2 files modified
src/metadataserver/address.py (+2/-2)
src/metadataserver/tests/test_address.py (+40/-0)
To merge this branch: bzr merge lp:~allenap/maas/guess-address-for-alias--1.6
Reviewer Review Type Date Requested Status
Gavin Panella (community) Approve
Review via email: mp+228814@code.launchpad.net

Commit message

Backport r2616 and r2621 from trunk:

- Make guess_server_address() work with aliased interface names.

- Test find_default_interface() with aliased interfaces. Rename incorrectly named tests for tagged interfaces, then add actual tests for aliased interfaces.

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

Selfie.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'src/metadataserver/address.py'
--- src/metadataserver/address.py 2014-07-04 12:39:58 +0000
+++ src/metadataserver/address.py 2014-07-30 10:27:23 +0000
@@ -62,13 +62,13 @@
62 """62 """
63 route_lines = list(ip_route_output)63 route_lines = list(ip_route_output)
64 for line in route_lines:64 for line in route_lines:
65 match = re.match('default\s+.*\sdev\s+(\w+)', line)65 match = re.match('default\s+.*\sdev\s+([^\s]+)', line)
66 if match is not None:66 if match is not None:
67 return match.groups()[0]67 return match.groups()[0]
6868
69 # Still nothing? Try the first recognizable interface in the list.69 # Still nothing? Try the first recognizable interface in the list.
70 for line in route_lines:70 for line in route_lines:
71 match = re.match('\s*(?:\S+\s+)*dev\s+(\w+)', line)71 match = re.match('\s*(?:\S+\s+)*dev\s+([^\s]+)', line)
72 if match is not None:72 if match is not None:
73 return match.groups()[0]73 return match.groups()[0]
74 return None74 return None
7575
=== modified file 'src/metadataserver/tests/test_address.py'
--- src/metadataserver/tests/test_address.py 2014-07-04 10:47:35 +0000
+++ src/metadataserver/tests/test_address.py 2014-07-30 10:27:23 +0000
@@ -61,6 +61,26 @@
61 self.assertEqual(61 self.assertEqual(
62 'eth1', address.find_default_interface(sample_ip_route))62 'eth1', address.find_default_interface(sample_ip_route))
6363
64 def test_find_default_interface_finds_default_tagged_interface(self):
65 sample_ip_route = [
66 "default via 10.20.64.1 dev eth0.2",
67 "10.14.0.0/16 dev br0 proto kernel scope link src 10.14.4.1",
68 "10.90.90.0/24 dev br0 proto kernel scope link src 10.90.90.1",
69 "169.254.0.0/16 dev br0 scope link metric 1000",
70 ]
71 self.assertEqual(
72 'eth0.2', address.find_default_interface(sample_ip_route))
73
74 def test_find_default_interface_finds_default_aliased_interface(self):
75 sample_ip_route = [
76 "default via 10.20.64.1 dev eth0:2",
77 "10.14.0.0/16 dev br0 proto kernel scope link src 10.14.4.1",
78 "10.90.90.0/24 dev br0 proto kernel scope link src 10.90.90.1",
79 "169.254.0.0/16 dev br0 scope link metric 1000",
80 ]
81 self.assertEqual(
82 'eth0:2', address.find_default_interface(sample_ip_route))
83
64 def test_find_default_interface_makes_a_guess_if_no_default(self):84 def test_find_default_interface_makes_a_guess_if_no_default(self):
65 sample_ip_route = [85 sample_ip_route = [
66 "10.0.0.0/24 dev eth2 proto kernel scope link src 10.0.0.11 "86 "10.0.0.0/24 dev eth2 proto kernel scope link src 10.0.0.11 "
@@ -71,6 +91,26 @@
71 self.assertEqual(91 self.assertEqual(
72 'eth2', address.find_default_interface(sample_ip_route))92 'eth2', address.find_default_interface(sample_ip_route))
7393
94 def test_find_default_tagged_interface_makes_a_guess_if_no_default(self):
95 sample_ip_route = [
96 "10.0.0.0/24 dev eth2.4 proto kernel scope link src 10.0.0.11 "
97 "metric 2",
98 "10.1.0.0/24 dev virbr0 proto kernel scope link src 10.1.0.1",
99 "10.1.1.0/24 dev virbr1 proto kernel scope link src 10.1.1.1",
100 ]
101 self.assertEqual(
102 'eth2.4', address.find_default_interface(sample_ip_route))
103
104 def test_find_default_aliased_interface_makes_a_guess_if_no_default(self):
105 sample_ip_route = [
106 "10.0.0.0/24 dev eth2:4 proto kernel scope link src 10.0.0.11 "
107 "metric 2",
108 "10.1.0.0/24 dev virbr0 proto kernel scope link src 10.1.0.1",
109 "10.1.1.0/24 dev virbr1 proto kernel scope link src 10.1.1.1",
110 ]
111 self.assertEqual(
112 'eth2:4', address.find_default_interface(sample_ip_route))
113
74 def test_find_default_interface_returns_None_on_failure(self):114 def test_find_default_interface_returns_None_on_failure(self):
75 self.assertIsNone(address.find_default_interface([]))115 self.assertIsNone(address.find_default_interface([]))
76116

Subscribers

People subscribed via source and target branches

to all changes: