'Initialise from a context, stack, and event information.
The timestamp and database ID may also be initialised if the event is
already in the database.'

def __init__(self, context, stack, action, status, reason, physical_resource_id, resource_properties, resource_name, resource_type, uuid=None, timestamp=None, id=None):

    self.context = context
    self._stack_identifier = stack.identifier()
    self.action = action
    self.status = status
    self.reason = reason
    self.physical_resource_id = physical_resource_id
    self.resource_name = resource_name
    self.resource_type = resource_type
    self.rsrc_prop_data = None
    if isinstance(resource_properties, rpd_objects.ResourcePropertiesData):
        self.rsrc_prop_data = resource_properties
        self.resource_properties = self.rsrc_prop_data.data
    elif (resource_properties is None):
        self.resource_properties = {}
    else:
        raise AssertionError(('resource_properties    is    unexpected    type    %s' % type(resource_properties).__name__))
    self.uuid = uuid
    self.timestamp = timestamp
    self.id = id
