コード例 #1
0
    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'])
コード例 #2
0
    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'])
コード例 #3
0
    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)
コード例 #4
0
    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)
コード例 #6
0
    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)