Merge lp:~mpontillo/maas/link-subnet-no-match--bug-1643057--2.1 into lp:maas/2.1

Proposed by Mike Pontillo
Status: Merged
Approved by: Mike Pontillo
Approved revision: no longer in the source branch.
Merged at revision: 5551
Proposed branch: lp:~mpontillo/maas/link-subnet-no-match--bug-1643057--2.1
Merge into: lp:maas/2.1
Diff against target: 109 lines (+29/-7)
5 files modified
docs/changelog.rst (+2/-0)
src/maasserver/forms_interface_link.py (+1/-1)
src/maasserver/models/interface.py (+11/-4)
src/maasserver/models/tests/test_interface.py (+11/-0)
src/maasserver/tests/test_forms_interface_link.py (+4/-2)
To merge this branch: bzr merge lp:~mpontillo/maas/link-subnet-no-match--bug-1643057--2.1
Reviewer Review Type Date Requested Status
Mike Pontillo (community) Approve
Review via email: mp+311458@code.launchpad.net

Commit message

Merge revision 5563 from trunk to fix bug #1643057.

To post a comment you must log in.
Revision history for this message
Mike Pontillo (mpontillo) wrote :

Self-review backport.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'docs/changelog.rst'
2--- docs/changelog.rst 2016-11-21 16:38:54 +0000
3+++ docs/changelog.rst 2016-11-22 02:40:55 +0000
4@@ -10,6 +10,8 @@
5
6 LP: #1642996 2.x preseeds with {{escape.shell}} fail if not upgraded at 2.1.1
7
8+LP: #1643057 juju2 with maas 2.1.1 LXD containers get wrong ip addresses
9+
10
11 2.1.1
12 =====
13
14=== modified file 'src/maasserver/forms_interface_link.py'
15--- src/maasserver/forms_interface_link.py 2016-10-12 15:26:17 +0000
16+++ src/maasserver/forms_interface_link.py 2016-11-22 02:40:55 +0000
17@@ -75,7 +75,7 @@
18 'mode', mode_choices),
19 })
20 if self.instance.vlan is None:
21- self.fields['subnet'].queryset = Subnet.objects.none()
22+ self.fields['subnet'].queryset = Subnet.objects.all()
23 else:
24 self.fields['subnet'].queryset = (
25 self.instance.vlan.subnet_set.all())
26
27=== modified file 'src/maasserver/models/interface.py'
28--- src/maasserver/models/interface.py 2016-11-04 20:33:51 +0000
29+++ src/maasserver/models/interface.py 2016-11-22 02:40:55 +0000
30@@ -858,18 +858,25 @@
31 :param user: When alloc_type is set to USER_RESERVED, this user will
32 be set on the link.
33 """
34+ # Allow the interface VLAN to be implied by the subnet VLAN, if we're
35+ # setting up the interface for the first time and it doesn't have
36+ # a VLAN assigned yet.
37+ if self.vlan is None and subnet is not None:
38+ self.vlan = subnet.vlan
39+ self.save(update_fields=['vlan', 'updated'])
40 if mode == INTERFACE_LINK_TYPE.AUTO:
41- return self._link_subnet_auto(subnet)
42+ result = self._link_subnet_auto(subnet)
43 elif mode == INTERFACE_LINK_TYPE.DHCP:
44- return self._link_subnet_dhcp(subnet)
45+ result = self._link_subnet_dhcp(subnet)
46 elif mode == INTERFACE_LINK_TYPE.STATIC:
47- return self._link_subnet_static(
48+ result = self._link_subnet_static(
49 subnet, ip_address=ip_address,
50 alloc_type=alloc_type, user=user)
51 elif mode == INTERFACE_LINK_TYPE.LINK_UP:
52- return self._link_subnet_link_up(subnet)
53+ result = self._link_subnet_link_up(subnet)
54 else:
55 raise ValueError("Unknown mode: %s" % mode)
56+ return result
57
58 def force_auto_or_dhcp_link(self):
59 """Force the interface to come up with an AUTO linked to a subnet on
60
61=== modified file 'src/maasserver/models/tests/test_interface.py'
62--- src/maasserver/models/tests/test_interface.py 2016-11-04 20:33:51 +0000
63+++ src/maasserver/models/tests/test_interface.py 2016-11-22 02:40:55 +0000
64@@ -2045,6 +2045,17 @@
65 "IP address is not in the given subnet '%s'." % subnet,
66 str(error))
67
68+ def test__AUTO_link_sets_vlan_if_vlan_undefined(self):
69+ interface = factory.make_Interface(INTERFACE_TYPE.PHYSICAL)
70+ network = factory.make_ipv4_network()
71+ subnet = factory.make_Subnet(
72+ vlan=interface.vlan, cidr=str(network.cidr))
73+ interface.vlan = None
74+ interface.save()
75+ interface.link_subnet(INTERFACE_LINK_TYPE.AUTO, subnet)
76+ interface = reload_object(interface)
77+ self.assertThat(interface.vlan, Equals(subnet.vlan))
78+
79 def test__STATIC_not_allowed_if_ip_address_in_dynamic_range(self):
80 interface = factory.make_Interface(INTERFACE_TYPE.PHYSICAL)
81 subnet = factory.make_ipv4_Subnet_with_IPRanges(vlan=interface.vlan)
82
83=== modified file 'src/maasserver/tests/test_forms_interface_link.py'
84--- src/maasserver/tests/test_forms_interface_link.py 2016-10-18 08:00:37 +0000
85+++ src/maasserver/tests/test_forms_interface_link.py 2016-11-22 02:40:55 +0000
86@@ -18,6 +18,7 @@
87 InterfaceSetDefaultGatwayForm,
88 InterfaceUnlinkForm,
89 )
90+from maasserver.models import Subnet
91 from maasserver.testing.factory import factory
92 from maasserver.testing.testcase import (
93 MAASServerTestCase,
94@@ -56,12 +57,13 @@
95 self.assertTrue(form.is_valid(), form.errors)
96
97 @transactional
98- def test__sets_subnet_queryset_to_empty_on_interface_wihtout_vlan(self):
99+ def test__sets_subnet_queryset_to_all_on_interface_wihtout_vlan(self):
100 interface = factory.make_Interface(INTERFACE_TYPE.PHYSICAL)
101 interface.vlan = None
102 interface.save()
103 form = InterfaceLinkForm(instance=interface, data={})
104- self.assertItemsEqual([], form.fields["subnet"].queryset)
105+ self.assertItemsEqual(
106+ list(Subnet.objects.all()), list(form.fields["subnet"].queryset))
107
108 @transactional
109 def test__sets_subnet_queryset_to_subnets_on_interface_vlan(self):

Subscribers

People subscribed via source and target branches

to all changes: