From 0a500c3211d1a2fd98f9ffb25961123787b70d8d Mon Sep 17 00:00:00 2001 From: Vijendar Komalla Date: Mon, 10 Feb 2014 12:56:33 -0600 Subject: [PATCH] Fix usage of resource_data_get_all in stack-abandon Stack abandon was failing if any stack resource has resource data because resource_data was not properly used in resource.py get_abandon_data method. Closes-Bug: #1278535 Change-Id: I0f41ddf530d34e7d27f740fb4f56e7ce17a43d1a --- heat/engine/resource.py | 3 +-- heat/tests/test_resource.py | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/heat/engine/resource.py b/heat/engine/resource.py index c1be46bf40..624769a113 100644 --- a/heat/engine/resource.py +++ b/heat/engine/resource.py @@ -486,8 +486,7 @@ class Resource(object): 'action': self.action, 'status': self.status, 'metadata': self.metadata, - 'resource_data': dict((r.key, r.value) - for r in db_api.resource_data_get_all(self)) + 'resource_data': db_api.resource_data_get_all(self) } def adopt(self, resource_data): diff --git a/heat/tests/test_resource.py b/heat/tests/test_resource.py index 74a11e0180..a5cde7071c 100644 --- a/heat/tests/test_resource.py +++ b/heat/tests/test_resource.py @@ -163,6 +163,26 @@ class ResourceTest(HeatTestCase): actual = res.get_abandon_data() self.assertEqual(expected, actual) + def test_abandon_with_resource_data(self): + tmpl = {'Type': 'Foo'} + res = generic_rsrc.GenericResource('test_resource', tmpl, self.stack) + self.m.StubOutWithMock(db_api, 'resource_data_get_all') + db_api.resource_data_get_all(res).AndReturn({"test-key": "test-value"}) + self.m.ReplayAll() + + expected = { + 'action': 'INIT', + 'metadata': {}, + 'name': 'test_resource', + 'resource_data': {"test-key": "test-value"}, + 'resource_id': None, + 'status': 'COMPLETE', + 'type': 'Foo' + } + actual = res.get_abandon_data() + self.assertEqual(expected, actual) + self.m.VerifyAll() + def test_state_set_invalid(self): tmpl = {'Type': 'Foo'} res = generic_rsrc.GenericResource('test_resource', tmpl, self.stack)