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]])
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'))
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()])
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()])
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, )
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)
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)