From 4b04ffd16a909332f11aeb552c25893e856068cb Mon Sep 17 00:00:00 2001 From: Zane Bitter Date: Fri, 13 Apr 2012 17:58:23 +0200 Subject: [PATCH] Handle errors when listing events Signed-off-by: Zane Bitter --- heat/api/v1/stacks.py | 14 +++++--------- heat/db/sqlalchemy/api.py | 9 --------- heat/engine/manager.py | 3 +++ 3 files changed, 8 insertions(+), 18 deletions(-) diff --git a/heat/api/v1/stacks.py b/heat/api/v1/stacks.py index af2023b4d4..50bd3ac3b2 100644 --- a/heat/api/v1/stacks.py +++ b/heat/api/v1/stacks.py @@ -176,16 +176,12 @@ class StackController(object): """ con = context.get_admin_context() stack_name = req.params.get('StackName', None) - stack_list = rpc.call(con, 'engine', - {'method': 'list_events', - 'args': {'stack_name': stack_name}}) + event_res = rpc.call(con, 'engine', + {'method': 'list_events', + 'args': {'stack_name': stack_name}}) + events = 'Error' not in event_res and event_res['events'] or [] - res = {'DescribeStackEventsResult': {'StackEvents': [] } } - summaries = res['DescribeStackEventsResult']['StackEvents'] - for s in stack_list['events']: - summaries.append(s) - - return res + return {'DescribeStackEventsResult': {'StackEvents': events}} def create_resource(options): """Stacks resource factory method.""" diff --git a/heat/db/sqlalchemy/api.py b/heat/db/sqlalchemy/api.py index 641bc7b899..a1f377de13 100644 --- a/heat/db/sqlalchemy/api.py +++ b/heat/db/sqlalchemy/api.py @@ -149,26 +149,17 @@ def event_get(context, event_id): result = model_query(context, models.Event).\ filter_by(id=event_id).first() - if not result: - raise Exception("event with id %s not found" % event_id) - return result def event_get_all(context): results = model_query(context, models.Event).all() - if not results: - raise Exception('no events were found') - return results def event_get_all_by_stack(context, stack_id): results = model_query(context, models.Event).\ filter_by(stack_id=stack_id).all() - if not results: - raise Exception("no events for stack_id %s were found" % stack_id) - return results def event_create(context, values): diff --git a/heat/engine/manager.py b/heat/engine/manager.py index bf2a84caf7..d4e4680c8d 100644 --- a/heat/engine/manager.py +++ b/heat/engine/manager.py @@ -121,6 +121,9 @@ class EngineManager(manager.Manager): def list_events(self, context, stack_name): if stack_name is not None: st = db_api.stack_get(None, stack_name) + if not st: + return {'Error': 'No stack by that name'} + events = db_api.event_get_all_by_stack(None, st.id) else: events = db_api.event_get_all(None)