Remove remotable from OVOs

In Cinder we don't have an indirection service to forward object methods
like Nova does (Conductor) so we shouldn't be defining all methods as
remotable since they are not.

If we ever decide to have a Conductor we can easily add them back where
appropriate, but for now they are only a hindrance:

- It's confusing, because most people don't understand what it actually
  means in Cinder and they just add it to the methods because they see
  it in other OVO methods.
- Every time we change a remote method's signature or add a new remote
  method to an object the hash of that object changes and we need to
  update our test_versions test, which is not necessary.
- This makes the linking of VOs with their list counterparts
  problematic, because everyone will need to know that there is no need
  to bump the version of a list object whenever they add or modify a
  remotable method.
- We are executing unnecessary code with decorators, even if it's not
  much, it's still wasted CPU time .

This patch removes all appearances of remotable and remotable_class
decorators thus making our OVOs consistent with our implementation and
removing the need of updating our tests on unrelated OVO changes.

Change-Id: I18a0f619b4b108c553d9567b5f21f978466f1670
This commit is contained in:
Gorka Eguileor 2016-05-05 13:42:49 +02:00
parent f0d34b7d9b
commit 504b466295
10 changed files with 49 additions and 75 deletions

View File

@ -104,7 +104,6 @@ class Backup(base.CinderPersistentObject, base.CinderObject,
backup.obj_reset_changes()
return backup
@base.remotable
def create(self):
if self.obj_attr_is_set('id'):
raise exception.ObjectActionError(action='create',
@ -114,7 +113,6 @@ class Backup(base.CinderPersistentObject, base.CinderObject,
db_backup = db.backup_create(self._context, updates)
self._from_db_object(self._context, self, db_backup)
@base.remotable
def save(self):
updates = self.cinder_obj_get_changes()
if updates:
@ -122,7 +120,6 @@ class Backup(base.CinderPersistentObject, base.CinderObject,
self.obj_reset_changes()
@base.remotable
def destroy(self):
with self.obj_as_admin():
db.backup_destroy(self._context, self.id)
@ -141,7 +138,6 @@ class Backup(base.CinderPersistentObject, base.CinderObject,
msg = _("Can't parse backup record.")
raise exception.InvalidInput(reason=msg)
@base.remotable
def encode_record(self, **kwargs):
"""Serialize backup object, with optional extra info, into a string."""
# We don't want to export extra fields and we want to force lazy
@ -163,7 +159,7 @@ class BackupList(base.ObjectListBase, base.CinderObject):
'objects': fields.ListOfObjectsField('Backup'),
}
@base.remotable_classmethod
@classmethod
def get_all(cls, context, filters=None, marker=None, limit=None,
offset=None, sort_keys=None, sort_dirs=None):
backups = db.backup_get_all(context, filters, marker, limit, offset,
@ -171,13 +167,13 @@ class BackupList(base.ObjectListBase, base.CinderObject):
return base.obj_make_list(context, cls(context), objects.Backup,
backups)
@base.remotable_classmethod
@classmethod
def get_all_by_host(cls, context, host):
backups = db.backup_get_all_by_host(context, host)
return base.obj_make_list(context, cls(context), objects.Backup,
backups)
@base.remotable_classmethod
@classmethod
def get_all_by_project(cls, context, project_id, filters=None,
marker=None, limit=None, offset=None,
sort_keys=None, sort_dirs=None):
@ -187,7 +183,7 @@ class BackupList(base.ObjectListBase, base.CinderObject):
return base.obj_make_list(context, cls(context), objects.Backup,
backups)
@base.remotable_classmethod
@classmethod
def get_all_by_volume(cls, context, volume_id, filters=None):
backups = db.backup_get_all_by_volume(context, volume_id, filters)
return base.obj_make_list(context, cls(context), objects.Backup,
@ -208,7 +204,6 @@ class BackupImport(Backup):
completed.
"""
@base.remotable
def create(self):
updates = self.cinder_obj_get_changes()

View File

@ -29,8 +29,6 @@ from cinder import objects
LOG = logging.getLogger('object')
remotable = base.remotable
remotable_classmethod = base.remotable_classmethod
obj_make_list = base.obj_make_list
@ -154,7 +152,7 @@ class CinderObject(base.VersionedObject):
def _get_expected_attrs(cls, context):
return None
@base.remotable_classmethod
@classmethod
def get_by_id(cls, context, id, *args, **kwargs):
# To get by id we need to have a model and for the model to
# have an id field

View File

@ -68,7 +68,6 @@ class CGSnapshot(base.CinderPersistentObject, base.CinderObject,
cgsnapshot.obj_reset_changes()
return cgsnapshot
@base.remotable
def create(self):
if self.obj_attr_is_set('id'):
raise exception.ObjectActionError(action='create',
@ -101,7 +100,6 @@ class CGSnapshot(base.CinderPersistentObject, base.CinderObject,
self.obj_reset_changes(fields=[attrname])
@base.remotable
def save(self):
updates = self.cinder_obj_get_changes()
if updates:
@ -114,7 +112,6 @@ class CGSnapshot(base.CinderPersistentObject, base.CinderObject,
db.cgsnapshot_update(self._context, self.id, updates)
self.obj_reset_changes()
@base.remotable
def destroy(self):
with self.obj_as_admin():
db.cgsnapshot_destroy(self._context, self.id)
@ -128,20 +125,20 @@ class CGSnapshotList(base.ObjectListBase, base.CinderObject):
'objects': fields.ListOfObjectsField('CGSnapshot')
}
@base.remotable_classmethod
@classmethod
def get_all(cls, context, filters=None):
cgsnapshots = db.cgsnapshot_get_all(context, filters)
return base.obj_make_list(context, cls(context), objects.CGSnapshot,
cgsnapshots)
@base.remotable_classmethod
@classmethod
def get_all_by_project(cls, context, project_id, filters=None):
cgsnapshots = db.cgsnapshot_get_all_by_project(context, project_id,
filters)
return base.obj_make_list(context, cls(context), objects.CGSnapshot,
cgsnapshots)
@base.remotable_classmethod
@classmethod
def get_all_by_group(cls, context, group_id, filters=None):
cgsnapshots = db.cgsnapshot_get_all_by_group(context, group_id,
filters)

View File

@ -76,7 +76,6 @@ class ConsistencyGroup(base.CinderPersistentObject, base.CinderObject,
consistencygroup.obj_reset_changes()
return consistencygroup
@base.remotable
def create(self, cg_snap_id=None, cg_id=None):
"""Create a consistency group.
@ -122,7 +121,6 @@ class ConsistencyGroup(base.CinderPersistentObject, base.CinderObject,
self.obj_reset_changes(fields=[attrname])
@base.remotable
def save(self):
updates = self.cinder_obj_get_changes()
if updates:
@ -136,7 +134,6 @@ class ConsistencyGroup(base.CinderPersistentObject, base.CinderObject,
db.consistencygroup_update(self._context, self.id, updates)
self.obj_reset_changes()
@base.remotable
def destroy(self):
with self.obj_as_admin():
db.consistencygroup_destroy(self._context, self.id)
@ -152,7 +149,7 @@ class ConsistencyGroupList(base.ObjectListBase, base.CinderObject):
'objects': fields.ListOfObjectsField('ConsistencyGroup')
}
@base.remotable_classmethod
@classmethod
def get_all(cls, context, filters=None, marker=None, limit=None,
offset=None, sort_keys=None, sort_dirs=None):
consistencygroups = db.consistencygroup_get_all(
@ -162,7 +159,7 @@ class ConsistencyGroupList(base.ObjectListBase, base.CinderObject):
objects.ConsistencyGroup,
consistencygroups)
@base.remotable_classmethod
@classmethod
def get_all_by_project(cls, context, project_id, filters=None, marker=None,
limit=None, offset=None, sort_keys=None,
sort_dirs=None):

View File

@ -68,17 +68,16 @@ class Service(base.CinderPersistentObject, base.CinderObject,
service.obj_reset_changes()
return service
@base.remotable_classmethod
@classmethod
def get_by_host_and_topic(cls, context, host, topic):
db_service = db.service_get_by_host_and_topic(context, host, topic)
return cls._from_db_object(context, cls(context), db_service)
@base.remotable_classmethod
@classmethod
def get_by_args(cls, context, host, binary_key):
db_service = db.service_get_by_args(context, host, binary_key)
return cls._from_db_object(context, cls(context), db_service)
@base.remotable
def create(self):
if self.obj_attr_is_set('id'):
raise exception.ObjectActionError(action='create',
@ -87,14 +86,12 @@ class Service(base.CinderPersistentObject, base.CinderObject,
db_service = db.service_create(self._context, updates)
self._from_db_object(self._context, self, db_service)
@base.remotable
def save(self):
updates = self.cinder_obj_get_changes()
if updates:
db.service_update(self._context, self.id, updates)
self.obj_reset_changes()
@base.remotable
def destroy(self):
with self.obj_as_admin():
db.service_destroy(self._context, self.id)
@ -120,11 +117,11 @@ class Service(base.CinderPersistentObject, base.CinderObject,
return min_ver_str
@base.remotable_classmethod
@classmethod
def get_minimum_rpc_version(cls, context, binary):
return cls._get_minimum_version('rpc_current_version', context, binary)
@base.remotable_classmethod
@classmethod
def get_minimum_obj_version(cls, context, binary):
return cls._get_minimum_version('object_current_version', context,
binary)
@ -140,20 +137,20 @@ class ServiceList(base.ObjectListBase, base.CinderObject):
'objects': fields.ListOfObjectsField('Service'),
}
@base.remotable_classmethod
@classmethod
def get_all(cls, context, filters=None):
services = db.service_get_all(context, filters)
return base.obj_make_list(context, cls(context), objects.Service,
services)
@base.remotable_classmethod
@classmethod
def get_all_by_topic(cls, context, topic, disabled=None):
services = db.service_get_all_by_topic(context, topic,
disabled=disabled)
return base.obj_make_list(context, cls(context), objects.Service,
services)
@base.remotable_classmethod
@classmethod
def get_all_by_binary(cls, context, binary, disabled=None):
services = db.service_get_all_by_binary(context, binary,
disabled=disabled)

View File

@ -139,7 +139,6 @@ class Snapshot(base.CinderPersistentObject, base.CinderObject,
snapshot.obj_reset_changes()
return snapshot
@base.remotable
def create(self):
if self.obj_attr_is_set('id'):
raise exception.ObjectActionError(action='create',
@ -156,7 +155,6 @@ class Snapshot(base.CinderPersistentObject, base.CinderObject,
db_snapshot = db.snapshot_create(self._context, updates)
self._from_db_object(self._context, self, db_snapshot)
@base.remotable
def save(self):
updates = self.cinder_obj_get_changes()
if updates:
@ -179,7 +177,6 @@ class Snapshot(base.CinderPersistentObject, base.CinderObject,
self.obj_reset_changes()
@base.remotable
def destroy(self):
db.snapshot_destroy(self._context, self.id)
@ -212,7 +209,7 @@ class Snapshot(base.CinderPersistentObject, base.CinderObject,
if not md_was_changed:
self.obj_reset_changes(['metadata'])
@base.remotable_classmethod
@classmethod
def snapshot_data_get_for_project(cls, context, project_id,
volume_type_id=None):
return db.snapshot_data_get_for_project(context, project_id,
@ -227,7 +224,7 @@ class SnapshotList(base.ObjectListBase, base.CinderObject):
'objects': fields.ListOfObjectsField('Snapshot'),
}
@base.remotable_classmethod
@classmethod
def get_all(cls, context, search_opts, marker=None, limit=None,
sort_keys=None, sort_dirs=None, offset=None):
snapshots = db.snapshot_get_all(context, search_opts, marker, limit,
@ -236,14 +233,14 @@ class SnapshotList(base.ObjectListBase, base.CinderObject):
return base.obj_make_list(context, cls(context), objects.Snapshot,
snapshots, expected_attrs=expected_attrs)
@base.remotable_classmethod
@classmethod
def get_by_host(cls, context, host, filters=None):
snapshots = db.snapshot_get_by_host(context, host, filters)
expected_attrs = Snapshot._get_expected_attrs(context)
return base.obj_make_list(context, cls(context), objects.Snapshot,
snapshots, expected_attrs=expected_attrs)
@base.remotable_classmethod
@classmethod
def get_all_by_project(cls, context, project_id, search_opts, marker=None,
limit=None, sort_keys=None, sort_dirs=None,
offset=None):
@ -254,21 +251,21 @@ class SnapshotList(base.ObjectListBase, base.CinderObject):
return base.obj_make_list(context, cls(context), objects.Snapshot,
snapshots, expected_attrs=expected_attrs)
@base.remotable_classmethod
@classmethod
def get_all_for_volume(cls, context, volume_id):
snapshots = db.snapshot_get_all_for_volume(context, volume_id)
expected_attrs = Snapshot._get_expected_attrs(context)
return base.obj_make_list(context, cls(context), objects.Snapshot,
snapshots, expected_attrs=expected_attrs)
@base.remotable_classmethod
@classmethod
def get_active_by_window(cls, context, begin, end):
snapshots = db.snapshot_get_active_by_window(context, begin, end)
expected_attrs = Snapshot._get_expected_attrs(context)
return base.obj_make_list(context, cls(context), objects.Snapshot,
snapshots, expected_attrs=expected_attrs)
@base.remotable_classmethod
@classmethod
def get_all_for_cgsnapshot(cls, context, cgsnapshot_id):
snapshots = db.snapshot_get_all_for_cgsnapshot(context, cgsnapshot_id)
expected_attrs = Snapshot._get_expected_attrs(context)

View File

@ -282,7 +282,6 @@ class Volume(base.CinderPersistentObject, base.CinderObject,
volume.obj_reset_changes()
return volume
@base.remotable
def create(self):
if self.obj_attr_is_set('id'):
raise exception.ObjectActionError(action='create',
@ -299,7 +298,6 @@ class Volume(base.CinderPersistentObject, base.CinderObject,
db_volume = db.volume_create(self._context, updates)
self._from_db_object(self._context, self, db_volume)
@base.remotable
def save(self):
updates = self.cinder_obj_get_changes()
if updates:
@ -327,7 +325,6 @@ class Volume(base.CinderPersistentObject, base.CinderObject,
db.volume_update(self._context, self.id, updates)
self.obj_reset_changes()
@base.remotable
def destroy(self):
with self.obj_as_admin():
db.volume_destroy(self._context, self.id)
@ -449,7 +446,7 @@ class VolumeList(base.ObjectListBase, base.CinderObject):
return expected_attrs
@base.remotable_classmethod
@classmethod
def get_all(cls, context, marker, limit, sort_keys=None, sort_dirs=None,
filters=None, offset=None):
volumes = db.volume_get_all(context, marker, limit,
@ -459,21 +456,21 @@ class VolumeList(base.ObjectListBase, base.CinderObject):
return base.obj_make_list(context, cls(context), objects.Volume,
volumes, expected_attrs=expected_attrs)
@base.remotable_classmethod
@classmethod
def get_all_by_host(cls, context, host, filters=None):
volumes = db.volume_get_all_by_host(context, host, filters)
expected_attrs = cls._get_expected_attrs(context)
return base.obj_make_list(context, cls(context), objects.Volume,
volumes, expected_attrs=expected_attrs)
@base.remotable_classmethod
@classmethod
def get_all_by_group(cls, context, group_id, filters=None):
volumes = db.volume_get_all_by_group(context, group_id, filters)
expected_attrs = cls._get_expected_attrs(context)
return base.obj_make_list(context, cls(context), objects.Volume,
volumes, expected_attrs=expected_attrs)
@base.remotable_classmethod
@classmethod
def get_all_by_project(cls, context, project_id, marker, limit,
sort_keys=None, sort_dirs=None, filters=None,
offset=None):

View File

@ -52,7 +52,6 @@ class VolumeAttachment(base.CinderPersistentObject, base.CinderObject,
attachment.obj_reset_changes()
return attachment
@base.remotable
def save(self):
updates = self.cinder_obj_get_changes()
if updates:
@ -68,7 +67,7 @@ class VolumeAttachmentList(base.ObjectListBase, base.CinderObject):
'objects': fields.ListOfObjectsField('VolumeAttachment'),
}
@base.remotable_classmethod
@classmethod
def get_all_by_volume_id(cls, context, volume_id):
attachments = db.volume_attachment_get_all_by_volume_id(context,
volume_id)
@ -77,7 +76,7 @@ class VolumeAttachmentList(base.ObjectListBase, base.CinderObject):
objects.VolumeAttachment,
attachments)
@base.remotable_classmethod
@classmethod
def get_all_by_host(cls, context, volume_id, host):
attachments = db.volume_attachment_get_all_by_host(context,
volume_id,
@ -85,7 +84,7 @@ class VolumeAttachmentList(base.ObjectListBase, base.CinderObject):
return base.obj_make_list(context, cls(context),
objects.VolumeAttachment, attachments)
@base.remotable_classmethod
@classmethod
def get_all_by_instance_uuid(cls, context, volume_id, instance_uuid):
attachments = db.volume_attachment_get_all_by_instance_uuid(
context, volume_id, instance_uuid)

View File

@ -72,7 +72,6 @@ class VolumeType(base.CinderPersistentObject, base.CinderObject,
type.obj_reset_changes()
return type
@base.remotable
def create(self):
if self.obj_attr_is_set('id'):
raise exception.ObjectActionError(action='create',
@ -83,7 +82,6 @@ class VolumeType(base.CinderPersistentObject, base.CinderObject,
self.description)
self._from_db_object(self._context, self, db_volume_type)
@base.remotable
def save(self):
updates = self.cinder_obj_get_changes()
if updates:
@ -91,7 +89,6 @@ class VolumeType(base.CinderPersistentObject, base.CinderObject,
self.description)
self.obj_reset_changes()
@base.remotable
def destroy(self):
with self.obj_as_admin():
volume_types.destroy(self._context, self.id)
@ -107,7 +104,7 @@ class VolumeTypeList(base.ObjectListBase, base.CinderObject):
'objects': fields.ListOfObjectsField('VolumeType'),
}
@base.remotable_classmethod
@classmethod
def get_all(cls, context, inactive=0, filters=None, marker=None,
limit=None, sort_keys=None, sort_dirs=None, offset=None):
types = volume_types.get_all_types(context, inactive, filters,

View File

@ -23,23 +23,23 @@ from cinder import test
# NOTE: The hashes in this list should only be changed if they come with a
# corresponding version bump in the affected objects.
object_data = {
'Backup': '1.4-bcd1797dc2f3e17a46571525e9dbec30',
'BackupImport': '1.4-bcd1797dc2f3e17a46571525e9dbec30',
'BackupList': '1.0-7350483276ddb74960c8c39b69192eaa',
'CGSnapshot': '1.0-de2586a31264d7647f40c762dece9d58',
'CGSnapshotList': '1.0-e8c3f4078cd0ee23487b34d173eec776',
'ConsistencyGroup': '1.2-de280886bd04d7e3184c1f7c3a7e2074',
'ConsistencyGroupList': '1.1-73916823b697dfa0c7f02508d87e0f28',
'Service': '1.3-66c8e1683f58546c54551e9ff0a3b111',
'ServiceList': '1.1-07d2be494d704784ad2af4d4c91e68e5',
'Snapshot': '1.1-ac41f2fe2fb0e34127155d1ec6e4c7e0',
'SnapshotList': '1.0-58441afd20ddf9417b8879aa6de1ee6f',
'Volume': '1.3-049e3e5dc411b1a4deb7d6ee4f1ad5ef',
'VolumeList': '1.1-8859f973dc02e9eb4582063a171bd0f1',
'VolumeAttachment': '1.0-8fc9a9ac6f554fdf2a194d25dbf28a3b',
'VolumeAttachmentList': '1.0-4ef79b3824e5d1717ebe0d0558ddff96',
'VolumeType': '1.0-dd980cfd1eef2dcce941a981eb469fc8',
'VolumeTypeList': '1.1-68a4549e98563caec82a2018638fa69c',
'Backup': '1.4-c50f7a68bb4c400dd53dd219685b3992',
'BackupImport': '1.4-c50f7a68bb4c400dd53dd219685b3992',
'BackupList': '1.0-15ecf022a68ddbb8c2a6739cfc9f8f5e',
'CGSnapshot': '1.0-3212ac2b4c2811b7134fb9ba2c49ff74',
'CGSnapshotList': '1.0-15ecf022a68ddbb8c2a6739cfc9f8f5e',
'ConsistencyGroup': '1.2-ff7638e03ae7a3bb7a43a6c5c4d0c94a',
'ConsistencyGroupList': '1.1-15ecf022a68ddbb8c2a6739cfc9f8f5e',
'Service': '1.3-d7c1e133791c9d766596a0528fc9a12f',
'ServiceList': '1.1-15ecf022a68ddbb8c2a6739cfc9f8f5e',
'Snapshot': '1.1-37966f7141646eb29e9ad5298ff2ca8a',
'SnapshotList': '1.0-15ecf022a68ddbb8c2a6739cfc9f8f5e',
'Volume': '1.3-15ff1f42d4e8eb321aa8217dd46aa1e1',
'VolumeList': '1.1-15ecf022a68ddbb8c2a6739cfc9f8f5e',
'VolumeAttachment': '1.0-b30dacf62b2030dd83d8a1603f1064ff',
'VolumeAttachmentList': '1.0-15ecf022a68ddbb8c2a6739cfc9f8f5e',
'VolumeType': '1.0-6673dd9ce7c27e9c85279afb20833877',
'VolumeTypeList': '1.1-15ecf022a68ddbb8c2a6739cfc9f8f5e',
}