Beispiel #1
0
def create_app(config: dict = None) -> flask.Flask:
    app = backend_common.create_app(
        project_name=tooltool_api.config.PROJECT_NAME,
        app_name=tooltool_api.config.APP_NAME,
        config=config,
        extensions=[
            'log',
            'security',
            'cors',
            'api',
            'auth',
            'db',
            'pulse',
        ],
    )
    app.api.register(os.path.join(os.path.dirname(__file__), 'api.yml'))
    app.aws = tooltool_api.aws.AWS(app.config['S3_REGIONS_ACCESS_KEY_ID'],
                                   app.config['S3_REGIONS_SECRET_ACCESS_KEY'])

    for code, exception in werkzeug.exceptions.default_exceptions.items():
        app.register_error_handler(exception, custom_handle_default_exceptions)

    @app.cli.command()
    def worker():
        tooltool_api.cli.cmd_worker(app)

    @app.cli.command()
    def replicate():
        tooltool_api.cli.cmd_replicate(app)

    @app.cli.command()
    def check_pending_uploads():
        tooltool_api.cli.cmd_check_pending_uploads(app)

    return app
Beispiel #2
0
def create_app(config: dict = None) -> flask.Flask:
    app = backend_common.create_app(
        project_name=tooltool_api.config.PROJECT_NAME,
        app_name=tooltool_api.config.APP_NAME,
        config=config,
        extensions=[
            'log',
            'security',
            'cors',
            'api',
            'auth',
            'db',
            'pulse',
        ],
    )
    app.api.register(os.path.join(os.path.dirname(__file__), 'api.yml'))
    app.aws = tooltool_api.aws.AWS(app.config['S3_REGIONS_ACCESS_KEY_ID'],
                                   app.config['S3_REGIONS_SECRET_ACCESS_KEY'])

    for code, exception in werkzeug.exceptions.default_exceptions.items():
        app.register_error_handler(exception, custom_handle_default_exceptions)

    app.cli.add_command(tooltool_api.cli.cmd_worker, 'worker')
    app.cli.add_command(tooltool_api.cli.cmd_replicate, 'replicate')
    app.cli.add_command(tooltool_api.cli.cmd_check_pending_uploads, 'check-pending-uploads')

    return app
Beispiel #3
0
def app():
    '''
    Build an app with an authenticated dummy api
    '''
    import backend_common

    # Use unique auth instance
    config = backend_common.testing.get_app_config({
        'OIDC_CLIENT_SECRETS':
        os.path.join(os.path.dirname(__file__), 'client_secrets.json'),
        'OIDC_RESOURCE_SERVER_ONLY':
        True,
        'APP_TEMPLATES_FOLDER':
        '',
        'SQLALCHEMY_DATABASE_URI':
        'sqlite://',
        'SQLALCHEMY_TRACK_MODIFICATIONS':
        False,
    })

    app = backend_common.create_app(
        'test',
        extensions=backend_common.EXTENSIONS,
        config=config,
    )

    @app.route('/')
    def index():
        return app.response_class('OK')

    @app.route('/test-auth-login')
    @backend_common.auth.auth.require_login
    def logged_in():
        data = {
            'auth': True,
            'user': flask_login.current_user.get_id(),
            # permissions is a set, not serializable
            'scopes': list(flask_login.current_user.permissions),
        }
        return flask.jsonify(data)

    @app.route('/test-auth-scopes')
    @backend_common.auth.auth.require_scopes([
        ['project/test/A', 'project/test/B'],
        ['project/test-admin/*'],
    ])
    def scopes():
        return app.response_class('Your scopes are ok.')

    @app.route('/test-auth0-userinfo')
    @backend_common.auth0.mozilla_accept_token()
    def auth0_token():
        return app.response_class('OK')

    # Add fake swagger url, used by redirect
    app.api.swagger_url = '/'

    with app.app_context():
        backend_common.testing.configure_app(app)
        yield app
Beispiel #4
0
def create_app(config=None):
    import backend_common

    app = backend_common.create_app(
        project_name=codecoverage_backend.config.PROJECT_NAME,
        app_name=codecoverage_backend.config.APP_NAME,
        config=config,
        extensions=[
            'log',
            'security',
            'cors',
            'api',
        ],
    )
    # TODO: add predefined api.yml
    app.api.register(os.path.join(os.path.dirname(__file__), 'api.yml'))

    # Setup datadog stats
    codecoverage_backend.datadog.get_stats()

    # Warm up GCP cache
    try:
        codecoverage_backend.gcp.load_cache()
    except Exception as e:
        logger.warn('GCP cache warmup failed: {}'.format(e))

    return app
Beispiel #5
0
def create_app(config: dict = None) -> flask.Flask:
    app = backend_common.create_app(
        project_name=tooltool_api.config.PROJECT_NAME,
        app_name=tooltool_api.config.APP_NAME,
        config=config,
        extensions=[
            'log',
            'security',
            'cors',
            'api',
            'auth',
            'db',
            'pulse',
        ],
        static_folder='static',
    )
    app.api.register(os.path.join(os.path.dirname(__file__), 'api.yml'))
    app.aws = tooltool_api.aws.AWS(app.config['S3_REGIONS_ACCESS_KEY_ID'],
                                   app.config['S3_REGIONS_SECRET_ACCESS_KEY'])

    for code, exception in werkzeug.exceptions.default_exceptions.items():
        app.register_error_handler(exception, custom_handle_default_exceptions)

    app.cli.add_command(tooltool_api.cli.cmd_worker, 'worker')
    app.cli.add_command(tooltool_api.cli.cmd_replicate, 'replicate')
    app.cli.add_command(tooltool_api.cli.cmd_check_pending_uploads, 'check-pending-uploads')

    app.add_url_rule('/tooltool.py', view_func=tooltool_api.api.download_client)

    return app
Beispiel #6
0
def create_app(config=None):
    app = backend_common.create_app(
        project_name=shipit_api.config.PROJECT_NAME,
        app_name=shipit_api.config.APP_NAME,
        config=config,
        extensions=[
            'log',
            'security',
            'cors',
            'api',
            'auth',
            'auth0',
            'db',
        ],
    )

    app.notify = cli_common.taskcluster.get_service(
        'notify',
        os.environ.get('TASKCLUSTER_CLIENT_ID',
                       app.config.get('TASKCLUSTER_CLIENT_ID')),
        os.environ.get('TASKCLUSTER_ACCESS_TOKEN',
                       app.config.get('TASKCLUSTER_ACCESS_TOKEN')),
    )

    app.api.register(os.path.join(os.path.dirname(__file__), 'api.yml'))
    app.cli.add_command(shipit_api.worker.cmd, 'worker')

    return app
Beispiel #7
0
def create_app(config=None):
    app = backend_common.create_app(
        project_name=shipit_api.config.PROJECT_NAME,
        app_name=shipit_api.config.APP_NAME,
        config=config,
        extensions=[
            'log',
            'security',
            'cors',
            'api',
            'auth',
            'db',
            'pulse',
        ],
    )

    app.notify = cli_common.taskcluster.get_service(
        'notify',
        os.environ.get('TASKCLUSTER_CLIENT_ID', app.config.get('TASKCLUSTER_CLIENT_ID')),
        os.environ.get('TASKCLUSTER_ACCESS_TOKEN', app.config.get('TASKCLUSTER_ACCESS_TOKEN')),
    )

    app.api.register(os.path.join(os.path.dirname(__file__), 'api.yml'))
    app.cli.add_command(shipit_api.worker.cmd, 'worker')

    return app
Beispiel #8
0
def create_app(config=None):
    app = backend_common.create_app(
        project_name=releng_notification_policy.config.PROJECT_NAME,
        app_name=releng_notification_policy.config.APP_NAME,
        config=config,
        extensions=[
            'log',
            'security',
            'cors',
            'api',
            'auth',
            'db',
        ],
    )

    # Add TaskCluster notify to service
    app.notify = cli_common.taskcluster.get_service(
        'notify', app.config.get('TASKCLUSTER_CLIENT_ID'),
        app.config.get('TASKCLUSTER_ACCESS_TOKEN'))

    # TODO: add predefined api.yml
    app.api.register(os.path.join(os.path.dirname(__file__), 'api.yml'),
                     arguments={
                         'CHANNELS': CHANNELS,
                         'URGENCY_LEVELS': URGENCY_LEVELS,
                     })
    return app
Beispiel #9
0
def create_app(config=None):
    app = backend_common.create_app(
        project_name=__name__,
        app_name=APP_NAME,
        config=config,
        extensions=["dockerflow", "log", "security", "cors", "api", "auth", "db", "pulse"],
        root_path=os.path.dirname(__file__),
    )
    app.api.register(os.path.join(os.path.dirname(__file__), "api.yml"))
    app.cli.add_command(cmd, "worker")

    return app
Beispiel #10
0
def create_app(config=None):
    app = backend_common.create_app(
        project_name=shipit_code_coverage_backend.config.PROJECT_NAME,
        app_name=shipit_code_coverage_backend.config.PROJECT_PATH,
        config=config,
        extensions=[
            'log',
            'security',
            'cors',
            'api',
        ],
    )
    # TODO: add predefined api.yml
    app.api.register(os.path.join(os.path.dirname(__file__), 'api.yml'))
    return app
Beispiel #11
0
def create_app(config=None):
    app = backend_common.create_app(
        project_name=releng_tokens.config.PROJECT_NAME,
        app_name=releng_tokens.config.PROJECT_PATH,
        config=config,
        extensions=[
            'log',
            'security',
            'cors',
            'api',
            'auth',
            'db',
        ],
    )
    app.api.register(os.path.join(os.path.dirname(__file__), 'api.yml'))
    return app
Beispiel #12
0
def create_app(config=None):
    app = backend_common.create_app(
        project_name=tokens_api.config.PROJECT_NAME,
        app_name=tokens_api.config.APP_NAME,
        config=config,
        extensions=[
            'log',
            'security',
            'cors',
            'api',
            'auth',
            'db',
        ],
    )
    app.api.register(os.path.join(os.path.dirname(__file__), 'api.yml'))
    return app
Beispiel #13
0
def create_app(config=None):
    app = backend_common.create_app(
        name=shipit_taskcluster.config.PROJECT_NAME,
        config=config,
        extensions=[
            'log',
            'security',
            'cors',
            'api',
            'auth',
            'db',
        ],
    )
    # TODO: add predefined api.yml
    app.api.register(os.path.join(os.path.dirname(__file__), 'api.yml'))
    return app
Beispiel #14
0
def create_app(config=None):
    app = backend_common.create_app(
        project_name={{cookiecutter.project_path}}.config.PROJECT_NAME,
        app_name={{cookiecutter.project_path}}.config.PROJECT_PATH,
        config=config,
        extensions=[
            'log',
            'security',
            'cors',
            'api',
            'auth',
            'db',
        ],
    )
    # TODO: add predefined api.yml
    app.api.register(os.path.join(os.path.dirname(__file__), 'api.yml'))
    return app
Beispiel #15
0
def create_app(config=None):
    app = backend_common.create_app(
        project_name=releng_clobberer.config.PROJECT_NAME,
        app_name=releng_clobberer.config.APP_NAME,
        config=config,
        extensions=[
            'log',
            'security',
            'cors',
            'api',
            'auth',
            'db',
        ],
    )
    # TODO: add predefined api.yml
    app.api.register(os.path.join(os.path.dirname(__file__), 'api.yml'))
    return app
Beispiel #16
0
def create_public_app(config=None):
    """
    Create public API Flask application

    The corresponding OpenAPI spec is generated as a subset of the main api.yml
    file. In case the main spec is changed, you may want to regenerate the
    subset API spec by running `python ../../scripts/openapi_subset.py api.yml
    api_public.yml`
    """
    app = backend_common.create_app(
        project_name=shipit_api.config.PROJECT_NAME,
        app_name=shipit_api.config.APP_NAME,
        config=config,
        extensions=["log", "security", "cors", "api", "db", "dockerflow"],
    )
    app.api.register(os.path.join(os.path.dirname(__file__), "api_public.yml"))
    return app
Beispiel #17
0
def create_app(config=None):
    app = backend_common.create_app(
        project_name=releng_tooltool.config.PROJECT_NAME,
        app_name=releng_tooltool.config.APP_NAME,
        config=config,
        extensions=[
            'log',
            'security',
            'cors',
            'api',
            'auth',
            'db',
        ],
    )
    app.api.register(os.path.join(os.path.dirname(__file__), 'api.yml'))
    app.aws = releng_tooltool.aws.AWS(app.config['S3_REGIONS_ACCESS_KEY_ID'],
                                      app.config['S3_REGIONS_SECRET_ACCESS_KEY'])
    return app
Beispiel #18
0
def create_app(config=None):
    app = backend_common.create_app(
        project_name=treestatus_api.config.PROJECT_NAME,
        app_name=treestatus_api.config.APP_NAME,
        config=config,
        extensions=[
            'log',
            'security',
            'cors',
            'api',
            'auth',
            'db',
            'cache',
            'pulse',
        ],
    )
    # TODO: add predefined api.yml
    app.api.register(os.path.join(os.path.dirname(__file__), 'api.yml'))
    return app
Beispiel #19
0
def create_app(config=None):
    app = backend_common.create_app(
        name=releng_notification_identity.config.PROJECT_NAME,
        config=config,
        extensions=[
            'log',
            'security',
            'cors',
            'api',
            'auth',
            'db',
        ],
    )
    # TODO: add predefined api.yml
    app.api.register(os.path.join(os.path.dirname(__file__), 'api.yml'),
                     arguments={
                         'CHANNELS': CHANNELS,
                         'URGENCY_LEVELS': URGENCY_LEVELS,
                     })
    return app
Beispiel #20
0
def create_app(config=None):
    app = backend_common.create_app(
        project_name=shipit_api.config.PROJECT_NAME,
        app_name=shipit_api.config.APP_NAME,
        config=config,
        extensions=["log", "security", "cors", "api", "auth", "db", "pulse"],
    )

    if not app.config.get("DISABLE_NOTIFY", False):
        app.notify = cli_common.taskcluster.get_service(
            "notify",
            os.environ.get("TASKCLUSTER_CLIENT_ID",
                           app.config.get("TASKCLUSTER_CLIENT_ID")),
            os.environ.get("TASKCLUSTER_ACCESS_TOKEN",
                           app.config.get("TASKCLUSTER_ACCESS_TOKEN")),
        )

    app.api.register(os.path.join(os.path.dirname(__file__), "api.yml"))
    app.cli.add_command(shipit_api.worker.cmd, "worker")

    return app
Beispiel #21
0
def create_app(config=None):
    app = backend_common.create_app(
        name=shipit_signoff.config.PROJECT_NAME,
        config=config,
        extensions=[
            'log',
            'security',
            'cors',
            'api',
            'auth',
            'auth0',
            'db',
        ],
    )
    # TODO: add predefined api.yml
    app.api.register(os.path.join(os.path.dirname(__file__), 'api.yml'))

    if os.environ.get('TESTING'):
        from shipit_signoff.testing import fake_auth
        app.add_url_rule('/fake_auth', 'fake_auth', fake_auth)
    return app
def create_app(config=None):
    import backend_common

    app = backend_common.create_app(
        project_name=codecoverage_backend.config.PROJECT_NAME,
        app_name=codecoverage_backend.config.APP_NAME,
        config=config,
        extensions=[
            'log',
            'security',
            'cors',
            'api',
        ],
    )
    # TODO: add predefined api.yml
    app.api.register(os.path.join(os.path.dirname(__file__), 'api.yml'))

    # Setup datadog stats
    codecoverage_backend.datadog.get_stats()

    return app
Beispiel #23
0
def create_app(config=None):
    import os
    import backend_common
    import shipit_uplift.config
    import shipit_uplift.models  # noqa

    app = backend_common.create_app(
        name=shipit_uplift.config.PROJECT_NAME,
        config=config,
        extensions=[
            'log',
            'security',
            'cors',
            'api',
            'auth',
            'db',
            'cache',
        ],
    )
    # TODO: add predefined api.yml
    app.api.register(os.path.join(os.path.dirname(__file__), 'api.yml'))
    return app
Beispiel #24
0
def create_app(config=None):
    import os
    import backend_common
    import uplift_backend.config
    import uplift_backend.models  # noqa

    app = backend_common.create_app(
        app_name=uplift_backend.config.APP_NAME,
        project_name=uplift_backend.config.PROJECT_NAME,
        config=config,
        extensions=[
            'log',
            'security',
            'cors',
            'api',
            'auth',
            'db',
            'cache',
        ],
    )
    # TODO: add predefined api.yml
    app.api.register(os.path.join(os.path.dirname(__file__), 'api.yml'))
    return app
Beispiel #25
0
def app():
    """
    Build an app with an authenticated dummy api
    """

    # Use unique auth instance
    config = {
        'DEBUG': True,
    }
    app = create_app('test', extensions=[auth], config=config)

    @app.route('/')
    def index():
        return app.response_class('OK')

    @app.route('/test-login')
    @auth.auth.require_login
    def logged_in():
        data = {
            'auth': True,
            'user': current_user.get_id(),
            'scopes': current_user.permissions,
        }
        return jsonify(data)

    @app.route('/test-scopes')
    @auth.auth.require_scopes([
        ['project/test/A', 'project/test/B'],
        ['project/test-admin/*'],
    ])
    def scopes():
        return app.response_class('Your scopes are ok.')

    # Add fake swagger url, used by redirect
    app.api.swagger_url = '/'

    return app
Beispiel #26
0
def create_app(config=None):
    app = backend_common.create_app(
        project_name=notification_policy.config.PROJECT_NAME,
        app_name=notification_policy.config.APP_NAME,
        config=config,
        extensions=[
            'log',
            'security',
            'cors',
            'api',
            'auth',
            'db',
        ],
    )

    # Add TaskCluster notify to service
    app.notify = cli_common.taskcluster.get_service(
        'notify',
        app.config.get('TASKCLUSTER_CLIENT_ID'),
        app.config.get('TASKCLUSTER_ACCESS_TOKEN')
    )

    app.api.register(os.path.join(os.path.dirname(__file__), 'api.yml'))
    return app
Beispiel #27
0
SCOPES_ADMIN = SCOPES_USER + [
    'project:shipit:admin',
]
SCOPES_BOT = [
    'project:shipit:bot',
    'project:shipit:analysis/manage',
]


def init_app(app):

    # Register swagger api
    return app.api.register(
        os.path.join(os.path.dirname(__file__), 'api.yml'))


if not os.environ.get('APP_SETTINGS') and \
       os.path.isfile(APP_SETTINGS):
    os.environ['APP_SETTINGS'] = APP_SETTINGS


app = create_app(
    "shipit_uplift",
    extensions=[init_app, db, auth],
    debug=DEBUG,
    debug_src=HERE,
)

if __name__ == "__main__":
    app.run(**app.run_options())
Beispiel #28
0
DEBUG = bool(os.environ.get('DEBUG', __name__ == '__main__'))
HERE = os.path.dirname(os.path.abspath(__file__))
APP_SETTINGS = os.path.abspath(os.path.join(HERE, '..', 'settings.py'))


def init_app(app):
    app.api.register(os.path.join(os.path.dirname(__file__), 'api.yml'))


if not os.environ.get('APP_SETTINGS') and \
       os.path.isfile(APP_SETTINGS):
    os.environ['APP_SETTINGS'] = APP_SETTINGS


app = backend_common.create_app(
    "releng_treestatus",
    extensions=[
        init_app,
        backend_common.auth,
        backend_common.db,
        backend_common.cache,
        backend_common.pulse,
    ],
    debug=DEBUG,
    debug_src=HERE,
)


if __name__ == "__main__":
    app.run(**app.run_options())
Beispiel #29
0
from __future__ import absolute_import

import os

import backend_common
import backend_common.db

DEBUG = bool(os.environ.get('DEBUG', __name__ == '__main__'))
HERE = os.path.dirname(os.path.abspath(__file__))
APP_SETTINGS = os.path.abspath(os.path.join(HERE, '..', 'settings.py'))


def init_app(app):
    return app.api.register(os.path.join(os.path.dirname(__file__), 'api.yml'))


if not os.environ.get('APP_SETTINGS') and \
       os.path.isfile(APP_SETTINGS):
    os.environ['APP_SETTINGS'] = APP_SETTINGS

app = backend_common.create_app(
    "releng_mapper",
    extensions=[init_app, backend_common.db],
    debug=DEBUG,
    debug_src=HERE,
)

if __name__ == "__main__":
    app.run(**app.run_options())
Beispiel #30
0
DEBUG = bool(os.environ.get('DEBUG', __name__ == '__main__'))
HERE = os.path.dirname(os.path.abspath(__file__))
APP_SETTINGS = os.path.abspath(os.path.join(HERE, '..', 'settings.py'))


def init_app(app):
    return app.api.register(
        os.path.join(os.path.dirname(__file__), 'api.yml'))


if not os.environ.get('APP_SETTINGS') and \
       os.path.isfile(APP_SETTINGS):
    os.environ['APP_SETTINGS'] = APP_SETTINGS


app = backend_common.create_app(
    "shipit_signoff",
    extensions=[
        init_app,
        backend_common.auth,
        backend_common.auth0,
        backend_common.db,
    ],
    debug=DEBUG,
    debug_src=HERE,
)


if __name__ == "__main__":
    app.run(**app.run_options())