示例#1
0
def _report_proxy_auth_error(key, **kwargs):
    """
    Generate standard log message for warning:
    API access without
    :param **kwargs: arbitrary keyword parameters
    """
    message = 'Attempt to access with invalid proxy/api key: ' + key
    logger().warning(struct_log(action=message, **kwargs))
示例#2
0
def _report_object_exists(typename, **kwargs):
    """
    Generate standard log message + request error for warning:
    Trying to POST an object that already exists
    :param typename: name of type involved
    :param **kwargs: arbitrary keyword parameters
    :return: Connexion Error() type to return
    """
    report = typename + ' already exists'
    logger().warning(struct_log(action=report, **kwargs))
    return dict(message=report, code=405)
示例#3
0
def _report_conversion_error(typename, exception, **kwargs):
    """
    Generate standard log message + request error for warning:
    Trying to POST an object that already exists
    :param typename: name of type involved
    :param exception: exception thrown by ORM
    :param **kwargs: arbitrary keyword parameters
    :return: Connexion Error() type to return
    """
    report = 'Could not convert ' + typename + ' to ORM model'
    message = typename + ': failed validation - could not convert to internal representation'
    logger().error(
        struct_log(action=report, exception=str(exception), **kwargs))
    return dict(message=message, code=400)
示例#4
0
def _report_update_failed(typename, exception, **kwargs):
    """
    Generate standard log message + request error for error:
    Internal error performing update (PUT)
    :param typename: name of type involved
    :param exception: exception thrown by ORM
    :param **kwargs: arbitrary keyword parameters
    :return: Connexion Error() type to return
    """
    report = typename + ' updated failed'
    message = 'Internal error updating ' + typename + 's'
    logger().error(
        struct_log(action=report, exception=str(exception), **kwargs))
    return dict(message=message, code=500)
示例#5
0
def _report_write_error(typename, exception, **kwargs):
    """
    Generate standard log message + request error for error:
    Error writing to DB
    :param typename: name of type involved
    :param exception: exception thrown by ORM
    :param **kwargs: arbitrary keyword parameters
    :return: Connexion Error() type to return
    """
    report = 'Internal error writing ' + typename + ' to DB'
    message = typename + ': internal error saving ORM object to DB'
    logger().error(
        struct_log(action=report, exception=str(exception), **kwargs))
    err = dict(message=message, code=500)
    return err
示例#6
0
def post_change_log(body):
    """
    Create a new change log following the changeLog
    schema in datasets.yaml

    :return: body, 200 on success
    """
    db_session = get_session()
    change_version = body.get('version')

    body['created'] = datetime.datetime.utcnow()

    try:
        orm_changelog = ChangeLog(**body)
    except TypeError as e:
        err = _report_conversion_error('changelog', e, **body)
        return err, 400

    try:
        db_session.add(orm_changelog)
        db_session.commit()
    except exc.IntegrityError:
        db_session.rollback()
        err = _report_object_exists('changelog: ' + body['version'], **body)
        return err, 405
    except ORMException as e:
        err = _report_write_error('changelog', e, **body)
        return err, 500

    logger().info(
        struct_log(action='post_change_log',
                   status='created',
                   change_version=change_version,
                   **body))

    return body, 201