Merge lp:~mpontillo/maas/external-dhcp--bug-1627363 into lp:~maas-committers/maas/trunk

Proposed by Mike Pontillo
Status: Merged
Approved by: Mike Pontillo
Approved revision: no longer in the source branch.
Merged at revision: 5410
Proposed branch: lp:~mpontillo/maas/external-dhcp--bug-1627363
Merge into: lp:~maas-committers/maas/trunk
Diff against target: 59 lines (+27/-4)
2 files modified
src/maasserver/rpc/rackcontrollers.py (+10/-3)
src/maasserver/rpc/tests/test_rackcontrollers.py (+17/-1)
To merge this branch: bzr merge lp:~mpontillo/maas/external-dhcp--bug-1627363
Reviewer Review Type Date Requested Status
Gavin Panella (community) Approve
Review via email: mp+307073@code.launchpad.net

Commit message

Log warning (instead of crashing) if a DHCP server is found on a disconnected interface.

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

Looks good.

review: Approve
Revision history for this message
Mike Pontillo (mpontillo) wrote :

Thanks.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'src/maasserver/rpc/rackcontrollers.py'
--- src/maasserver/rpc/rackcontrollers.py 2016-09-14 01:50:41 +0000
+++ src/maasserver/rpc/rackcontrollers.py 2016-09-28 19:10:10 +0000
@@ -179,9 +179,16 @@
179 if rack_interfaces_serving_dhcp.exists():179 if rack_interfaces_serving_dhcp.exists():
180 # Not external. It's a MAAS DHCP server.180 # Not external. It's a MAAS DHCP server.
181 dhcp_ip = None181 dhcp_ip = None
182 if interface.vlan.external_dhcp != dhcp_ip:182 if interface.vlan is None:
183 interface.vlan.external_dhcp = dhcp_ip183 maaslog.warning(
184 interface.vlan.save()184 "%s: Detected an external DHCP server on an interface with no "
185 "VLAN defined: '%s': %s" % (
186 rack_controller.hostname, interface.get_log_string(),
187 dhcp_ip))
188 else:
189 if interface.vlan.external_dhcp != dhcp_ip:
190 interface.vlan.external_dhcp = dhcp_ip
191 interface.vlan.save()
185192
186193
187@synchronous194@synchronous
188195
=== modified file 'src/maasserver/rpc/tests/test_rackcontrollers.py'
--- src/maasserver/rpc/tests/test_rackcontrollers.py 2016-08-18 14:47:07 +0000
+++ src/maasserver/rpc/tests/test_rackcontrollers.py 2016-09-28 19:10:10 +0000
@@ -38,7 +38,10 @@
38from maasserver.testing.factory import factory38from maasserver.testing.factory import factory
39from maasserver.testing.testcase import MAASServerTestCase39from maasserver.testing.testcase import MAASServerTestCase
40from maasserver.utils.orm import reload_object40from maasserver.utils.orm import reload_object
41from maastesting.matchers import MockCalledOnceWith41from maastesting.matchers import (
42 DocTestMatches,
43 MockCalledOnceWith,
44)
42from testtools.matchers import (45from testtools.matchers import (
43 IsInstance,46 IsInstance,
44 MatchesAll,47 MatchesAll,
@@ -328,6 +331,19 @@
328 self.assertEquals(331 self.assertEquals(
329 dhcp_ip, reload_object(interface.vlan).external_dhcp)332 dhcp_ip, reload_object(interface.vlan).external_dhcp)
330333
334 def test__logs_warning_for_external_dhcp_on_interface_no_vlan(self):
335 rack_controller = factory.make_RackController(interface=False)
336 interface = factory.make_Interface(
337 INTERFACE_TYPE.PHYSICAL, node=rack_controller)
338 dhcp_ip = factory.make_ip_address()
339 interface.vlan = None
340 interface.save()
341 logger = self.useFixture(FakeLogger())
342 update_foreign_dhcp(
343 rack_controller.system_id, interface.name, dhcp_ip)
344 self.assertThat(logger.output, DocTestMatches(
345 "...DHCP server on an interface with no VLAN defined..."))
346
331 def test__clears_external_dhcp_when_managed_vlan(self):347 def test__clears_external_dhcp_when_managed_vlan(self):
332 rack_controller = factory.make_RackController(interface=False)348 rack_controller = factory.make_RackController(interface=False)
333 fabric = factory.make_Fabric()349 fabric = factory.make_Fabric()