]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
Handle errors when listing events
authorZane Bitter <zbitter@redhat.com>
Fri, 13 Apr 2012 15:58:23 +0000 (17:58 +0200)
committerZane Bitter <zbitter@redhat.com>
Fri, 13 Apr 2012 15:58:23 +0000 (17:58 +0200)
Signed-off-by: Zane Bitter <zbitter@redhat.com>
heat/api/v1/stacks.py
heat/db/sqlalchemy/api.py
heat/engine/manager.py

index af2023b4d4b6c159fbaacbaae601e6b527ac994e..50bd3ac3b21274cc8a455d1121a755bbb7f891da 100644 (file)
@@ -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."""
index 641bc7b899c3a4d14ad5fdd3dcad3a40d2d9b3cf..a1f377de139ae5df10baab79c90297ac4a9625d9 100644 (file)
@@ -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):
index bf2a84caf7de1764e23467b0405b9b6a0e49d995..d4e4680c8d487908b0720123a2a3e224713092d1 100644 (file)
@@ -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)