Merge lp:~lamont/maas/bug-1625689 into lp:~maas-committers/maas/trunk

Proposed by LaMont Jones
Status: Merged
Approved by: LaMont Jones
Approved revision: no longer in the source branch.
Merged at revision: 5374
Proposed branch: lp:~lamont/maas/bug-1625689
Merge into: lp:~maas-committers/maas/trunk
Diff against target: 53 lines (+24/-1)
2 files modified
src/maasserver/websockets/handlers/tests/test_vlan.py (+22/-0)
src/maasserver/websockets/handlers/vlan.py (+2/-1)
To merge this branch: bzr merge lp:~lamont/maas/bug-1625689
Reviewer Review Type Date Requested Status
Blake Rouse (community) Approve
Review via email: mp+306239@code.launchpad.net

Commit message

Allow link-local gateway addresses via the web UI.

Description of the change

Allow link-local gateway addresses via the web UI.

To post a comment you must log in.
Revision history for this message
Blake Rouse (blake-rouse) wrote :

Looks good. Good catch!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/maasserver/websockets/handlers/tests/test_vlan.py'
2--- src/maasserver/websockets/handlers/tests/test_vlan.py 2016-09-06 17:02:03 +0000
3+++ src/maasserver/websockets/handlers/tests/test_vlan.py 2016-09-20 15:37:40 +0000
4@@ -358,6 +358,27 @@
5 }
6 })
7
8+ def test__configure_dhcp_gateway_fe80_allowed(self):
9+ rack = factory.make_RackController()
10+ user = factory.make_admin()
11+ handler = VLANHandler(user, {})
12+ vlan = factory.make_VLAN()
13+ subnet = factory.make_Subnet(
14+ vlan=vlan, cidr="2001:db8::/64", gateway_ip="")
15+ self.assertThat(subnet.get_dynamic_ranges().count(), Equals(0))
16+ handler.configure_dhcp({
17+ "id": vlan.id,
18+ "controllers": [rack.system_id],
19+ "extra": {
20+ "subnet": subnet.id,
21+ "gateway": "fe80::1",
22+ "start": "2001:db8:0:0:1::",
23+ "end": "2001:db8:0:0:1:ffff:ffff:ffff"
24+ }
25+ })
26+ subnet = reload_object(subnet)
27+ self.assertEqual(subnet.gateway_ip, 'fe80::1')
28+
29 def test__configure_dhcp_gateway_inside_range_raises(self):
30 rack = factory.make_RackController()
31 user = factory.make_admin()
32@@ -377,6 +398,7 @@
33 "end": "10.0.0.99"
34 }
35 })
36+ vlan = reload_object(vlan)
37
38 def test__configure_dhcp_gateway_raises_if_dynamic_range_required(self):
39 rack = factory.make_RackController()
40
41=== modified file 'src/maasserver/websockets/handlers/vlan.py'
42--- src/maasserver/websockets/handlers/vlan.py 2016-06-09 20:04:24 +0000
43+++ src/maasserver/websockets/handlers/vlan.py 2016-09-20 15:37:40 +0000
44@@ -112,7 +112,8 @@
45 if len(gateway_text) > 0:
46 gateway = netaddr.IPAddress(gateway_text)
47 ipnetwork = netaddr.IPNetwork(subnet.cidr)
48- if gateway not in ipnetwork:
49+ if gateway not in ipnetwork and not (
50+ gateway.version == 6 and gateway.is_link_local()):
51 raise ValueError(
52 "Gateway IP must be within specified subnet: %s" %
53 subnet.cidr)