def test_build_nodes(self): bmc_ports = [{ 'fixed_ips': [{ 'ip_address': '1.1.1.1' }] }, { 'fixed_ips': [{ 'ip_address': '1.1.1.2' }] }] bm_ports = [{'device_id': '1'}, {'device_id': '2'}] nova = mock.Mock() servers = [mock.Mock(), mock.Mock(), mock.Mock()] self._create_build_nodes_mocks(nova, servers) servers[2].name = 'undercloud' servers[2].flavor = {'id': '1'} servers[2].addresses = { 'provision': [{ 'OS-EXT-IPS-MAC:mac_addr': 'aa:aa:aa:aa:aa:ac' }] } servers[2].image = {'id': 'f00'} nova.servers.list.return_value = [servers[2]] ips_return_val = 'ips call value' nova.servers.ips.return_value = ips_return_val nodes, bmc_bm_pairs, extra_nodes = build_nodes_json._build_nodes( nova, bmc_ports, bm_ports, 'provision', 'bm', 'undercloud') expected_nodes = TEST_NODES self.assertEqual(expected_nodes, nodes) self.assertEqual([('1.1.1.1', 'bm_0'), ('1.1.1.2', 'bm_1')], bmc_bm_pairs) self.assertEqual(1, len(extra_nodes)) self.assertEqual('undercloud', extra_nodes[0]['name'])
def test_build_nodes_with_driver(self, mock_make_client): bmc_ports = [{ 'fixed_ips': [{ 'ip_address': '1.1.1.1' }] }, { 'fixed_ips': [{ 'ip_address': '1.1.1.2' }] }] bm_ports = [{'device_id': '1'}, {'device_id': '2'}] physical_network = False nova = mock.Mock() servers = [mock.Mock(), mock.Mock(), mock.Mock()] self._create_build_nodes_mocks(nova, servers) servers[1].image = None mock_to_dict = { 'os-extended-volumes:volumes_attached': [{ 'id': 'v0lume' }] } servers[1].to_dict.return_value = mock_to_dict mock_cinder = mock.Mock() mock_make_client.return_value = mock_cinder mock_vol = mock.Mock() mock_vol.size = 100 mock_cinder.volumes.get.return_value = mock_vol servers[2].name = 'undercloud' servers[2].flavor = {'id': '1'} servers[2].addresses = { 'provision': [{ 'OS-EXT-IPS-MAC:mac_addr': 'aa:aa:aa:aa:aa:ac' }] } servers[2].image = {'id': 'f00'} nova.servers.list.return_value = [servers[2]] ips_return_val = 'ips call value' nova.servers.ips.return_value = ips_return_val glance = mock.Mock() (nodes, bmc_bm_pairs, extra_nodes, network_details) = build_nodes_json._build_nodes( nova, glance, bmc_ports, bm_ports, 'provision', 'bm', 'undercloud', 'ipmi', physical_network) expected_nodes = copy.deepcopy(TEST_NODES) expected_nodes[1]['disk'] = 100 for node in expected_nodes: node['pm_type'] = 'ipmi' self.assertEqual(expected_nodes, nodes) self.assertEqual([('1.1.1.1', 'bm_0'), ('1.1.1.2', 'bm_1')], bmc_bm_pairs) self.assertEqual(1, len(extra_nodes)) self.assertEqual('undercloud', extra_nodes[0]['name']) self.assertEqual( '2.1.1.1', network_details['bm_0']['ips']['provision'][0]['addr']) self.assertEqual( '2.1.1.2', network_details['bm_1']['ips']['provision'][0]['addr'])
def test_build_nodes_role_uefi(self): args = mock.Mock() args.physical_network = False args.use_mac = False args.driver = 'pxe_ipmitool' args.id = False bmc_ports = [{ 'fixed_ips': [{ 'ip_address': '1.1.1.1' }] }, { 'fixed_ips': [{ 'ip_address': '1.1.1.2' }] }] bm_ports = [{ 'device_id': '1', 'id': 'port_id_server1' }, { 'device_id': '2', 'id': 'port_id_server2' }] provision_net_map = { 'port_id_server1': 'provision', 'port_id_server2': 'provision', 'port_id_server3': 'provision', } nova = mock.Mock() servers = [mock.Mock(), mock.Mock(), mock.Mock()] self._create_build_nodes_mocks(nova, servers) servers[0].name = 'bm-foo-control_0' servers[1].name = 'bm-foo-control_1' ips_return_val = 'ips call value' nova.servers.ips.return_value = ips_return_val glance = mock.Mock() mock_image_get = mock.Mock() mock_image_get.get.return_value = 'uefi' glance.images.get.return_value = mock_image_get nodes = build_nodes_json._build_nodes(nova, glance, zip(bmc_ports, bm_ports), provision_net_map, 'bm-foo', args) expected_nodes = copy.deepcopy(TEST_NODES) expected_nodes[0]['name'] = 'bm-foo-control-0' expected_nodes[0]['capabilities'] = ('boot_option:local,' 'boot_mode:uefi,' 'profile:control') expected_nodes[1]['name'] = 'bm-foo-control-1' expected_nodes[1]['capabilities'] = ('boot_option:local,' 'boot_mode:uefi,' 'profile:control') self.assertEqual(expected_nodes, nodes)
def test_build_nodes_role_uefi(self): bmc_ports = [{ 'fixed_ips': [{ 'ip_address': '1.1.1.1' }] }, { 'fixed_ips': [{ 'ip_address': '1.1.1.2' }] }] bm_ports = [{'device_id': '1'}, {'device_id': '2'}] physical_network = False nova = mock.Mock() servers = [mock.Mock(), mock.Mock(), mock.Mock()] self._create_build_nodes_mocks(nova, servers) servers[0].name = 'bm-foo-control_0' servers[1].name = 'bm-foo-control_1' ips_return_val = 'ips call value' nova.servers.ips.return_value = ips_return_val glance = mock.Mock() mock_image_get = mock.Mock() mock_image_get.get.return_value = 'uefi' glance.images.get.return_value = mock_image_get nodes, bmc_bm_pairs, extra_nodes, _ = build_nodes_json._build_nodes( nova, glance, bmc_ports, bm_ports, 'provision', 'bm-foo', None, 'pxe_ipmitool', physical_network) expected_nodes = copy.deepcopy(TEST_NODES) expected_nodes[0]['name'] = 'bm-foo-control-0' expected_nodes[0]['capabilities'] = ('boot_option:local,' 'boot_mode:uefi,' 'profile:control') expected_nodes[1]['name'] = 'bm-foo-control-1' expected_nodes[1]['capabilities'] = ('boot_option:local,' 'boot_mode:uefi,' 'profile:control') self.assertEqual(expected_nodes, nodes) self.assertEqual([('1.1.1.1', 'bm-foo-control_0'), ('1.1.1.2', 'bm-foo-control_1')], bmc_bm_pairs)
def test_build_nodes(self): bmc_ports = [{ 'fixed_ips': [{ 'ip_address': '1.1.1.1' }] }, { 'fixed_ips': [{ 'ip_address': '1.1.1.2' }] }] bm_ports = [{'device_id': '1'}, {'device_id': '2'}] nova = mock.Mock() servers = [mock.Mock(), mock.Mock()] nova.servers.get.side_effect = servers servers[0].name = 'bm_0' servers[0].flavor = {'id': '1'} servers[0].addresses = { 'provision': [{ 'OS-EXT-IPS-MAC:mac_addr': 'aa:aa:aa:aa:aa:aa' }] } servers[1].name = 'bm_1' servers[1].flavor = {'id': '1'} servers[1].addresses = { 'provision': [{ 'OS-EXT-IPS-MAC:mac_addr': 'aa:aa:aa:aa:aa:ab' }] } mock_flavor = mock.Mock() mock_flavor.vcpus = 128 mock_flavor.ram = 145055 mock_flavor.disk = 1024 nova.flavors.get.return_value = mock_flavor nodes, bmc_bm_pairs = build_nodes_json._build_nodes( nova, bmc_ports, bm_ports, 'provision') expected_nodes = TEST_NODES self.assertEqual(expected_nodes, nodes) self.assertEqual([('1.1.1.1', 'bm_0'), ('1.1.1.2', 'bm_1')], bmc_bm_pairs)
def test_build_nodes_with_physnet_strip_id(self, mock_make_client): args = mock.Mock() args.physical_network = True args.use_mac = False args.driver = 'pxe_ipmitool' args.id = '123' bmc_ports = [{ 'fixed_ips': [{ 'ip_address': '1.1.1.1' }] }, { 'fixed_ips': [{ 'ip_address': '1.1.1.2' }] }] bm_ports = [{ 'device_id': '1', 'id': 'port_id_server1' }, { 'device_id': '2', 'id': 'port_id_server2' }] provision_net_map = { 'port_id_server1': 'ctlplane-123', 'port_id_server2': 'ctlplane-123', 'port_id_server3': 'ctlplane-123', } nova = mock.Mock() servers = [mock.Mock(), mock.Mock(), mock.Mock()] self._create_build_nodes_mocks(nova, servers, provision_net='ctlplane-123') servers[1].image = None mock_to_dict = { 'os-extended-volumes:volumes_attached': [{ 'id': 'v0lume' }] } servers[1].to_dict.return_value = mock_to_dict mock_cinder = mock.Mock() mock_make_client.return_value = mock_cinder mock_vol = mock.Mock() mock_vol.size = 100 mock_cinder.volumes.get.return_value = mock_vol servers[2].name = 'undercloud' servers[2].flavor = {'id': '1'} servers[2].addresses = { 'ctlplane-123': [{ 'OS-EXT-IPS-MAC:mac_addr': 'aa:aa:aa:aa:aa:ac' }] } servers[2].image = {'id': 'f00'} nova.servers.list.return_value = [servers[2]] ips_return_val = 'ips call value' nova.servers.ips.return_value = ips_return_val glance = mock.Mock() nodes = build_nodes_json._build_nodes(nova, glance, zip(bmc_ports, bm_ports), provision_net_map, 'bm', args) expected_nodes = copy.deepcopy(TEST_NODES) expected_nodes[1]['disk'] = 100 expected_nodes[0]['ports'][0]['physical_network'] = 'ctlplane' expected_nodes[1]['ports'][0]['physical_network'] = 'ctlplane' self.assertEqual(expected_nodes, nodes)