def test_get_datastore_ref_and_name_with_regex(self): # Test with a regex that matches with a datastore datastore_valid_regex = re.compile("^openstack.*\d$") fake_objects = fake.FakeRetrieveResult() fake_objects.add_object(fake.Datastore("openstack-ds0")) fake_objects.add_object(fake.Datastore("fake-ds0")) fake_objects.add_object(fake.Datastore("fake-ds1")) result = vm_util.get_datastore_ref_and_name( fake_session(fake_objects), None, None, datastore_valid_regex) self.assertEqual("openstack-ds0", result[1])
def test_get_datastore_ref_and_name_with_list(self): # Test with a regex containing whitelist of datastores datastore_valid_regex = re.compile("(openstack-ds0|openstack-ds2)") fake_objects = fake.FakeRetrieveResult() fake_objects.add_object(fake.Datastore("openstack-ds0")) fake_objects.add_object(fake.Datastore("openstack-ds1")) fake_objects.add_object(fake.Datastore("openstack-ds2")) result = vm_util.get_datastore_ref_and_name( fake_session(fake_objects), None, None, datastore_valid_regex) self.assertNotEquals("openstack-ds1", result[1])
def test_get_datastore_ref_and_name_with_token(self): regex = re.compile("^ds.*\d$") fake0 = fake.FakeRetrieveResult() fake0.add_object(fake.Datastore("ds0", 10 * units.Gi, 5 * units.Gi)) fake0.add_object(fake.Datastore("foo", 10 * units.Gi, 9 * units.Gi)) setattr(fake0, 'token', 'token-0') fake1 = fake.FakeRetrieveResult() fake1.add_object(fake.Datastore("ds2", 10 * units.Gi, 8 * units.Gi)) fake1.add_object(fake.Datastore("ds3", 10 * units.Gi, 1 * units.Gi)) result = vm_util.get_datastore_ref_and_name(fake_session(fake0, fake1), None, None, regex) self.assertEqual("ds2", result[1])
def test_get_datastore_ref_and_name(self): result = vm_util.get_datastore_ref_and_name( fake_session([fake.Datastore()])) self.assertEquals(result[1], "fake-ds") self.assertEquals(result[2], 1024 * 1024 * 1024) self.assertEquals(result[3], 1024 * 1024 * 500)
def test_get_datastore_ref_and_name(self): fake_objects = fake.FakeRetrieveResult() fake_objects.add_object(fake.Datastore()) result = vm_util.get_datastore_ref_and_name(fake_session(fake_objects)) self.assertEqual(result[1], "fake-ds") self.assertEqual(result[2], units.Ti) self.assertEqual(result[3], 500 * units.Gi)
def test_get_datastore(self): fake_objects = fake.FakeRetrieveResult() fake_objects.add_object(fake.Datastore()) result = vm_util.get_datastore(fake_session(fake_objects)) self.assertEqual("fake-ds", result.name) self.assertEqual(units.Ti, result.capacity) self.assertEqual(500 * units.Gi, result.freespace)
def test_get_datastore_inaccessible_ds(self): data_store = fake.Datastore() data_store.set("summary.accessible", False) fake_objects = fake.FakeRetrieveResult() fake_objects.add_object(data_store) self.assertRaises(exception.DatastoreNotFound, vm_util.get_datastore, fake_session(fake_objects))
def test_get_datastore_with_regex_error(self): # Test with a regex that has no match # Checks if code raises DatastoreNotFound with a specific message datastore_invalid_regex = re.compile("unknown-ds") exp_message = (_("Datastore regex %s did not match any datastores") % datastore_invalid_regex.pattern) fake_objects = fake.FakeRetrieveResult() fake_objects.add_object(fake.Datastore("fake-ds0")) fake_objects.add_object(fake.Datastore("fake-ds1")) # assertRaisesRegExp would have been a good choice instead of # try/catch block, but it's available only from Py 2.7. try: vm_util.get_datastore(fake_session(fake_objects), None, None, datastore_invalid_regex) except exception.DatastoreNotFound as e: self.assertEqual(exp_message, e.args[0]) else: self.fail("DatastoreNotFound Exception was not raised with " "message: %s" % exp_message)
def test_get_cdrom_attach_config_spec(self): result = vm_util.get_cdrom_attach_config_spec(fake.FakeFactory(), fake.Datastore(), "/tmp/foo.iso", 0) expected = """{ 'deviceChange': [ { 'device': { 'connectable': { 'allowGuestControl': False, 'startConnected': True, 'connected': True, 'obj_name': 'ns0: VirtualDeviceConnectInfo' }, 'backing': { 'datastore': { "summary.type": "VMFS", "summary.accessible":true, "summary.name": "fake-ds", "summary.capacity": 1099511627776, "summary.freeSpace": 536870912000, "browser": "" }, 'fileName': '/tmp/foo.iso', 'obj_name': 'ns0: VirtualCdromIsoBackingInfo' }, 'controllerKey': 200, 'unitNumber': 0, 'key': -1, 'obj_name': 'ns0: VirtualCdrom' }, 'operation': 'add', 'obj_name': 'ns0: VirtualDeviceConfigSpec' } ], 'obj_name': 'ns0: VirtualMachineConfigSpec' } """ expected = re.sub(r'\s+', '', expected) result = re.sub(r'\s+', '', repr(result)) self.assertEqual(expected, result)
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)) fake_datastores = fake.FakeRetrieveResult() fake_datastores.add_object(fake.Datastore("fake-ds0")) fake_datastores.add_object(fake.Datastore("fake-ds1")) 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 elif "get_dynamic_property" in args: return respool_resource_usage elif "get_inner_objects" in args: return fake_datastores with mock.patch.object(fake_session, '_call_method', fake_call_method): result = vm_util.get_stats_from_cluster(session, "cluster1") cpu_info = {} mem_info = {} disk_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 disk_info['free'] = 1000 disk_info['total'] = 2048 expected_stats = { 'cpu': cpu_info, 'mem': mem_info, 'disk': disk_info } self.assertEqual(expected_stats, result)