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
=== modified file 'docs/changelog.rst'
--- docs/changelog.rst 2016-11-21 16:38:54 +0000
+++ docs/changelog.rst 2016-11-22 02:40:55 +0000
@@ -10,6 +10,8 @@
1010
11LP: #1642996 2.x preseeds with {{escape.shell}} fail if not upgraded at 2.1.111LP: #1642996 2.x preseeds with {{escape.shell}} fail if not upgraded at 2.1.1
1212
13LP: #1643057 juju2 with maas 2.1.1 LXD containers get wrong ip addresses
14
1315
142.1.1162.1.1
15=====17=====
1618
=== modified file 'src/maasserver/forms_interface_link.py'
--- src/maasserver/forms_interface_link.py 2016-10-12 15:26:17 +0000
+++ src/maasserver/forms_interface_link.py 2016-11-22 02:40:55 +0000
@@ -75,7 +75,7 @@
75 'mode', mode_choices),75 'mode', mode_choices),
76 })76 })
77 if self.instance.vlan is None:77 if self.instance.vlan is None:
78 self.fields['subnet'].queryset = Subnet.objects.none()78 self.fields['subnet'].queryset = Subnet.objects.all()
79 else:79 else:
80 self.fields['subnet'].queryset = (80 self.fields['subnet'].queryset = (
81 self.instance.vlan.subnet_set.all())81 self.instance.vlan.subnet_set.all())
8282
=== modified file 'src/maasserver/models/interface.py'
--- src/maasserver/models/interface.py 2016-11-04 20:33:51 +0000
+++ src/maasserver/models/interface.py 2016-11-22 02:40:55 +0000
@@ -858,18 +858,25 @@
858 :param user: When alloc_type is set to USER_RESERVED, this user will858 :param user: When alloc_type is set to USER_RESERVED, this user will
859 be set on the link.859 be set on the link.
860 """860 """
861 # Allow the interface VLAN to be implied by the subnet VLAN, if we're
862 # setting up the interface for the first time and it doesn't have
863 # a VLAN assigned yet.
864 if self.vlan is None and subnet is not None:
865 self.vlan = subnet.vlan
866 self.save(update_fields=['vlan', 'updated'])
861 if mode == INTERFACE_LINK_TYPE.AUTO:867 if mode == INTERFACE_LINK_TYPE.AUTO:
862 return self._link_subnet_auto(subnet)868 result = self._link_subnet_auto(subnet)
863 elif mode == INTERFACE_LINK_TYPE.DHCP:869 elif mode == INTERFACE_LINK_TYPE.DHCP:
864 return self._link_subnet_dhcp(subnet)870 result = self._link_subnet_dhcp(subnet)
865 elif mode == INTERFACE_LINK_TYPE.STATIC:871 elif mode == INTERFACE_LINK_TYPE.STATIC:
866 return self._link_subnet_static(872 result = self._link_subnet_static(
867 subnet, ip_address=ip_address,873 subnet, ip_address=ip_address,
868 alloc_type=alloc_type, user=user)874 alloc_type=alloc_type, user=user)
869 elif mode == INTERFACE_LINK_TYPE.LINK_UP:875 elif mode == INTERFACE_LINK_TYPE.LINK_UP:
870 return self._link_subnet_link_up(subnet)876 result = self._link_subnet_link_up(subnet)
871 else:877 else:
872 raise ValueError("Unknown mode: %s" % mode)878 raise ValueError("Unknown mode: %s" % mode)
879 return result
873880
874 def force_auto_or_dhcp_link(self):881 def force_auto_or_dhcp_link(self):
875 """Force the interface to come up with an AUTO linked to a subnet on882 """Force the interface to come up with an AUTO linked to a subnet on
876883
=== modified file 'src/maasserver/models/tests/test_interface.py'
--- src/maasserver/models/tests/test_interface.py 2016-11-04 20:33:51 +0000
+++ src/maasserver/models/tests/test_interface.py 2016-11-22 02:40:55 +0000
@@ -2045,6 +2045,17 @@
2045 "IP address is not in the given subnet '%s'." % subnet,2045 "IP address is not in the given subnet '%s'." % subnet,
2046 str(error))2046 str(error))
20472047
2048 def test__AUTO_link_sets_vlan_if_vlan_undefined(self):
2049 interface = factory.make_Interface(INTERFACE_TYPE.PHYSICAL)
2050 network = factory.make_ipv4_network()
2051 subnet = factory.make_Subnet(
2052 vlan=interface.vlan, cidr=str(network.cidr))
2053 interface.vlan = None
2054 interface.save()
2055 interface.link_subnet(INTERFACE_LINK_TYPE.AUTO, subnet)
2056 interface = reload_object(interface)
2057 self.assertThat(interface.vlan, Equals(subnet.vlan))
2058
2048 def test__STATIC_not_allowed_if_ip_address_in_dynamic_range(self):2059 def test__STATIC_not_allowed_if_ip_address_in_dynamic_range(self):
2049 interface = factory.make_Interface(INTERFACE_TYPE.PHYSICAL)2060 interface = factory.make_Interface(INTERFACE_TYPE.PHYSICAL)
2050 subnet = factory.make_ipv4_Subnet_with_IPRanges(vlan=interface.vlan)2061 subnet = factory.make_ipv4_Subnet_with_IPRanges(vlan=interface.vlan)
20512062
=== modified file 'src/maasserver/tests/test_forms_interface_link.py'
--- src/maasserver/tests/test_forms_interface_link.py 2016-10-18 08:00:37 +0000
+++ src/maasserver/tests/test_forms_interface_link.py 2016-11-22 02:40:55 +0000
@@ -18,6 +18,7 @@
18 InterfaceSetDefaultGatwayForm,18 InterfaceSetDefaultGatwayForm,
19 InterfaceUnlinkForm,19 InterfaceUnlinkForm,
20)20)
21from maasserver.models import Subnet
21from maasserver.testing.factory import factory22from maasserver.testing.factory import factory
22from maasserver.testing.testcase import (23from maasserver.testing.testcase import (
23 MAASServerTestCase,24 MAASServerTestCase,
@@ -56,12 +57,13 @@
56 self.assertTrue(form.is_valid(), form.errors)57 self.assertTrue(form.is_valid(), form.errors)
5758
58 @transactional59 @transactional
59 def test__sets_subnet_queryset_to_empty_on_interface_wihtout_vlan(self):60 def test__sets_subnet_queryset_to_all_on_interface_wihtout_vlan(self):
60 interface = factory.make_Interface(INTERFACE_TYPE.PHYSICAL)61 interface = factory.make_Interface(INTERFACE_TYPE.PHYSICAL)
61 interface.vlan = None62 interface.vlan = None
62 interface.save()63 interface.save()
63 form = InterfaceLinkForm(instance=interface, data={})64 form = InterfaceLinkForm(instance=interface, data={})
64 self.assertItemsEqual([], form.fields["subnet"].queryset)65 self.assertItemsEqual(
66 list(Subnet.objects.all()), list(form.fields["subnet"].queryset))
6567
66 @transactional68 @transactional
67 def test__sets_subnet_queryset_to_subnets_on_interface_vlan(self):69 def test__sets_subnet_queryset_to_subnets_on_interface_vlan(self):

Subscribers

People subscribed via source and target branches

to all changes: