예제 #1
0
    def test_get_host_name_for_vm(self):

        fake_vm = fake.ManagedObject(
            "VirtualMachine",
            fake.ManagedObjectReference("vm-123", "VirtualMachine"))
        fake_vm.propSet.append(fake.Property('name', 'vm-123'))
        fake_objects = fake.FakeRetrieveResult()
        fake_objects.add_object(fake_vm)

        vm_ref = vm_util.get_vm_ref_from_name(fake_session(fake_objects),
                                              'vm-123')

        self.assertIsNotNone(vm_ref)

        fake_results = [
            fake.ObjectContent(None, [
                fake.Property(
                    'runtime.host',
                    fake.ManagedObjectReference('host-123', 'HostSystem'))
            ])
        ]

        fake_objects = fake.FakeRetrieveResult()
        for results in fake_results:
            fake_objects.add_object(results)

        host_id = vm_util.get_host_id_from_vm_ref(fake_session(fake_objects),
                                                  vm_ref)

        self.assertEqual('host-123', host_id)
예제 #2
0
    def test_get_stats_from_cluster(self):
        ManagedObjectRefs = [
            fake.ManagedObjectReference("host1", "HostSystem"),
            fake.ManagedObjectReference("host2", "HostSystem")
        ]
        hosts = fake._convert_to_array_of_mor(ManagedObjectRefs)
        respool = fake.ManagedObjectReference("resgroup-11", "ResourcePool")
        prop_dict = {'host': hosts, 'resourcePool': respool}

        hardware = fake.DataObject()
        hardware.numCpuCores = 8
        hardware.numCpuThreads = 16
        hardware.vendor = "Intel"
        hardware.cpuModel = "Intel(R) Xeon(R)"

        runtime_host_1 = fake.DataObject()
        runtime_host_1.connectionState = "connected"
        runtime_host_2 = fake.DataObject()
        runtime_host_2.connectionState = "disconnected"

        prop_list_host_1 = [
            fake.Prop(name="hardware_summary", val=hardware),
            fake.Prop(name="runtime_summary", val=runtime_host_1)
        ]
        prop_list_host_2 = [
            fake.Prop(name="hardware_summary", val=hardware),
            fake.Prop(name="runtime_summary", val=runtime_host_2)
        ]
        fake_objects = fake.FakeRetrieveResult()
        fake_objects.add_object(
            fake.ObjectContent("prop_list_host1", prop_list_host_1))
        fake_objects.add_object(
            fake.ObjectContent("prop_list_host1", prop_list_host_2))

        respool_resource_usage = fake.DataObject()
        respool_resource_usage.maxUsage = 5368709120
        respool_resource_usage.overallUsage = 2147483648
        session = fake_session()

        def fake_call_method(*args):
            if "get_dynamic_properties" in args:
                return prop_dict
            elif "get_properties_for_a_collection_of_objects" in args:
                return fake_objects
            else:
                return respool_resource_usage

        with mock.patch.object(fake_session, '_call_method', fake_call_method):
            result = vm_util.get_stats_from_cluster(session, "cluster1")
            cpu_info = {}
            mem_info = {}
            cpu_info['vcpus'] = 16
            cpu_info['cores'] = 8
            cpu_info['vendor'] = ["Intel"]
            cpu_info['model'] = ["Intel(R) Xeon(R)"]
            mem_info['total'] = 5120
            mem_info['free'] = 3072
            expected_stats = {'cpu': cpu_info, 'mem': mem_info}
            self.assertEqual(expected_stats, result)
예제 #3
0
    def test_list_base_images(self):
        def fake_get_dynamic_property(vim, mobj, type, property_name):
            return 'fake-ds-browser'

        def fake_get_sub_folders(session, ds_browser, ds_path):
            files = set()
            files.add('image-ref-uuid')
            return files

        with contextlib.nested(
                mock.patch.object(vim_util, 'get_dynamic_property',
                                  fake_get_dynamic_property),
                mock.patch.object(ds_util, 'get_sub_folders',
                                  fake_get_sub_folders)) as (_get_dynamic,
                                                             _get_sub_folders):
            fake_ds_ref = fake.ManagedObjectReference('fake-ds-ref')
            datastore = {'name': 'ds', 'ref': fake_ds_ref}
            ds_path = ds_util.build_datastore_path(datastore['name'],
                                                   'base_folder')
            images = self._imagecache._list_datastore_images(
                ds_path, datastore)
            originals = set()
            originals.add('image-ref-uuid')
            self.assertEqual({
                'originals': originals,
                'unexplained_images': []
            }, images)
예제 #4
0
파일: test_vmops.py 프로젝트: xzj675/nova
 def test_get_ds_browser(self):
     cache = self._vmops._datastore_browser_mapping
     ds_browser = mock.Mock()
     moref = vmwareapi_fake.ManagedObjectReference('datastore-100')
     self.assertIsNone(cache.get(moref.value))
     mock_call_method = mock.Mock(return_value=ds_browser)
     with mock.patch.object(self._session, '_call_method',
                            mock_call_method):
         ret = self._vmops._get_ds_browser(moref)
         mock_call_method.assert_called_once_with(vim_util,
             'get_dynamic_property', moref, 'Datastore', 'browser')
         self.assertIs(ds_browser, ret)
         self.assertIs(ds_browser, cache.get(moref.value))
예제 #5
0
 def test_get_ds_browser(self):
     cache = self._imagecache._ds_browser
     ds_browser = mock.Mock()
     moref = fake.ManagedObjectReference('datastore-100')
     self.assertIsNone(cache.get(moref.value))
     mock_get_method = mock.Mock(return_value=ds_browser)
     with mock.patch.object(vim_util, 'get_dynamic_property',
                            mock_get_method):
         ret = self._imagecache._get_ds_browser(moref)
         mock_get_method.assert_called_once_with(mock.ANY, moref,
                                                 'Datastore', 'browser')
         self.assertIs(ds_browser, ret)
         self.assertIs(ds_browser, cache.get(moref.value))
예제 #6
0
    def test_get_host_ref_from_id(self):

        fake_host_sys = fake.HostSystem(
            fake.ManagedObjectReference("HostSystem", "host-123"))

        fake_host_id = fake_host_sys.obj.value
        fake_host_name = "ha-host"

        ref = vm_util.get_host_ref_from_id(fake_session([fake_host_sys]),
                                           fake_host_id, ['name'])

        self.assertIsInstance(ref, fake.HostSystem)
        self.assertEqual(fake_host_id, ref.obj.value)

        host_name = vm_util.get_host_name_from_host_ref(ref)

        self.assertEquals(fake_host_name, host_name)
예제 #7
0
파일: test_vmops.py 프로젝트: xzj675/nova
    def setUp(self):
        super(VMwareVMOpsTestCase, self).setUp()
        vmwareapi_fake.reset()
        stubs.set_stubs(self.stubs)
        self.flags(image_cache_subdirectory_name='vmware_base',
                   my_ip='',
                   flat_injected=True,
                   vnc_enabled=True)
        self._context = context.RequestContext('fake_user', 'fake_project')
        self._session = driver.VMwareAPISession()

        self._virtapi = mock.Mock()
        self._vmops = vmops.VMwareVCVMOps(self._session, self._virtapi, None)

        self._image_id = nova.tests.image.fake.get_valid_image_id()
        values = {
            'name': 'fake_name',
            'uuid': 'fake_uuid',
            'vcpus': 1,
            'memory_mb': 512,
            'image_ref': self._image_id,
            'root_gb': 1,
            'node': 'respool-1001(MyResPoolName)'
        }
        self._instance = fake_instance.fake_instance_obj(
                                 self._context, **values)

        fake_ds_ref = vmwareapi_fake.ManagedObjectReference('fake-ds')

        self._ds_record = vm_util.DSRecord(
                datastore=fake_ds_ref, name='fake_ds',
                capacity=10 * units.Gi,
                freespace=10 * units.Gi)
        self._dc_info = vmops.DcInfo(
                ref='fake_dc_ref', name='fake_dc',
                vmFolder='fake_vm_folder')

        subnet_4 = network_model.Subnet(cidr='192.168.0.1/24',
                                        dns=[network_model.IP('192.168.0.1')],
                                        gateway=
                                            network_model.IP('192.168.0.1'),
                                        ips=[
                                            network_model.IP('192.168.0.100')],
                                        routes=None)
        subnet_6 = network_model.Subnet(cidr='dead:beef::1/64',
                                        dns=None,
                                        gateway=
                                            network_model.IP('dead:beef::1'),
                                        ips=[network_model.IP(
                                            'dead:beef::dcad:beff:feef:0')],
                                        routes=None)
        network = network_model.Network(id=0,
                                        bridge='fa0',
                                        label='fake',
                                        subnets=[subnet_4, subnet_6],
                                        vlan=None,
                                        bridge_interface=None,
                                        injected=True)
        self.network_info = network_model.NetworkInfo([
                network_model.VIF(id=None,
                                  address='DE:AD:BE:EF:00:00',
                                  network=network,
                                  type=None,
                                  devname=None,
                                  ovs_interfaceid=None,
                                  rxtx_cap=3)
                ])
        pure_IPv6_network = network_model.Network(id=0,
                                        bridge='fa0',
                                        label='fake',
                                        subnets=[subnet_6],
                                        vlan=None,
                                        bridge_interface=None,
                                        injected=True)
        self.pure_IPv6_network_info = network_model.NetworkInfo([
                network_model.VIF(id=None,
                                  address='DE:AD:BE:EF:00:00',
                                  network=pure_IPv6_network,
                                  type=None,
                                  devname=None,
                                  ovs_interfaceid=None,
                                  rxtx_cap=3)
                ])