From 12668b3dababed103c3ad74fee4b7e81d4be1de3 Mon Sep 17 00:00:00 2001 From: lin-hua-cheng <os.lcheng@gmail.com> Date: Thu, 22 Oct 2015 17:32:45 -0700 Subject: [PATCH] Fix issue when displaying image_member image_member doesn't have a _info attribute, glanceclient returns warlock object instead of a Resource object. Change-Id: If6e7c4bd404454bd6cbe8c111879c1afa1380211 Closes-Bug: #1509054 --- openstackclient/image/v2/image.py | 2 +- openstackclient/tests/fakes.py | 8 ++++++++ openstackclient/tests/image/v2/test_image.py | 4 +--- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/openstackclient/image/v2/image.py b/openstackclient/image/v2/image.py index 7d8b14124a..a846f4b328 100644 --- a/openstackclient/image/v2/image.py +++ b/openstackclient/image/v2/image.py @@ -105,7 +105,7 @@ class AddProjectToImage(show.ShowOne): project_id, ) - return zip(*sorted(six.iteritems(image_member._info))) + return zip(*sorted(six.iteritems(image_member))) class CreateImage(show.ShowOne): diff --git a/openstackclient/tests/fakes.py b/openstackclient/tests/fakes.py index 357c470f66..0f5ef74aa0 100644 --- a/openstackclient/tests/fakes.py +++ b/openstackclient/tests/fakes.py @@ -150,3 +150,11 @@ class FakeResponse(requests.Response): self._content = json.dumps(data) if not isinstance(self._content, six.binary_type): self._content = self._content.encode() + + +class FakeModel(dict): + def __getattr__(self, key): + try: + return self[key] + except KeyError: + raise AttributeError(key) diff --git a/openstackclient/tests/image/v2/test_image.py b/openstackclient/tests/image/v2/test_image.py index 4ce854759b..72ba0567b5 100644 --- a/openstackclient/tests/image/v2/test_image.py +++ b/openstackclient/tests/image/v2/test_image.py @@ -238,10 +238,8 @@ class TestAddProjectToImage(TestImage): copy.deepcopy(image_fakes.IMAGE), loaded=True, ) - self.image_members_mock.create.return_value = fakes.FakeResource( - None, + self.image_members_mock.create.return_value = fakes.FakeModel( copy.deepcopy(image_fakes.MEMBER), - loaded=True, ) self.project_mock.get.return_value = fakes.FakeResource( None,