10
10
from django.db import IntegrityError
11
11
from fixtures import FakeLogger
12
12
from maasserver import worker_user
13
from maasserver.enum import NODE_TYPE
13
from maasserver.enum import (
14
18
from maasserver.models import (
16
20
NodeGroupToRackController,
248
253
hostname, logger.output.strip())
256
class TestUpdateForeignDHCP(MAASServerTestCase):
258
def test__doesnt_fail_if_interface_missing(self):
259
rack_controller = factory.make_RackController()
260
# No error should be raised.
262
rack_controller.system_id, factory.make_name("eth"), None)
264
def test__clears_external_dhcp_on_vlan(self):
265
rack_controller = factory.make_RackController(interface=False)
266
interface = factory.make_Interface(
267
INTERFACE_TYPE.PHYSICAL, node=rack_controller)
268
interface.vlan.external_dhcp = factory.make_ip_address()
269
interface.vlan.save()
271
rack_controller.system_id, interface.name, None)
272
self.assertIsNone(reload_object(interface.vlan).external_dhcp)
274
def test__sets_external_dhcp_when_not_managed_vlan(self):
275
rack_controller = factory.make_RackController(interface=False)
276
interface = factory.make_Interface(
277
INTERFACE_TYPE.PHYSICAL, node=rack_controller)
278
dhcp_ip = factory.make_ip_address()
280
rack_controller.system_id, interface.name, dhcp_ip)
282
dhcp_ip, reload_object(interface.vlan).external_dhcp)
284
def test__clears_external_dhcp_when_managed_vlan(self):
285
rack_controller = factory.make_RackController(interface=False)
286
fabric = factory.make_Fabric()
287
vlan = fabric.get_default_vlan()
288
interface = factory.make_Interface(
289
INTERFACE_TYPE.PHYSICAL, node=rack_controller, vlan=vlan)
290
subnet = factory.make_Subnet()
291
dhcp_ip = factory.pick_ip_in_Subnet(subnet)
293
vlan.primary_rack = rack_controller
294
vlan.external_dhcp = dhcp_ip
296
factory.make_StaticIPAddress(
297
alloc_type=IPADDRESS_TYPE.STICKY, ip=dhcp_ip,
298
subnet=subnet, interface=interface)
300
rack_controller.system_id, interface.name, dhcp_ip)
301
self.assertIsNone(reload_object(interface.vlan).external_dhcp)
251
304
class TestUpdateInterfaces(MAASServerTestCase):
253
306
def test__calls_update_interfaces_on_rack_controller(self):