From 745e1c86cdac59fcdfb15fc04e02d481a1d3dab8 Mon Sep 17 00:00:00 2001 From: Sett Wai Date: Mon, 1 Jul 2013 16:15:14 +0200 Subject: [PATCH] changes to make image membership tests pass Needed by Change-Id: I270ad24c4d82bc31fb5b07ea05bc84458844143e - introduced MemberList model - added remote image url properties to config - rebased with dependancy - implemented member model deserialization - updated relevant images client calls - fixed outdated/incorrect import user.py - fixed tenants deserialization Change-Id: I4a892c001ab312000ce59da59c73d3a75316963e --- cloudcafe/images/v1_0/client.py | 4 ++-- cloudcafe/images/v1_0/models/member.py | 28 ++++++++++++++++++++++++-- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/cloudcafe/images/v1_0/client.py b/cloudcafe/images/v1_0/client.py index 145d471e..f5bd6fc3 100644 --- a/cloudcafe/images/v1_0/client.py +++ b/cloudcafe/images/v1_0/client.py @@ -1,6 +1,6 @@ from cafe.engine.clients.rest import AutoMarshallingRestClient from cloudcafe.images.v1_0.models.image import Image -from cloudcafe.images.v1_0.models.member import Member +from cloudcafe.images.v1_0.models.member import MemberList class ImagesClient(AutoMarshallingRestClient): @@ -109,7 +109,7 @@ class ImagesClient(AutoMarshallingRestClient): url = '{0}/images/{1}/members'.format(self.url, image_id) return self.request('GET', url, - response_entity_type=Member, + response_entity_type=MemberList, requestslib_kwargs=requestslib_kwargs) def update_image(self, image_id, image_data=None, headers=None, diff --git a/cloudcafe/images/v1_0/models/member.py b/cloudcafe/images/v1_0/models/member.py index 5c2107c9..2acb59fc 100644 --- a/cloudcafe/images/v1_0/models/member.py +++ b/cloudcafe/images/v1_0/models/member.py @@ -1,7 +1,31 @@ -from cafe.engine.models.base import AutoMarshallingModel +import json +from cafe.engine.models.base import \ + AutoMarshallingModel, AutoMarshallingListModel class Member(AutoMarshallingModel): - def __init__(self, member_id=None, shared_images=None): + def __init__(self, member_id=None, shared_images=None, can_share=None): self.member_id = member_id self.shared_images = shared_images + self.can_share = can_share + + @classmethod + def _json_to_obj(cls, serialized_str): + json_dict = json.loads(serialized_str) + + if 'members' in json_dict.keys(): + members = [] + members.extend([Member(**m) for m in json_dict['members']]) + return members + else: + return Member(**json_dict) + + +class MemberList(AutoMarshallingListModel): + """Represent a list of Members""" + + @classmethod + def _json_to_obj(cls, serialized_str): + json_dict = json.loads(serialized_str) + + return [Member(**m) for m in json_dict.get('members')]