def _get_instances_with_cached_ips(orig_func, *args, **kwargs): """Kludge the cache into instance(s) without having to create DB entries """ instances = orig_func(*args, **kwargs) context = args[0] fake_device = pci_device_obj.PciDevice.get_by_dev_addr(context, 1, 'a') def _info_cache_for(instance): info_cache = dict(test_instance_info_cache.fake_info_cache, network_info=_get_fake_cache(), instance_uuid=instance['uuid']) if isinstance(instance, obj_base.NovaObject): _info_cache = instance_info_cache.InstanceInfoCache() instance_info_cache.InstanceInfoCache._from_db_object( context, _info_cache, info_cache) info_cache = _info_cache instance['info_cache'] = info_cache if isinstance(instances, (list, obj_base.ObjectListBase)): for instance in instances: _info_cache_for(instance) pci_device.claim(fake_device, instance) pci_device.allocate(fake_device, instance) else: _info_cache_for(instances) pci_device.claim(fake_device, instances) pci_device.allocate(fake_device, instances) return instances
def _get_instances_with_cached_ips(orig_func, *args, **kwargs): """Kludge the cache into instance(s) without having to create DB entries """ instances = orig_func(*args, **kwargs) context = args[0] fake_device = objects.PciDevice.get_by_dev_addr(context, 1, 'a') def _info_cache_for(instance): info_cache = dict(test_instance_info_cache.fake_info_cache, network_info=_get_fake_cache(), instance_uuid=instance['uuid']) if isinstance(instance, obj_base.NovaObject): _info_cache = objects.InstanceInfoCache(context) objects.InstanceInfoCache._from_db_object(context, _info_cache, info_cache) info_cache = _info_cache instance['info_cache'] = info_cache if isinstance(instances, (list, obj_base.ObjectListBase)): for instance in instances: _info_cache_for(instance) pci_device.claim(fake_device, instance) pci_device.allocate(fake_device, instance) else: _info_cache_for(instances) pci_device.claim(fake_device, instances) pci_device.allocate(fake_device, instances) return instances
def test_allocacte_device_fail_owner(self): inst_2 = instance.Instance() inst_2.uuid = 'fake-inst-uuid-2' pci_device.claim(self.devobj, self.inst) self.assertRaises(exception.PciDeviceInvalidOwner, pci_device.allocate, self.devobj, inst_2)
def setUp(self): super(PciServerControllerTest, self).setUp() self.controller = pci.PciServerController() self.fake_obj = { 'server': { 'addresses': {}, 'id': 'fb08', 'name': 'a3', 'status': 'ACTIVE', 'tenant_id': '9a3af784c', 'user_id': 'e992080ac0', } } self.fake_list = { 'servers': [{ 'addresses': {}, 'id': 'fb08', 'name': 'a3', 'status': 'ACTIVE', 'tenant_id': '9a3af784c', 'user_id': 'e992080ac', }] } self._create_fake_instance() self._create_fake_pci_device() pci_device.claim(self.pci_device, self.inst) pci_device.allocate(self.pci_device, self.inst)
def test_free_allocated_device(self): pci_device.claim(self.devobj, self.inst) pci_device.allocate(self.devobj, self.inst) self.assertEqual(len(self.inst.pci_devices), 1) pci_device.free(self.devobj, self.inst) self.assertEqual(len(self.inst.pci_devices), 0) self.assertEqual(self.devobj.status, 'available') self.assertIsNone(self.devobj.instance_uuid)
def test_allocate_device(self): pci_device.claim(self.devobj, self.inst) pci_device.allocate(self.devobj, self.inst) self.assertEqual(self.devobj.status, 'allocated') self.assertEqual(self.devobj.instance_uuid, 'fake-inst-uuid') self.assertEqual(len(self.inst.pci_devices), 1) self.assertEqual(self.inst.pci_devices[0]['vendor_id'], 'v') self.assertEqual(self.inst.pci_devices[0]['status'], 'allocated')
def _claim_instance(self, instance, prefix=''): pci_requests = pci_request.get_instance_pci_requests(instance, prefix) if not pci_requests: return None devs = self.stats.consume_requests(pci_requests) if not devs: raise exception.PciDeviceRequestFailed(pci_requests) for dev in devs: pci_device.claim(dev, instance) return devs
def _claim_instance(self, context, instance, prefix=''): pci_requests = objects.InstancePCIRequests.get_by_instance( context, instance) if not pci_requests.requests: return None devs = self.stats.consume_requests(pci_requests.requests) if not devs: raise exception.PciDeviceRequestFailed(pci_requests) for dev in devs: pci_device.claim(dev, instance) return devs
def _claim_instance(self, instance, prefix=''): pci_requests = pci_request.get_instance_pci_requests( instance, prefix) if not pci_requests: return None devs = self.stats.consume_requests(pci_requests) if not devs: raise exception.PciDeviceRequestFailed(pci_requests) for dev in devs: pci_device.claim(dev, instance) return devs
def _claim_instance(self, context, instance, prefix=''): if prefix: is_new = True else: is_new = False pci_requests = objects.InstancePCIRequests.\ get_by_instance_uuid_and_newness( context, instance['uuid'], is_new) if not pci_requests.requests: return None devs = self.stats.consume_requests(pci_requests.requests) if not devs: raise exception.PciDeviceRequestFailed(pci_requests) for dev in devs: pci_device.claim(dev, instance) return devs
def setUp(self): super(PciServerControllerTest, self).setUp() self.controller = pci.PciServerController() self.fake_obj = {'server': {'addresses': {}, 'id': 'fb08', 'name': 'a3', 'status': 'ACTIVE', 'tenant_id': '9a3af784c', 'user_id': 'e992080ac0', }} self.fake_list = {'servers': [{'addresses': {}, 'id': 'fb08', 'name': 'a3', 'status': 'ACTIVE', 'tenant_id': '9a3af784c', 'user_id': 'e992080ac', }]} self._create_fake_instance() self._create_fake_pci_device() pci_device.claim(self.pci_device, self.inst) pci_device.allocate(self.pci_device, self.inst)
def test_free_claimed_device(self): pci_device.claim(self.devobj, self.inst) pci_device.free(self.devobj, self.inst) self.assertEqual(self.devobj.status, 'available') self.assertIsNone(self.devobj.instance_uuid)
def test_remove_device_fail(self): pci_device.claim(self.devobj, self.inst) self.assertRaises(exception.PciDeviceInvalidStatus, pci_device.remove, self.devobj)
def test_claim_device(self): pci_device.claim(self.devobj, self.inst) self.assertEqual(self.devobj.status, 'claimed') self.assertEqual(self.devobj.instance_uuid, self.inst.uuid) self.assertEqual(len(self.inst.pci_devices), 0)