From: Zane Bitter Date: Fri, 13 Apr 2012 15:58:23 +0000 (+0200) Subject: Handle errors when listing events X-Git-Tag: 2014.1~2023 X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=4b04ffd16a909332f11aeb552c25893e856068cb;p=openstack-build%2Fheat-build.git Handle errors when listing events Signed-off-by: Zane Bitter --- diff --git a/heat/api/v1/stacks.py b/heat/api/v1/stacks.py index af2023b4..50bd3ac3 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}}) - - res = {'DescribeStackEventsResult': {'StackEvents': [] } } - summaries = res['DescribeStackEventsResult']['StackEvents'] - for s in stack_list['events']: - summaries.append(s) + 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 [] - 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 641bc7b8..a1f377de 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 bf2a84ca..d4e4680c 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)