Reparent placement objects to oslo_versionedobjects

The versioned objects used by placement can inherit directly from
oslo_versionedobjects, so this change reparents them. This helps make
sure that placement is independent from nova and will ease the eventual
extraction of placement to its own repo.

Existing functional tests cover this change.

Change-Id: Ifa8cd445927573ff70f69148b36da37469470cf4
This commit is contained in:
Chris Dent 2018-03-10 13:18:45 +00:00
parent 8b19d5b735
commit 07d861f346

View File

@ -27,6 +27,8 @@ from oslo_config import cfg
from oslo_db import api as oslo_db_api
from oslo_db import exception as db_exc
from oslo_log import log as logging
from oslo_versionedobjects import base
from oslo_versionedobjects import fields
import six
import sqlalchemy as sa
from sqlalchemy import exc as sqla_exc
@ -39,8 +41,6 @@ from nova.db.sqlalchemy import api_models as models
from nova.db.sqlalchemy import resource_class_cache as rc_cache
from nova import exception
from nova.i18n import _
from nova.objects import base
from nova.objects import fields
from nova import rc_fields
_TRAIT_TBL = models.Trait.__table__
@ -652,8 +652,8 @@ def _delete_rp_record(context, _id):
delete(synchronize_session=False)
@base.NovaObjectRegistry.register_if(False)
class ResourceProvider(base.NovaObject, base.NovaTimestampObject):
@base.VersionedObjectRegistry.register_if(False)
class ResourceProvider(base.VersionedObject, base.TimestampedObject):
SETTABLE_FIELDS = ('name', 'parent_provider_uuid')
fields = {
@ -1377,8 +1377,8 @@ def _get_all_with_shared(ctx, resources):
return [r for r in ctx.session.execute(sel)]
@base.NovaObjectRegistry.register_if(False)
class ResourceProviderList(base.ObjectListBase, base.NovaObject):
@base.VersionedObjectRegistry.register_if(False)
class ResourceProviderList(base.ObjectListBase, base.VersionedObject):
fields = {
'objects': fields.ListOfObjectsField('ResourceProvider'),
@ -1597,8 +1597,8 @@ class ResourceProviderList(base.ObjectListBase, base.NovaObject):
ResourceProvider, resource_providers)
@base.NovaObjectRegistry.register_if(False)
class Inventory(base.NovaObject, base.NovaTimestampObject):
@base.VersionedObjectRegistry.register_if(False)
class Inventory(base.VersionedObject, base.TimestampedObject):
fields = {
'id': fields.IntegerField(read_only=True),
@ -1638,8 +1638,8 @@ def _get_inventory_by_provider_id(ctx, rp_id):
return [dict(r) for r in ctx.session.execute(sel)]
@base.NovaObjectRegistry.register_if(False)
class InventoryList(base.ObjectListBase, base.NovaObject):
@base.VersionedObjectRegistry.register_if(False)
class InventoryList(base.ObjectListBase, base.VersionedObject):
fields = {
'objects': fields.ListOfObjectsField('Inventory'),
@ -1682,8 +1682,8 @@ class InventoryList(base.ObjectListBase, base.NovaObject):
return inv_list
@base.NovaObjectRegistry.register_if(False)
class Allocation(base.NovaObject, base.NovaTimestampObject):
@base.VersionedObjectRegistry.register_if(False)
class Allocation(base.VersionedObject, base.TimestampedObject):
fields = {
'id': fields.IntegerField(),
@ -2006,8 +2006,8 @@ def _get_allocations_by_consumer_uuid(ctx, consumer_uuid):
return [dict(r) for r in ctx.session.execute(sel)]
@base.NovaObjectRegistry.register_if(False)
class AllocationList(base.ObjectListBase, base.NovaObject):
@base.VersionedObjectRegistry.register_if(False)
class AllocationList(base.ObjectListBase, base.VersionedObject):
fields = {
'objects': fields.ListOfObjectsField('Allocation'),
@ -2171,8 +2171,8 @@ class AllocationList(base.ObjectListBase, base.NovaObject):
return "AllocationList[" + ", ".join(strings) + "]"
@base.NovaObjectRegistry.register_if(False)
class Usage(base.NovaObject):
@base.VersionedObjectRegistry.register_if(False)
class Usage(base.VersionedObject):
fields = {
'resource_class': rc_fields.ResourceClassField(read_only=True),
@ -2194,8 +2194,8 @@ class Usage(base.NovaObject):
return target
@base.NovaObjectRegistry.register_if(False)
class UsageList(base.ObjectListBase, base.NovaObject):
@base.VersionedObjectRegistry.register_if(False)
class UsageList(base.ObjectListBase, base.VersionedObject):
fields = {
'objects': fields.ListOfObjectsField('Usage'),
@ -2255,8 +2255,8 @@ class UsageList(base.ObjectListBase, base.NovaObject):
return "UsageList[" + ", ".join(strings) + "]"
@base.NovaObjectRegistry.register_if(False)
class ResourceClass(base.NovaObject, base.NovaTimestampObject):
@base.VersionedObjectRegistry.register_if(False)
class ResourceClass(base.VersionedObject, base.TimestampedObject):
MIN_CUSTOM_RESOURCE_CLASS_ID = 10000
"""Any user-defined resource classes must have an identifier greater than
@ -2422,8 +2422,8 @@ class ResourceClass(base.NovaObject, base.NovaTimestampObject):
raise exception.ResourceClassExists(resource_class=name)
@base.NovaObjectRegistry.register_if(False)
class ResourceClassList(base.ObjectListBase, base.NovaObject):
@base.VersionedObjectRegistry.register_if(False)
class ResourceClassList(base.ObjectListBase, base.VersionedObject):
fields = {
'objects': fields.ListOfObjectsField('ResourceClass'),
@ -2447,8 +2447,8 @@ class ResourceClassList(base.ObjectListBase, base.NovaObject):
return "ResourceClassList[" + ", ".join(strings) + "]"
@base.NovaObjectRegistry.register_if(False)
class Trait(base.NovaObject, base.NovaTimestampObject):
@base.VersionedObjectRegistry.register_if(False)
class Trait(base.VersionedObject, base.TimestampedObject):
# All the user-defined traits must begin with this prefix.
CUSTOM_NAMESPACE = 'CUSTOM_'
@ -2534,8 +2534,8 @@ class Trait(base.NovaObject, base.NovaTimestampObject):
self._destroy_in_db(self._context, self.id, self.name)
@base.NovaObjectRegistry.register_if(False)
class TraitList(base.ObjectListBase, base.NovaObject):
@base.VersionedObjectRegistry.register_if(False)
class TraitList(base.ObjectListBase, base.VersionedObject):
fields = {
'objects': fields.ListOfObjectsField('Trait')
@ -2582,8 +2582,8 @@ class TraitList(base.ObjectListBase, base.NovaObject):
return base.obj_make_list(context, cls(context), Trait, db_traits)
@base.NovaObjectRegistry.register_if(False)
class AllocationRequestResource(base.NovaObject):
@base.VersionedObjectRegistry.register_if(False)
class AllocationRequestResource(base.VersionedObject):
fields = {
'resource_provider': fields.ObjectField('ResourceProvider'),
@ -2592,8 +2592,8 @@ class AllocationRequestResource(base.NovaObject):
}
@base.NovaObjectRegistry.register_if(False)
class AllocationRequest(base.NovaObject):
@base.VersionedObjectRegistry.register_if(False)
class AllocationRequest(base.VersionedObject):
fields = {
'resource_requests': fields.ListOfObjectsField(
@ -2602,8 +2602,8 @@ class AllocationRequest(base.NovaObject):
}
@base.NovaObjectRegistry.register_if(False)
class ProviderSummaryResource(base.NovaObject):
@base.VersionedObjectRegistry.register_if(False)
class ProviderSummaryResource(base.VersionedObject):
fields = {
'resource_class': rc_fields.ResourceClassField(read_only=True),
@ -2612,8 +2612,8 @@ class ProviderSummaryResource(base.NovaObject):
}
@base.NovaObjectRegistry.register_if(False)
class ProviderSummary(base.NovaObject):
@base.VersionedObjectRegistry.register_if(False)
class ProviderSummary(base.VersionedObject):
fields = {
'resource_provider': fields.ObjectField('ResourceProvider'),
@ -3455,8 +3455,8 @@ def _trait_ids_from_names(ctx, names):
return {r[0]: r[1] for r in ctx.session.execute(sel)}
@base.NovaObjectRegistry.register_if(False)
class AllocationCandidates(base.NovaObject):
@base.VersionedObjectRegistry.register_if(False)
class AllocationCandidates(base.VersionedObject):
"""The AllocationCandidates object is a collection of possible allocations
that match some request for resources, along with some summary information
about the resource providers involved in these allocation candidates.