Пример #1
0
 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']))
Пример #2
0
    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
Пример #3
0
    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
Пример #4
0
    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"])
Пример #6
0
    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'])
Пример #7
0
    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'])
Пример #8
0
    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'])
Пример #9
0
 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)
Пример #10
0
    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
Пример #11
0
    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
Пример #12
0
    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()
Пример #13
0
    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
Пример #14
0
 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)
Пример #16
0
 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"]))