From: Zane Bitter Date: Thu, 22 Nov 2012 10:06:57 +0000 (+0100) Subject: Use the new class for database access to Events X-Git-Tag: 2014.1~1181 X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=7054f55824ec51032ef1c989b024103536028548;p=openstack-build%2Fheat-build.git Use the new class for database access to Events Change-Id: I6c02cf47869aaa1d293cb1b528ed967397c47208 Signed-off-by: Zane Bitter --- diff --git a/heat/engine/api.py b/heat/engine/api.py index 86ad9984..f53c16d3 100644 --- a/heat/engine/api.py +++ b/heat/engine/api.py @@ -166,18 +166,19 @@ EVENT_KEYS = ( ) -def format_event(context, event): - stack = parser.Stack.load(context, stack=event.stack) +def format_event(event): + stack_identifier = event.stack.identifier() + result = { EVENT_ID: event.id, - EVENT_STACK_ID: dict(stack.identifier()), - EVENT_STACK_NAME: stack.name, - EVENT_TIMESTAMP: timeutils.isotime(event.created_at), - EVENT_RES_NAME: event.logical_resource_id, + EVENT_STACK_ID: dict(stack_identifier), + EVENT_STACK_NAME: stack_identifier.stack_name, + EVENT_TIMESTAMP: timeutils.isotime(event.timestamp), + EVENT_RES_NAME: event.resource.name, EVENT_RES_PHYSICAL_ID: event.physical_resource_id, - EVENT_RES_STATUS: event.name, - EVENT_RES_STATUS_DATA: event.resource_status_reason, - EVENT_RES_TYPE: event.resource_type, + EVENT_RES_STATUS: event.new_state, + EVENT_RES_STATUS_DATA: event.reason, + EVENT_RES_TYPE: event.resource.type(), EVENT_RES_PROPERTIES: event.resource_properties, } diff --git a/heat/engine/resources/resource.py b/heat/engine/resources/resource.py index 45031299..a8a35c9a 100644 --- a/heat/engine/resources/resource.py +++ b/heat/engine/resources/resource.py @@ -16,6 +16,7 @@ import base64 from datetime import datetime +from heat.engine.resources import event from heat.common import exception from heat.db import api as db_api from heat.engine import identifier @@ -331,17 +332,12 @@ class Resource(object): def _add_event(self, new_state, reason): '''Add a state change event to the database''' - ev = {'logical_resource_id': self.name, - 'physical_resource_id': self.resource_id, - 'stack_id': self.stack.id, - 'stack_name': self.stack.name, - 'resource_status': new_state, - 'name': new_state, - 'resource_status_reason': reason, - 'resource_type': self.type(), - 'resource_properties': dict(self.properties)} + ev = event.Event(self.context, self.stack, self, + new_state, reason, + self.resource_id, self.properties) + try: - db_api.event_create(self.context, ev) + ev.store() except Exception as ex: logger.error('DB error %s' % str(ex)) diff --git a/heat/engine/service.py b/heat/engine/service.py index 3597462e..6c172e32 100644 --- a/heat/engine/service.py +++ b/heat/engine/service.py @@ -19,6 +19,7 @@ import webob from heat.common import context from heat.db import api as db_api from heat.engine import api +from heat.engine.resources.event import Event from heat.engine import identifier from heat.engine import parser from heat.engine import watchrule @@ -338,7 +339,9 @@ class EngineService(service.Service): else: events = db_api.event_get_all_by_tenant(context) - return {'events': [api.format_event(context, e) for e in events]} + output = [api.format_event(Event.load(context, e.id)) for e in events] + + return {'events': output} @request_context def describe_stack_resource(self, context, stack_identity, resource_name):