Merge "Create mixin class for common DB fields"
This commit is contained in:
14 changed files with 36 additions and 31 deletions
@@ -19,7 +19,7 @@ from nova.objects import base
from nova.objects import utils
class Aggregate(base.NovaObject):
class Aggregate(base.NovaPersistentObject, base.NovaObject):
fields = {
'id': int,
'name': str,
@@ -186,14 +186,7 @@ class NovaObject(object):
# 'bar': str,
# 'baz': lambda x: str(x).ljust(8),
# }
#
# NOTE(danms): These fields will be inherited by all subclasses.
fields = {
'created_at': obj_utils.datetime_or_str_or_none,
'updated_at': obj_utils.datetime_or_str_or_none,
'deleted_at': obj_utils.datetime_or_str_or_none,
'deleted': bool,
}
fields = {}
obj_extra_fields = []
def __init__(self):
@@ -231,10 +224,6 @@ class NovaObject(object):
raise exception.IncompatibleObjectVersion(objname=objname,
objver=objver)
_attr_created_at_from_primitive = obj_utils.dt_deserializer
_attr_updated_at_from_primitive = obj_utils.dt_deserializer
_attr_deleted_at_from_primitive = obj_utils.dt_deserializer
def _attr_from_primitive(self, attribute, value):
"""Attribute deserialization dispatcher.
@@ -273,10 +262,6 @@ class NovaObject(object):
self._changed_fields = set([x for x in changes if x in self.fields])
return self
_attr_created_at_to_primitive = obj_utils.dt_serializer('created_at')
_attr_updated_at_to_primitive = obj_utils.dt_serializer('updated_at')
_attr_deleted_at_to_primitive = obj_utils.dt_serializer('deleted_at')
def _attr_to_primitive(self, attribute):
"""Attribute serialization dispatcher.
@@ -415,6 +400,26 @@ class NovaObject(object):
self[key] = value
class NovaPersistentObject(object):
"""Mixin class for Persistent objects.
This adds the fields that we use in common for all persisent objects.
"""
fields = {
'created_at': obj_utils.datetime_or_str_or_none,
'updated_at': obj_utils.datetime_or_str_or_none,
'deleted_at': obj_utils.datetime_or_str_or_none,
'deleted': bool,
}
_attr_created_at_from_primitive = obj_utils.dt_deserializer
_attr_updated_at_from_primitive = obj_utils.dt_deserializer
_attr_deleted_at_from_primitive = obj_utils.dt_deserializer
_attr_created_at_to_primitive = obj_utils.dt_serializer('created_at')
_attr_updated_at_to_primitive = obj_utils.dt_serializer('updated_at')
_attr_deleted_at_to_primitive = obj_utils.dt_serializer('deleted_at')
class ObjectListBase(object):
"""Mixin class for lists of objects.
@@ -17,7 +17,7 @@ from nova.objects import base
from nova.objects import utils
class ComputeNode(base.NovaObject):
class ComputeNode(base.NovaPersistentObject, base.NovaObject):
# Version 1.0: Initial version
# Version 1.1: Added get_by_service_id()
VERSION = '1.1'
@@ -46,7 +46,7 @@ INSTANCE_DEFAULT_FIELDS = (INSTANCE_OPTIONAL_COMMON_FIELDS +
INSTANCE_IMPLIED_FIELDS)
class Instance(base.NovaObject):
class Instance(base.NovaPersistentObject, base.NovaObject):
# Version 1.0: Initial version
# Version 1.1: Added info_cache
# Version 1.2: Added security_groups
@@ -18,7 +18,7 @@ from nova.objects import base
from nova.objects import utils
class InstanceAction(base.NovaObject):
class InstanceAction(base.NovaPersistentObject, base.NovaObject):
fields = {
'id': int,
'action': utils.str_or_none,
@@ -84,7 +84,7 @@ class InstanceActionList(base.ObjectListBase, base.NovaObject):
return base.obj_make_list(context, cls(), InstanceAction, db_actions)
class InstanceActionEvent(base.NovaObject):
class InstanceActionEvent(base.NovaPersistentObject, base.NovaObject):
fields = {
'id': int,
'event': utils.str_or_none,
@@ -17,7 +17,7 @@ from nova.objects import base
from nova.objects import utils as obj_utils
class InstanceFault(base.NovaObject):
class InstanceFault(base.NovaPersistentObject, base.NovaObject):
fields = {
'id': int,
'instance_uuid': str,
@@ -20,7 +20,7 @@ from nova.objects import base
from nova.objects import utils as obj_utils
class InstanceGroup(base.NovaObject):
class InstanceGroup(base.NovaPersistentObject, base.NovaObject):
# Version 1.0: Initial version
VERSION = '1.0'
@@ -24,7 +24,7 @@ from nova.openstack.common import log as logging
LOG = logging.getLogger(__name__)
class InstanceInfoCache(base.NovaObject):
class InstanceInfoCache(base.NovaPersistentObject, base.NovaObject):
VERSION = '1.3'
# Version 1.0: Initial version
# Version 1.1: Converted network_info to store the model.
@@ -17,7 +17,7 @@ from nova.objects import base
from nova.objects import utils
class KeyPair(base.NovaObject):
class KeyPair(base.NovaPersistentObject, base.NovaObject):
fields = {
'id': int,
'name': utils.str_or_none,
@@ -18,7 +18,7 @@ from nova.objects import instance as instance_obj
from nova.objects import utils
class Migration(base.NovaObject):
class Migration(base.NovaPersistentObject, base.NovaObject):
fields = {
'id': int,
'source_compute': utils.str_or_none,
@@ -52,7 +52,7 @@ def check_device_status(dev_status=None):
return outer
class PciDevice(base.NovaObject):
class PciDevice(base.NovaPersistentObject, base.NovaObject):
"""Object to represent a PCI device on a compute node.
@@ -16,7 +16,7 @@ from nova import db
from nova.objects import base
class SecurityGroup(base.NovaObject):
class SecurityGroup(base.NovaPersistentObject, base.NovaObject):
fields = {
'id': int,
'name': str,
@@ -20,7 +20,7 @@ from nova.objects import compute_node
from nova.objects import utils
class Service(base.NovaObject):
class Service(base.NovaPersistentObject, base.NovaObject):
# Version 1.0: Initial version
# Version 1.1: Added compute_node nested object
VERSION = '1.1'
@@ -26,7 +26,7 @@ from nova.openstack.common import timeutils
from nova import test
class MyObj(base.NovaObject):
class MyObj(base.NovaPersistentObject, base.NovaObject):
version = '1.5'
fields = {'foo': int,
'bar': str,
@@ -547,7 +547,7 @@ class _TestObject(object):
self.assertRaises(AttributeError, obj.get, 'nothing', 3)
def test_object_inheritance(self):
base_fields = base.NovaObject.fields.keys()
base_fields = base.NovaPersistentObject.fields.keys()
myobj_fields = ['foo', 'bar', 'missing'] + base_fields
myobj3_fields = ['new_field']
self.assertTrue(issubclass(TestSubclassedObject, MyObj))
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.