Example #1
0
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
Example #2
0
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
Example #3
0
 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)
Example #4
0
 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')
Example #7
0
 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')
Example #8
0
 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)
Example #9
0
 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
Example #10
0
 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
Example #11
0
 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
Example #12
0
 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
Example #14
0
 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)
Example #15
0
 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)
Example #16
0
 def test_remove_device_fail(self):
     pci_device.claim(self.devobj, self.inst)
     self.assertRaises(exception.PciDeviceInvalidStatus, pci_device.remove,
                       self.devobj)
Example #17
0
 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)
Example #18
0
 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)
Example #19
0
 def test_remove_device_fail(self):
     pci_device.claim(self.devobj, self.inst)
     self.assertRaises(exception.PciDeviceInvalidStatus,
                       pci_device.remove, self.devobj)
Example #20
0
 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)
Example #21
0
 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)