Ejemplo n.º 1
0
def _event_to_msg(event_cls: EventBase):
    """
    Convert the type class into a description message

    :param event_cls:
    :return:
    """
    return {
        'name': event_cls.__event_type__,
        'type': event_cls.fq_event_type(),
        'message': event_cls.__message__,
        'resource_type': event_cls.__resource_type__
    }
Ejemplo n.º 2
0
def notify_event(event: EventBase, client: CatalogClient, operation_id=None):
    """
    Send an event or just log it if client is None
    Always log the event to info level
    """

    if client:
        try:
            client.add_event(event)
        except Exception as e:
            logger.warn("Error adding feed start event: {}".format(e))

    try:
        logger.info("Event: {} (operation_id={})".format(event.to_json(), operation_id))
    except:
        logger.exception("Error logging event")
Ejemplo n.º 3
0
def list_event_types():
    request_inputs = anchore_engine.apis.do_request_prep(request, default_params={})
    user_auth = request_inputs['auth']
    method = request_inputs['method']
    bodycontent = request_inputs['bodycontent']
    params = request_inputs['params']

    return_object = {}
    httpcode = 500
    try:
        resp = {} # use dict first, then will convert to list
        for evnt in EventBase.registered_events():
            if evnt.__category__.name not in resp:
                resp[evnt.__category__.name] = {
                    'name': evnt.__category__.name,
                    'description': evnt.__category__.description,
                    'subcategories': {}
                }

            subcats = resp[evnt.__category__.name]['subcategories']

            if evnt.__subcategory__.name not in subcats:
                subcats[evnt.__subcategory__.name] = {
                    'name': evnt.__subcategory__.name,
                    'description': evnt.__subcategory__.description,
                    'events': [_event_to_msg(evnt)]
                }
            else:
                subcats[evnt.__subcategory__.name]['events'].append(_event_to_msg(evnt))

        # Flatten back into lists
        return_object = sorted(resp.values(), key=lambda x: x['name'])
        for cat in return_object:
            cat['subcategories'] = sorted(cat['subcategories'].values(), key=lambda x: x['name'])

        httpcode = 200
    except Exception as err:
        logger.debug_exception('Error listing types')
        return_object = anchore_engine.common.helpers.make_response_error(err, in_httpcode=httpcode)
        httpcode = return_object['httpcode']

    return return_object, httpcode