示例#1
0
def create_app():
    """
    Creates the flask app, loading blueprints and the configuration.
    :return:    flask app
    :rtype:     Flask
    """
    app_name = os.getenv("APP_NAME", "drift")
    openapi_args = {"path_prefix": config.path_prefix, "app_name": app_name}
    connexion_app = connexion.App(__name__,
                                  specification_dir="openapi/",
                                  arguments=openapi_args)
    connexion_app.add_api("api.spec.yaml",
                          validate_responses=True,
                          strict_validation=True)
    connexion_app.add_api("mgmt_api.spec.yaml")
    connexion_app.add_api("admin_api.spec.yaml",
                          validate_responses=True,
                          strict_validation=True)
    flask_app = connexion_app.app

    create_prometheus_registry_dir()

    # set up logging
    setup_audit_logging(logging.Logger)

    register_hsts_response(flask_app)

    gunicorn_logger = logging.getLogger("gunicorn.error")
    flask_app.logger.handlers = gunicorn_logger.handlers
    flask_app.logger.setLevel(gunicorn_logger.level)
    setup_cw_logging(flask_app.logger)

    flask_app.register_blueprint(v1.section)
    flask_app.register_error_handler(HTTPError, handle_http_error)
    return connexion_app
示例#2
0
def create_connexion_app():
    openapi_args = {
        "path_prefix": config.path_prefix,
        "app_name": app_config.get_app_name(),
    }
    connexion_app = connexion.App(
        __name__, specification_dir="openapi/", arguments=openapi_args
    )
    connexion_app.add_api(
        "api.spec.yaml", strict_validation=True, validate_responses=True
    )
    connexion_app.add_api("mgmt_api.spec.yaml", strict_validation=True)
    flask_app = connexion_app.app

    # set up logging ASAP
    gunicorn_logger = logging.getLogger("gunicorn.error")
    flask_app.logger.handlers = gunicorn_logger.handlers
    flask_app.logger.setLevel(gunicorn_logger.level)
    setup_cw_logging(flask_app.logger)

    # set up DB
    flask_app.config["SQLALCHEMY_ECHO"] = False
    flask_app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
    flask_app.config["SQLALCHEMY_DATABASE_URI"] = db_config.db_uri
    flask_app.config["SQLALCHEMY_POOL_SIZE"] = db_config.db_pool_size
    flask_app.config["SQLALCHEMY_POOL_TIMEOUT"] = db_config.db_pool_timeout
    db.init_app(flask_app)

    flask_app.register_blueprint(v0.section)
    flask_app.register_error_handler(HTTPError, handle_http_error)
    return connexion_app
示例#3
0
def create_connexion_app():
    openapi_args = {
        "path_prefix": kerlescan_config.path_prefix,
        "app_name": app_config.get_app_name(),
    }
    connexion_app = connexion.App(__name__,
                                  specification_dir="openapi/",
                                  arguments=openapi_args)
    connexion_app.add_api("api.spec.yaml",
                          strict_validation=True,
                          validate_responses=True)
    connexion_app.add_api("mgmt_api.spec.yaml", strict_validation=True)
    flask_app = connexion_app.app

    # set up logging ASAP
    setup_audit_logging(logging.Logger)

    gunicorn_logger = logging.getLogger("gunicorn.error")
    flask_app.logger.handlers = gunicorn_logger.handlers
    flask_app.logger.setLevel(gunicorn_logger.level)
    setup_cw_logging(flask_app.logger)
    register_hsts_response(flask_app)

    # set up DB
    engine_options = {
        "pool_pre_ping": True,
        "pool_recycle": 300,
        "pool_size": config.db_pool_size,
        "pool_timeout": config.db_pool_timeout,
    }
    flask_app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
    flask_app.config["SQLALCHEMY_DATABASE_URI"] = config.db_uri
    flask_app.config["SQLALCHEMY_ENGINE_OPTIONS"] = engine_options

    flask_app.config["SQLALCHEMY_ECHO"] = False
    if config.log_sql_statements:
        flask_app.config["SQLALCHEMY_ECHO"] = True

    db.init_app(flask_app)

    flask_app.register_blueprint(v1.section)
    flask_app.register_error_handler(HTTPError, handle_http_error)
    return connexion_app