Remove dict-compat from the image object

This patch removes the need of having dictcompat from
the image object. Luckily we have around 5 objects in
zun that would need this changes.

DictCompat is not really needed, since that's the old
way of referencing an object field just like a dictionary
object in python.

Currently a better way needs to be implemented to avoid
conversion of the image object to a dict
back and forth. This could be achieved if we implement
the API validation blueprint.

Change-Id: Ia0f5a4415b70934e7d47d77594f0d43ae6cb65bc
Partially-Implements: blueprint rm-object-dict-compat
This commit is contained in:
Sudipta Biswas 2016-11-08 18:50:44 +05:30
parent 7489bb6430
commit 60d4d58d99
2 changed files with 9 additions and 5 deletions

View File

@ -117,7 +117,10 @@ class ImageCollection(collection.Collection):
def convert_with_links(rpc_images, limit, url=None,
expand=False, **kwargs):
collection = ImageCollection()
collection.images = [Image.convert_with_links(p, expand)
# TODO(sbiswas7): This is the ugly part of the deal.
# We need to convert this p thing below as dict for now
# Removal of dict-compat lead to this change.
collection.images = [Image.convert_with_links(p.as_dict(), expand)
for p in rpc_images]
collection.next = collection.get_next(limit, url=url, **kwargs)
return collection
@ -195,4 +198,6 @@ class ImagesController(rest.RestController):
# Set the HTTP Location Header
pecan.response.location = link.build_url('images', new_image.uuid)
pecan.response.status = 202
return Image.convert_with_links(new_image)
# TODO(sbiswas7): Schema validation is a better approach than
# back n forth conversion into dicts and objects.
return Image.convert_with_links(new_image.as_dict())

View File

@ -17,8 +17,7 @@ from zun.objects import base
@base.ZunObjectRegistry.register
class Image(base.ZunPersistentObject, base.ZunObject,
base.ZunObjectDictCompat):
class Image(base.ZunPersistentObject, base.ZunObject):
# Version 1.0: Initial version
VERSION = '1.0'
@ -37,7 +36,7 @@ class Image(base.ZunPersistentObject, base.ZunObject,
def _from_db_object(image, db_image):
"""Converts a database entity to a formal object."""
for field in image.fields:
image[field] = db_image[field]
setattr(image, field, db_image[field])
image.obj_reset_changes()
return image