Example #1
0
    def test__raises_error_if_node_already_exists(self):
        self.prepare_rack_rpc()

        mac_addresses = [factory.make_mac_address() for _ in range(3)]
        architecture = make_usable_architecture(self)
        power_type = 'manual'
        power_parameters = {}

        create_node(architecture, power_type, power_parameters, mac_addresses)
        self.assertRaises(NodeAlreadyExists, create_node, architecture,
                          power_type, power_parameters, [mac_addresses[0]])
Example #2
0
    def test__create_node_fails_with_invalid_domain(self):
        self.prepare_rack_rpc()

        mac_addresses = [factory.make_mac_address() for _ in range(3)]
        architecture = make_usable_architecture(self)
        power_type = random.choice(self.power_types)['name']
        power_parameters = {}

        with ExpectedException(ValidationError):
            create_node(architecture, power_type, power_parameters,
                        mac_addresses, factory.make_name('domain'))
Example #3
0
    def test__creates_node_with_explicit_domain(self):
        self.prepare_rack_rpc()

        mac_addresses = [factory.make_mac_address() for _ in range(3)]
        architecture = make_usable_architecture(self)
        hostname = factory.make_hostname()
        domain = factory.make_Domain()

        node = create_node(architecture,
                           'manual', {},
                           mac_addresses,
                           domain=domain.name,
                           hostname=hostname)

        self.assertEqual((
            architecture,
            'manual',
            {},
            domain.id,
            hostname,
        ), (
            node.architecture,
            node.power_type,
            node.power_parameters,
            node.domain.id,
            node.hostname,
        ))
        self.expectThat(node.id, Not(Is(None)))
        self.assertItemsEqual(
            mac_addresses,
            [nic.mac_address for nic in node.interface_set.all()])
Example #4
0
    def test__creates_node(self):
        self.prepare_rack_rpc()

        mac_addresses = [
            factory.make_mac_address() for _ in range(3)]
        architecture = make_usable_architecture(self)

        node = create_node(architecture, 'manual', {}, mac_addresses)

        self.assertEqual(
            (
                architecture,
                'manual',
                {},
            ),
            (
                node.architecture,
                node.power_type,
                node.power_parameters
            ))

        # Node will not have an auto-generated name because migrations are
        # not ran in the testing environment.
        # self.expectThat(node.hostname, Contains("-"))
        self.expectThat(node.id, Not(Is(None)))
        self.assertItemsEqual(
            mac_addresses,
            [nic.mac_address for nic in node.interface_set.all()])
Example #5
0
    def test_create_node_fails_with_invalid_hostname(self):
        self.prepare_rack_rpc()

        mac_addresses = [factory.make_mac_address() for _ in range(3)]
        architecture = make_usable_architecture(self)
        hostname = random.choice(["---", "Microsoft Windows"])
        power_type = random.choice(self.power_types)["name"]
        power_parameters = {}

        with ExpectedException(ValidationError):
            create_node(
                architecture,
                power_type,
                power_parameters,
                mac_addresses,
                hostname=hostname,
            )
Example #6
0
    def test__forces_generic_subarchitecture_if_missing(self):
        self.prepare_rack_rpc()

        mac_addresses = [factory.make_mac_address() for _ in range(3)]
        architecture = make_usable_architecture(self, subarch_name='generic')

        arch, subarch = architecture.split('/')
        node = create_node(arch, 'manual', {}, mac_addresses)

        self.assertEqual(architecture, node.architecture)
Example #7
0
    def test_saves_power_parameters(self):
        self.prepare_rack_rpc()

        mac_addresses = [factory.make_mac_address() for _ in range(3)]
        architecture = make_usable_architecture(self)
        power_parameters = {
            "power_address": factory.make_ip_address(),  # XXX: URLs break.
            "power_pass": factory.make_name("power_pass"),
            "power_id": factory.make_name("power_id"),
        }

        node = create_node(architecture, "virsh", power_parameters,
                           mac_addresses)

        # Reload the object from the DB so that we're sure its power
        # parameters are being persisted.
        node = reload_object(node)
        self.assertEqual(power_parameters, node.power_parameters)