From 8936c971722b80c5c39bd689774fece7506aeb29 Mon Sep 17 00:00:00 2001 From: Zane Bitter Date: Wed, 19 Dec 2012 18:48:26 +0100 Subject: [PATCH] Fix DescribeStacks command for all stacks Fixes: bug 1092196 Change-Id: I05065c08b4072a9c179ebfb36fb15f062de3f06e Signed-off-by: Zane Bitter --- heat/engine/service.py | 12 ++++----- heat/rpc/client.py | 7 +++--- heat/tests/test_engine_service.py | 41 ++++++++++++++++++++++++++++--- 3 files changed, 47 insertions(+), 13 deletions(-) diff --git a/heat/engine/service.py b/heat/engine/service.py index 5a324e88..a2c35a17 100644 --- a/heat/engine/service.py +++ b/heat/engine/service.py @@ -142,14 +142,14 @@ class EngineService(service.Service): @request_context def show_stack(self, context, stack_identity): """ - The show_stack method returns the attributes of one stack. + Return detailed information about one or all stacks. arg1 -> RPC context. - arg2 -> Name of the stack you want to see + arg2 -> Name of the stack you want to show, or None to show all """ - if stack_identity is None: - raise AttributeError('No stack_identity provided') - - stacks = [self._get_stack(context, stack_identity)] + if stack_identity is not None: + stacks = [self._get_stack(context, stack_identity)] + else: + stacks = db_api.stack_get_all_by_tenant(context) or [] def format_stack_detail(s): stack = parser.Stack.load(context, stack=s) diff --git a/heat/rpc/client.py b/heat/rpc/client.py index 839fad1e..b39583f0 100644 --- a/heat/rpc/client.py +++ b/heat/rpc/client.py @@ -79,11 +79,10 @@ class EngineClient(heat.openstack.common.rpc.proxy.RpcProxy): def show_stack(self, ctxt, stack_identity): """ - The show_stack method returns the attributes of one stack. - + Return detailed information about one or all stacks. :param ctxt: RPC context. - :param stack_identity: Name of the stack you want to see, - or None to see all + :param stack_identity: Name of the stack you want to show, or None to + show all """ return self.call(ctxt, self.make_msg('show_stack', stack_identity=stack_identity), diff --git a/heat/tests/test_engine_service.py b/heat/tests/test_engine_service.py index e945c6ae..c53a05ce 100644 --- a/heat/tests/test_engine_service.py +++ b/heat/tests/test_engine_service.py @@ -463,17 +463,25 @@ class stackServiceTest(unittest.TestCase): self.assertTrue('event_time' in ev) - def test_stack_describe_all(self): + def test_stack_list_all(self): sl = self.man.list_stacks(self.ctx) self.assertEqual(len(sl['stacks']), 1) for s in sl['stacks']: + self.assertTrue('creation_time' in s) + self.assertTrue('updated_time' in s) + self.assertTrue('stack_identity' in s) self.assertNotEqual(s['stack_identity'], None) + self.assertTrue('stack_name' in s) + self.assertEqual(s['stack_name'], self.stack_name) + self.assertTrue('stack_status' in s) + self.assertTrue('stack_status_reason' in s) + self.assertTrue('description' in s) self.assertNotEqual(s['description'].find('WordPress'), -1) - def test_stack_describe_all_empty(self): + def test_stack_list_all_empty(self): self.tearDown() - self.tenant = 'stack_describe_all_empty_tenant' + self.tenant = 'stack_list_all_empty_tenant' self.setUp() sl = self.man.list_stacks(self.ctx) @@ -505,6 +513,33 @@ class stackServiceTest(unittest.TestCase): self.assertNotEqual(s['description'].find('WordPress'), -1) self.assertTrue('parameters' in s) + def test_stack_describe_all(self): + sl = self.man.show_stack(self.ctx, None) + + self.assertEqual(len(sl['stacks']), 1) + + s = sl['stacks'][0] + self.assertTrue('creation_time' in s) + self.assertTrue('updated_time' in s) + self.assertTrue('stack_identity' in s) + self.assertNotEqual(s['stack_identity'], None) + self.assertTrue('stack_name' in s) + self.assertEqual(s['stack_name'], self.stack_name) + self.assertTrue('stack_status' in s) + self.assertTrue('stack_status_reason' in s) + self.assertTrue('description' in s) + self.assertNotEqual(s['description'].find('WordPress'), -1) + self.assertTrue('parameters' in s) + + def test_stack_describe_all_empty(self): + self.tearDown() + self.tenant = 'stack_describe_all_empty_tenant' + self.setUp() + + sl = self.man.show_stack(self.ctx, None) + + self.assertEqual(len(sl['stacks']), 0) + def test_list_resource_types(self): resources = self.man.list_resource_types(self.ctx) self.assertTrue(isinstance(resources, list)) -- 2.45.2