def setUp(self):
     super(PciDeviceTestCase, self).setUp()
     self.ctxt = context.get_admin_context()
     self.inst = instance.Instance()
     self.inst.uuid = 'fake-inst-uuid'
     self.inst.pci_devices = pci_device_obj.PciDeviceList()
     self.devobj = pci_device_obj.PciDevice._from_db_object(
         self.ctxt, pci_device_obj.PciDevice(), dev_dict)
    def _from_db_object(context, instance, db_inst, expected_attrs=None):
        """Method to help with migration to objects.

        Converts a database entity to a formal object.
        """
        if expected_attrs is None:
            expected_attrs = []
        # Most of the field names match right now, so be quick
        for field in instance.fields:
            if field in INSTANCE_OPTIONAL_ATTRS:
                continue
            elif field == 'deleted':
                instance.deleted = db_inst['deleted'] == db_inst['id']
            elif field == 'cleaned':
                instance.cleaned = db_inst['cleaned'] == 1
            else:
                instance[field] = db_inst[field]

        if 'metadata' in expected_attrs:
            instance['metadata'] = utils.instance_meta(db_inst)
        if 'system_metadata' in expected_attrs:
            instance['system_metadata'] = utils.instance_sys_meta(db_inst)
        if 'fault' in expected_attrs:
            instance['fault'] = (
                instance_fault.InstanceFault.get_latest_for_instance(
                    context, instance.uuid))

        if 'pci_devices' in expected_attrs:
            pci_devices = base.obj_make_list(context,
                                             pci_device.PciDeviceList(),
                                             pci_device.PciDevice,
                                             db_inst['pci_devices'])
            instance['pci_devices'] = pci_devices
        if 'info_cache' in expected_attrs:
            if db_inst['info_cache'] is None:
                instance.info_cache = None
            elif not instance.obj_attr_is_set('info_cache'):
                # TODO(danms): If this ever happens on a backlevel instance
                # passed to us by a backlevel service, things will break
                instance.info_cache = instance_info_cache.InstanceInfoCache()
            if instance.info_cache is not None:
                instance_info_cache.InstanceInfoCache._from_db_object(
                    context, instance.info_cache, db_inst['info_cache'])
        if 'security_groups' in expected_attrs:
            sec_groups = base.obj_make_list(context,
                                            security_group.SecurityGroupList(),
                                            security_group.SecurityGroup,
                                            db_inst['security_groups'])
            instance['security_groups'] = sec_groups

        instance._context = context
        instance.obj_reset_changes()
        return instance
Exemple #3
0
    def _from_db_object(context, instance, db_inst, expected_attrs=None):
        """Method to help with migration to objects.

        Converts a database entity to a formal object.
        """
        if expected_attrs is None:
            expected_attrs = []
        # Most of the field names match right now, so be quick
        for field in instance.fields:
            if field in INSTANCE_OPTIONAL_FIELDS + INSTANCE_IMPLIED_FIELDS:
                continue
            elif field == 'deleted':
                instance.deleted = db_inst['deleted'] == db_inst['id']
            elif field == 'cleaned':
                instance.cleaned = db_inst['cleaned'] == 1
            else:
                instance[field] = db_inst[field]

        if 'metadata' in expected_attrs:
            instance['metadata'] = utils.instance_meta(db_inst)
        if 'system_metadata' in expected_attrs:
            instance['system_metadata'] = utils.instance_sys_meta(db_inst)
        if 'fault' in expected_attrs:
            instance['fault'] = (
                instance_fault.InstanceFault.get_latest_for_instance(
                    context, instance.uuid))

        if 'pci_devices' in expected_attrs:
            if db_inst['pci_devices'] is None:
                pci_devices = None
            else:
                pci_devices = pci_device._make_pci_list(
                        context, pci_device.PciDeviceList(),
                        db_inst['pci_devices'])
            instance['pci_devices'] = pci_devices

        # NOTE(danms): info_cache and security_groups are almost
        # always joined in the DB layer right now, so check to see if
        # they are asked for and are present in the resulting object
        if 'info_cache' in expected_attrs and db_inst.get('info_cache'):
            instance['info_cache'] = instance_info_cache.InstanceInfoCache()
            instance_info_cache.InstanceInfoCache._from_db_object(
                    context, instance['info_cache'], db_inst['info_cache'])
        if ('security_groups' in expected_attrs and
                db_inst.get('security_groups') is not None):
            instance['security_groups'] = security_group.SecurityGroupList()
            security_group._make_secgroup_list(context,
                                               instance['security_groups'],
                                               db_inst['security_groups'])

        instance._context = context
        instance.obj_reset_changes()
        return instance
Exemple #4
0
    def __init__(self, node_id=None):
        """Create a pci device tracker.

        If a node_id is passed in, it will fetch pci devices information
        from database, otherwise, it will create an empty devices list
        and the resource tracker will update the node_id information later.
        """

        super(PciDevTracker, self).__init__()
        self.stale = {}
        self.node_id = node_id
        self.stats = pci_stats.PciDeviceStats()
        if node_id:
            self.pci_devs = pci_device.PciDeviceList.get_by_compute_node(
                context, node_id)
        else:
            self.pci_devs = pci_device.PciDeviceList()
        self._initial_instance_usage()
Exemple #5
0
 def _create_fake_instance(self):
     self.inst = instance.Instance()
     self.inst.uuid = 'fake-inst-uuid'
     self.inst.pci_devices = pci_device.PciDeviceList()
Exemple #6
0
 def _create_fake_instance(self):
     self.inst = instance.Instance()
     self.inst.uuid = 'fake-inst-uuid'
     self.inst.pci_devices = pci_device.PciDeviceList()
     self.inst.vm_state = vm_states.ACTIVE
     self.inst.task_state = None
Exemple #7
0
 def _fake_obj_load_attr(foo, attrname):
     if attrname == 'pci_devices':
         self.load_attr_called = True
         foo.pci_devices = pci_device.PciDeviceList()
 def test_compat_pci_devices(self):
     inst = instance.Instance()
     inst.pci_devices = pci_device.PciDeviceList()
     primitive = inst.obj_to_primitive(target_version='1.5')
     self.assertNotIn('pci_devices', primitive)
Exemple #9
0
 def _attr_pci_devices_from_primitive(self, val):
     if val is None:
         # Only possible in version <= 1.7
         return pci_device.PciDeviceList()
     return base.NovaObject.obj_from_primitive(val)