def get_by_instance_uuid(cls, context, instance_uuid): db_extra = db.instance_extra_get_by_instance_uuid( context, instance_uuid, columns=['trusted_certs']) if not db_extra or not db_extra['trusted_certs']: return None return cls.obj_from_primitive( jsonutils.loads(db_extra['trusted_certs']))
def get_by_instance_uuid(cls, context, instance_uuid): obj_pci_requests = cls(instance_uuid=instance_uuid) obj_pci_requests.requests = [] obj_pci_requests._context = context db_pci_requests = db.instance_extra_get_by_instance_uuid( context, instance_uuid, columns=['pci_requests']) if db_pci_requests: try: requests = jsonutils.loads(db_pci_requests['pci_requests']) except TypeError: requests = [] for request in requests: request_obj = InstancePCIRequest( count=request['count'], spec=request['spec'], alias_name=request['alias_name'], is_new=request['is_new'], request_id=request['request_id']) request_obj.obj_reset_changes() obj_pci_requests.requests.append(request_obj) obj_pci_requests.obj_reset_changes() return obj_pci_requests
def get_by_instance_uuid(cls, context, instance_uuid): db_extra = db.instance_extra_get_by_instance_uuid(context, instance_uuid, columns=["device_metadata"]) if not db_extra or db_extra["device_metadata"] is None: return None primitive = jsonutils.loads(db_extra["device_metadata"]) device_metadata = cls.obj_from_primitive(primitive) return device_metadata
def get_by_instance_uuid(cls, context, instance_uuid): db_extra = db.instance_extra_get_by_instance_uuid( context, instance_uuid, columns=['device_metadata']) if not db_extra or db_extra['device_metadata'] is None: return None primitive = jsonutils.loads(db_extra['device_metadata']) device_metadata = cls.obj_from_primitive(primitive) return device_metadata
def get_by_instance_uuid(cls, context, instance_uuid): db_extra = db.instance_extra_get_by_instance_uuid(context, instance_uuid, columns=["migration_context"]) if not db_extra: raise exception.MigrationContextNotFound(instance_uuid=instance_uuid) if db_extra["migration_context"] is None: return None return cls.obj_from_db_obj(db_extra["migration_context"])
def get_by_instance_uuid(cls, context, instance_uuid): db_extra = db.instance_extra_get_by_instance_uuid( context, instance_uuid, columns=['numa_topology']) if not db_extra: raise exception.NumaTopologyNotFound(instance_uuid=instance_uuid) if db_extra['numa_topology'] is None: return None return cls.obj_from_db_obj(instance_uuid, db_extra['numa_topology'])
def get_by_instance_uuid(cls, context, instance_uuid): db_extra = db.instance_extra_get_by_instance_uuid( context, instance_uuid, columns=['numa_topology']) if not db_extra: raise exception.NumaTopologyNotFound(instance_uuid=instance_uuid) if db_extra['numa_topology'] is None: return None return cls.obj_from_db_obj(instance_uuid, db_extra['numa_topology'])
def get_by_instance_uuid(cls, context, instance_uuid): db_extra = db.instance_extra_get_by_instance_uuid( context, instance_uuid, columns=['migration_context']) if not db_extra: raise exception.MigrationContextNotFound( instance_uuid=instance_uuid) if db_extra['migration_context'] is None: return None return cls.obj_from_db_obj(db_extra['migration_context'])
def test_archive_deleted_rows_with_undeleted_residue(self): # Boots a server, deletes it, and then tries to archive it. server = self._create_server() server_id = server['id'] # Assert that there are instance_actions. instance_actions are # interesting since we don't soft delete them but they have a foreign # key back to the instances table. actions = self.api.get_instance_actions(server_id) self.assertTrue(len(actions), 'No instance actions for server: %s' % server_id) self._delete_server(server_id) # Verify we have the soft deleted instance in the database. admin_context = context.get_admin_context(read_deleted='yes') # This will raise InstanceNotFound if it's not found. instance = db.instance_get_by_uuid(admin_context, server_id) # Make sure it's soft deleted. self.assertNotEqual(0, instance.deleted) # Undelete the instance_extra record to make sure we delete it anyway extra = db.instance_extra_get_by_instance_uuid(admin_context, instance.uuid) self.assertNotEqual(0, extra.deleted) db.instance_extra_update_by_uuid(admin_context, instance.uuid, {'deleted': 0}) extra = db.instance_extra_get_by_instance_uuid(admin_context, instance.uuid) self.assertEqual(0, extra.deleted) # Verify we have some system_metadata since we'll check that later. self.assertTrue(len(instance.system_metadata), 'No system_metadata for instance: %s' % server_id) # Now try and archive the soft deleted records. results, deleted_instance_uuids = db.archive_deleted_rows(max_rows=100) # verify system_metadata was dropped self.assertIn('instance_system_metadata', results) self.assertEqual(len(instance.system_metadata), results['instance_system_metadata']) # Verify that instances rows are dropped self.assertIn('instances', results) # Verify that instance_actions and actions_event are dropped # by the archive self.assertIn('instance_actions', results) self.assertIn('instance_actions_events', results)
def get_by_instance_uuid(cls, context, instance_uuid): db_topology = db.instance_extra_get_by_instance_uuid( context, instance_uuid) if not db_topology: raise exception.NumaTopologyNotFound(instance_uuid=instance_uuid) topo = hardware.VirtNUMAInstanceTopology.from_json( db_topology['numa_topology']) obj_topology = cls.obj_from_topology(topo) obj_topology.id = db_topology['id'] obj_topology.instance_uuid = db_topology['instance_uuid'] # NOTE (ndipanov) not really needed as we never save, but left for # consistency obj_topology.obj_reset_changes() return obj_topology
def get_by_instance_uuid(cls, context, instance_uuid): db_topology = db.instance_extra_get_by_instance_uuid( context, instance_uuid) if not db_topology: raise exception.NumaTopologyNotFound(instance_uuid=instance_uuid) topo = hardware.VirtNUMAInstanceTopology.from_json( db_topology['numa_topology']) obj_topology = cls.obj_from_topology(topo) obj_topology.id = db_topology['id'] obj_topology.instance_uuid = db_topology['instance_uuid'] # NOTE (ndipanov) not really needed as we never save, but left for # consistency obj_topology.obj_reset_changes() return obj_topology
def test_get_with_expected(self): self.mox.StubOutWithMock(db, "instance_get_by_uuid") self.mox.StubOutWithMock(db, "instance_fault_get_by_instance_uuids") self.mox.StubOutWithMock(db, "instance_extra_get_by_instance_uuid") exp_cols = instance.INSTANCE_OPTIONAL_ATTRS[:] exp_cols.remove("fault") exp_cols.remove("numa_topology") db.instance_get_by_uuid(self.context, "uuid", columns_to_join=exp_cols, use_slave=False).AndReturn( self.fake_instance ) fake_faults = test_instance_fault.fake_faults db.instance_fault_get_by_instance_uuids(self.context, [self.fake_instance["uuid"]]).AndReturn(fake_faults) fake_topology = test_instance_numa_topology.fake_db_topology db.instance_extra_get_by_instance_uuid( self.context, self.fake_instance["uuid"], columns=["numa_topology"] ).AndReturn(fake_topology) self.mox.ReplayAll() inst = instance.Instance.get_by_uuid(self.context, "uuid", expected_attrs=instance.INSTANCE_OPTIONAL_ATTRS) for attr in instance.INSTANCE_OPTIONAL_ATTRS: self.assertTrue(inst.obj_attr_is_set(attr)) self.assertRemotes()
def get_by_instance_uuid(cls, context, instance_uuid): obj_pci_requests = cls(instance_uuid=instance_uuid) obj_pci_requests.requests = [] obj_pci_requests._context = context db_pci_requests = db.instance_extra_get_by_instance_uuid( context, instance_uuid, columns=['pci_requests']) if db_pci_requests: try: requests = jsonutils.loads(db_pci_requests['pci_requests']) except TypeError: requests = [] for request in requests: request_obj = InstancePCIRequest( count=request['count'], spec=request['spec'], alias_name=request['alias_name'], is_new=request['is_new'], request_id=request['request_id']) request_obj.obj_reset_changes() obj_pci_requests.requests.append(request_obj) obj_pci_requests.obj_reset_changes() return obj_pci_requests
def get_by_instance_uuid(cls, context, instance_uuid): db_pci_requests = db.instance_extra_get_by_instance_uuid( context, instance_uuid, columns=['pci_requests']) if db_pci_requests is not None: db_pci_requests = db_pci_requests['pci_requests'] return cls.obj_from_db(context, instance_uuid, db_pci_requests)
def get_by_instance_uuid(cls, context, instance_uuid): db_pci_requests = db.instance_extra_get_by_instance_uuid( context, instance_uuid, columns=['pci_requests']) if db_pci_requests is not None: db_pci_requests = db_pci_requests['pci_requests'] return cls.obj_from_db(context, instance_uuid, db_pci_requests)
def get_by_instance_uuid(cls, context, instance_uuid): db_extra = db.instance_extra_get_by_instance_uuid(context, instance_uuid, columns=["vcpu_model"]) if not db_extra or not db_extra["vcpu_model"]: return None return cls.obj_from_primitive(jsonutils.loads(db_extra["vcpu_model"]))