From c31343fb924dec39b0f8fea50db2326c0e293742 Mon Sep 17 00:00:00 2001 From: Kanagaraj Manickam Date: Thu, 29 Dec 2016 16:01:36 +0530 Subject: [PATCH] Enable resource _show_resource with dict type Some openstack service python client returns the entity in dict type when calling .get() method. This patch enables _show_resource() method to consider this aspect. Change-Id: I7cea5823c77b04c8ffba34f71952e50765aa9668 --- heat/engine/resource.py | 5 ++++- heat/tests/test_resource.py | 8 +++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/heat/engine/resource.py b/heat/engine/resource.py index fb57805c78..47ec4441e3 100644 --- a/heat/engine/resource.py +++ b/heat/engine/resource.py @@ -1895,7 +1895,10 @@ class Resource(object): try: obj = getattr(self.client(), self.entity) resource = obj.get(self.resource_id) - return resource.to_dict() + if type(resource) == dict: + return resource + else: + return resource.to_dict() except AttributeError as ex: LOG.warning(_LW("Resolving 'show' attribute has failed : %s"), ex) diff --git a/heat/tests/test_resource.py b/heat/tests/test_resource.py index 32cca6d172..87d661f30e 100644 --- a/heat/tests/test_resource.py +++ b/heat/tests/test_resource.py @@ -2403,7 +2403,7 @@ class ResourceTest(common.HeatTestCase): res.resource_id = 'test_resource_id' res.entity = 'test' - # mock gettring resource info + # mock getting resource info res.client = mock.Mock() test_obj = mock.Mock() test_resource = mock.Mock() @@ -2413,6 +2413,12 @@ class ResourceTest(common.HeatTestCase): self.assertEqual({'test': 'info'}, res._show_resource()) + # mock getting resource info as dict + test_obj.get.return_value = {'test': 'info'} + res.client().test = test_obj + + self.assertEqual({'test': 'info'}, res._show_resource()) + # check the case where resource entity isn't defined res.entity = None self.assertIsNone(res._show_resource())