示例#1
0
文件: app.py 项目: dylanwh/lando-api
def create_app(version_path):
    """Construct an application instance."""
    initialize_logging()

    app = connexion.App(__name__, specification_dir='spec/')

    swagger_ui_enabled = os.environ.get('ENV', None) == 'localdev'
    app.add_api('swagger.yml',
                resolver=RestyResolver('landoapi.api'),
                swagger_ui=swagger_ui_enabled)

    # Get the Flask app being wrapped by the Connexion app.
    flask_app = app.app

    keys_before_setup = set(flask_app.config.keys())

    configure_app(flask_app, version_path)

    log_app_config(flask_app, keys_before_setup)

    flask_app.register_blueprint(dockerflow)

    # Initialize database
    db.init_app(flask_app)

    # Intialize the alembic extension
    alembic.init_app(flask_app)

    initialize_caching(flask_app)
    initialize_hooks(flask_app)

    return app
示例#2
0
def db(app):
    """Reset database for each test."""
    with app.app_context():
        _db.init_app(app)
        _db.create_all()
        yield _db
        _db.session.remove()
        _db.drop_all()
示例#3
0
def create_app(version_path):
    """Construct an application instance."""
    initialize_logging()

    app = connexion.App(__name__, specification_dir='spec/')
    app.add_api('swagger.yml', resolver=RestyResolver('landoapi.api'))

    # Get the Flask app being wrapped by the Connexion app.
    flask_app = app.app

    flask_app.config['VERSION_PATH'] = version_path
    log_config_change('VERSION_PATH', version_path)

    version_info = json.load(open(version_path))
    logger.info(version_info, 'app.version')

    this_app_version = version_info['version']
    initialize_sentry(flask_app, this_app_version)

    db_uri = flask_app.config.setdefault(
        'SQLALCHEMY_DATABASE_URI', os.environ.get('DATABASE_URL', 'sqlite://'))
    log_config_change('SQLALCHEMY_DATABASE_URI', db_uri)

    flask_app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
    flask_app.config['ALEMBIC'] = {'script_location': '/migrations/'}

    flask_app.config['PATCH_BUCKET_NAME'] = os.getenv('PATCH_BUCKET_NAME')
    log_config_change('PATCH_BUCKET_NAME',
                      flask_app.config['PATCH_BUCKET_NAME'])
    flask_app.config['PINGBACK_HOST_URL'] = os.getenv('PINGBACK_HOST_URL')
    log_config_change('PINGBACK_HOST_URL',
                      flask_app.config['PINGBACK_HOST_URL'])

    # AWS credentials should be only provided if needed in development
    flask_app.config['AWS_ACCESS_KEY'] = os.getenv('AWS_ACCESS_KEY', None)
    flask_app.config['AWS_SECRET_KEY'] = os.getenv('AWS_SECRET_KEY', None)

    flask_app.register_blueprint(dockerflow)

    # Initialize database
    db.init_app(flask_app)

    # Intialize the alembic extension
    alembic.init_app(app.app)

    return app