]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
Allow sending events using metadata server
authorTomas Sedovic <tomas@sedovic.cz>
Wed, 9 May 2012 16:23:22 +0000 (18:23 +0200)
committerTomas Sedovic <tomas@sedovic.cz>
Wed, 9 May 2012 16:23:22 +0000 (18:23 +0200)
Signed-off-by: Tomas Sedovic <tomas@sedovic.cz>
heat/engine/manager.py
heat/metadata/api/v1/__init__.py
heat/metadata/api/v1/metadata.py

index 9c5499a42da50f3638c6168321151f6f928c81d1..6f32583d677968722d3724718dfe41204900e746 100644 (file)
@@ -223,6 +223,20 @@ class EngineManager(manager.Manager):
 
         return {'events': [parse_event(e) for e in events]}
 
+    def event_create(self, context, event):
+        try:
+            result = db_api.event_create(None, event)
+            event['id'] = result.id
+            return [None, event]
+        except Exception as ex:
+            logger.warn('db error %s' % str(ex))
+            try:
+                # This returns the error message without the entire SQL request
+                msg = ex.inner_exception.orig[1]
+            except:
+                msg = 'Error creating event'
+            return [msg, None]
+
     def metadata_register_address(self, context, url):
         config.FLAGS.heat_metadata_server_url = url
 
index c0957f966e10b3d365deedbcaf64cdfb9236d472..a213e06b3f594429f990460bccf94cab70aef44f 100644 (file)
@@ -48,6 +48,9 @@ class API(wsgi.Router):
         mapper.connect('/stacks/:stack_name/resources/:resource_id',
                        controller=metadata_controller, action='update_metadata',
                        conditions=dict(method=['PUT']))
+        mapper.connect('/events/',
+                       controller=metadata_controller, action='create_event',
+                       conditions=dict(method=['POST']))
 
         # TODO(shadower): make sure all responses are JSON-encoded
         # currently, calling an unknown route uses the default handler which
index 9df424e90858d9487ebd991f08e00d4bb0a2054d..7acd585eb8d1fc4d40b24044a014e1d84e6f038c 100644 (file)
@@ -98,6 +98,15 @@ class MetadataController:
             'metadata': body,
         })
 
+    def create_event(self, req, body=None):
+        con = context.get_admin_context()
+        [error, event] = rpc.call(con, 'engine',
+                                     {'method': 'event_create',
+                                      'args': {'event': body}})
+        if error:
+            return json_error(400, error)
+        return json_response(201, event)
+
 
 def create_resource(options):
     """