~andreserl/maas/lp1592666

« back to all changes in this revision

Viewing changes to src/maasserver/rpc/tests/test_rackcontrollers.py

  • Committer: LaMont Jones
  • Date: 2016-04-11 16:23:26 UTC
  • mfrom: (4900 maas)
  • mto: This revision was merged to the branch mainline in revision 4924.
  • Revision ID: lamont@canonical.com-20160411162326-6ycj8l2j66v2o5es
merge trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
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
    INTERFACE_TYPE,
 
15
    IPADDRESS_TYPE,
 
16
    NODE_TYPE,
 
17
)
14
18
from maasserver.models import (
15
19
    Node,
16
20
    NodeGroupToRackController,
20
24
    handle_upgrade,
21
25
    register_new_rackcontroller,
22
26
    register_rackcontroller,
 
27
    update_foreign_dhcp,
23
28
    update_interfaces,
24
29
)
25
30
from maasserver.testing.factory import factory
248
253
            hostname, logger.output.strip())
249
254
 
250
255
 
 
256
class TestUpdateForeignDHCP(MAASServerTestCase):
 
257
 
 
258
    def test__doesnt_fail_if_interface_missing(self):
 
259
        rack_controller = factory.make_RackController()
 
260
        # No error should be raised.
 
261
        update_foreign_dhcp(
 
262
            rack_controller.system_id, factory.make_name("eth"), None)
 
263
 
 
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()
 
270
        update_foreign_dhcp(
 
271
            rack_controller.system_id, interface.name, None)
 
272
        self.assertIsNone(reload_object(interface.vlan).external_dhcp)
 
273
 
 
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()
 
279
        update_foreign_dhcp(
 
280
            rack_controller.system_id, interface.name, dhcp_ip)
 
281
        self.assertEquals(
 
282
            dhcp_ip, reload_object(interface.vlan).external_dhcp)
 
283
 
 
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)
 
292
        vlan.dhcp_on = True
 
293
        vlan.primary_rack = rack_controller
 
294
        vlan.external_dhcp = dhcp_ip
 
295
        vlan.save()
 
296
        factory.make_StaticIPAddress(
 
297
            alloc_type=IPADDRESS_TYPE.STICKY, ip=dhcp_ip,
 
298
            subnet=subnet, interface=interface)
 
299
        update_foreign_dhcp(
 
300
            rack_controller.system_id, interface.name, dhcp_ip)
 
301
        self.assertIsNone(reload_object(interface.vlan).external_dhcp)
 
302
 
 
303
 
251
304
class TestUpdateInterfaces(MAASServerTestCase):
252
305
 
253
306
    def test__calls_update_interfaces_on_rack_controller(self):