~ltrager/maas/remove_di_from_kernel_opts

« back to all changes in this revision

Viewing changes to src/maasserver/models/tests/test_node.py

  • Committer: Lee Trager
  • Date: 2016-10-22 06:06:12 UTC
  • mfrom: (5457.1.44 maas)
  • Revision ID: lee.trager@canonical.com-20161022060612-ukar20f6ffs45nas
Merge trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
36
36
)
37
37
from maasserver.clusterrpc.power_parameters import get_power_types
38
38
from maasserver.clusterrpc.testing.boot_images import make_rpc_boot_image
 
39
from maasserver.dbviews import register_view
39
40
from maasserver.enum import (
40
41
    FILESYSTEM_GROUP_TYPE,
41
42
    FILESYSTEM_TYPE,
86
87
from maasserver.models.event import Event
87
88
import maasserver.models.interface as interface_module
88
89
from maasserver.models.node import (
 
90
    DefaultGateways,
 
91
    GatewayDefinition,
89
92
    generate_node_system_id,
90
93
    PowerInfo,
91
94
    typecast_node,
108
111
    RegionEventLoopFixture,
109
112
    RunningEventLoopFixture,
110
113
)
111
 
from maasserver.testing.factory import factory
 
114
from maasserver.testing.factory import (
 
115
    factory,
 
116
    RANDOM,
 
117
)
112
118
from maasserver.testing.testcase import (
113
119
    MAASServerTestCase,
114
120
    MAASTransactionServerTestCase,
1798
1804
        }
1799
1805
        uncontrolled_power_types = (
1800
1806
            all_power_types.difference(QUERY_POWER_TYPES))
1801
 
        # manual cannot be stopped, so discard this option.
1802
 
        uncontrolled_power_types.discard("manual")
1803
1807
        power_type = random.choice(list(uncontrolled_power_types))
1804
 
        self.assertNotEqual("manual", power_type)
1805
1808
        rack = factory.make_RackController()
1806
1809
        node = factory.make_Node_with_Interface_on_Subnet(
1807
1810
            status=NODE_STATUS.ALLOCATED, owner=owner, owner_data=owner_data,
4130
4133
        self.assertItemsEqual(other_nodes + [parent], Node.objects.all())
4131
4134
 
4132
4135
 
4133
 
class TestNodeNetworking(MAASServerTestCase):
 
4136
class TestNodeNetworking(MAASTransactionServerTestCase):
4134
4137
    """Tests for methods on the `Node` related to networking."""
4135
4138
 
 
4139
    def setUp(self):
 
4140
        register_view("maasserver_discovery")
 
4141
        return super().setUp()
 
4142
 
4136
4143
    def test__create_acquired_bridges_doesnt_call_on_bridge(self):
4137
4144
        mock_create_acquired_bridge = self.patch(
4138
4145
            Interface, "create_acquired_bridge")
4175
4182
            mock_create_acquired_bridge,
4176
4183
            MockCalledOnceWith(bridge_stp=bridge_stp, bridge_fd=bridge_fd))
4177
4184
 
 
4185
    @transactional
4178
4186
    def test_claim_auto_ips_works_with_multiple_auto_on_the_same_subnet(self):
4179
4187
        node = factory.make_Node()
4180
4188
        vlan = factory.make_VLAN()
4291
4299
            [dhcp_ip, static_ip, auto_ip], observed_ip_address)
4292
4300
        self.assertEqual(set([True]), clearing_config)
4293
4301
 
 
4302
    def test__clear_networking_configuration_clears_gateways(self):
 
4303
        node = factory.make_Node()
 
4304
        nic0 = factory.make_Interface(INTERFACE_TYPE.PHYSICAL, node=node)
 
4305
        nic1 = factory.make_Interface(INTERFACE_TYPE.PHYSICAL, node=node)
 
4306
        ipv4_subnet = factory.make_Subnet(
 
4307
            cidr="192.168.0.0/24", gateway_ip="192.168.0.1")
 
4308
        ipv6_subnet = factory.make_Subnet(
 
4309
            cidr="2001:db8::/64", gateway_ip="2001:db8::1")
 
4310
        static_ipv4 = factory.make_StaticIPAddress(
 
4311
            alloc_type=IPADDRESS_TYPE.STICKY, interface=nic0,
 
4312
            subnet=ipv4_subnet)
 
4313
        static_ipv6 = factory.make_StaticIPAddress(
 
4314
            alloc_type=IPADDRESS_TYPE.STICKY, interface=nic1,
 
4315
            subnet=ipv6_subnet)
 
4316
        node.gateway_link_ipv4 = static_ipv4
 
4317
        node.gateway_link_ipv6 = static_ipv6
 
4318
        node.save()
 
4319
        node = reload_object(node)
 
4320
        expected_gateways = DefaultGateways(
 
4321
            GatewayDefinition(
 
4322
                interface_id=nic0.id, subnet_id=ipv4_subnet.id,
 
4323
                gateway_ip=ipv4_subnet.gateway_ip),
 
4324
            GatewayDefinition(
 
4325
                interface_id=nic1.id, subnet_id=ipv6_subnet.id,
 
4326
                gateway_ip=ipv6_subnet.gateway_ip)
 
4327
        )
 
4328
        self.assertThat(
 
4329
            node.get_default_gateways(), Equals(expected_gateways))
 
4330
        node._clear_networking_configuration()
 
4331
        self.assertThat(node.gateway_link_ipv4, Equals(None))
 
4332
        self.assertThat(node.gateway_link_ipv6, Equals(None))
 
4333
 
4294
4334
    def test_set_initial_net_config_does_nothing_if_skip_networking(self):
4295
4335
        node = factory.make_Node_with_Interface_on_Subnet(skip_networking=True)
4296
4336
        boot_interface = node.get_boot_interface()
4676
4716
class TestGetDefaultDNSServers(MAASServerTestCase):
4677
4717
    """Tests for `Node.get_default_dns_servers`."""
4678
4718
 
 
4719
    def setUp(self):
 
4720
        register_view("maasserver_discovery")
 
4721
        return super().setUp()
 
4722
 
4679
4723
    def make_Node_with_RackController(
4680
4724
            self, ipv4=True, ipv6=True, ipv4_gateway=True, ipv6_gateway=True,
4681
4725
            ipv4_subnet_dns=None, ipv6_subnet_dns=None):
4686
4730
        fabric = factory.make_Fabric()
4687
4731
        vlan = fabric.get_default_vlan()
4688
4732
        if ipv4:
4689
 
            gateway_ip = None if ipv4_gateway else ""
 
4733
            gateway_ip = RANDOM if ipv4_gateway else ""
4690
4734
            v4_subnet = factory.make_Subnet(
4691
4735
                version=4, vlan=vlan, dns_servers=ipv4_subnet_dns,
4692
4736
                gateway_ip=gateway_ip)
4693
4737
        if ipv6:
4694
 
            gateway_ip = None if ipv6_gateway else ""
 
4738
            gateway_ip = RANDOM if ipv6_gateway else ""
4695
4739
            v6_subnet = factory.make_Subnet(
4696
4740
                version=6, vlan=vlan, dns_servers=ipv6_subnet_dns,
4697
4741
                gateway_ip=gateway_ip)
4843
4887
            node.get_default_dns_servers(), Equals([ipv6_subnet_dns]))
4844
4888
 
4845
4889
 
4846
 
class TestNode_Start(MAASServerTestCase):
 
4890
class TestNode_Start(MAASTransactionServerTestCase):
4847
4891
    """Tests for Node.start()."""
4848
4892
 
4849
4893
    def setUp(self):
4850
4894
        super(TestNode_Start, self).setUp()
4851
4895
        self.patch_autospec(node_module, 'power_driver_check')
 
4896
        register_view("maasserver_discovery")
4852
4897
 
4853
4898
    def make_acquired_node_with_interface(
4854
4899
            self, user, bmc_connected_to=None, power_type="virsh"):