blob: 4931964d8b1d86eb613f70b95b5a0a31a39c9d9f [file] [log] [blame]
# Copyright 2018 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
from flask import Flask
# Fix imports before importing gae_ts_mon.
import import_utils
import os
import_utils.FixImports()
import gae_ts_mon
# Setup cloud logging
import google.cloud.logging
if os.getenv('GAE_ENV') == 'standard':
# If this isn't a local server, set up cloud logging.
client = google.cloud.logging.Client()
client.setup_logging()
import google.appengine.api
from gae_libs import appengine_util
from handlers import config
from handlers.code_coverage import serve_ci_coverage
from handlers.code_coverage import serve_cq_coverage
# "code-coverage-frontend" module.
handler_mappings = [
# TODO(crbug.com/924573): Migrate to '.*/coverage/api/coverage-data'.
('/coverage/api/coverage-data', 'CQServeCodeCoverageData',
serve_cq_coverage.ServeCodeCoverageData().Handle, ['GET']),
# These mappings are separated so that ts_mon data (e.g. latency) is
# groupable by view. (instead of a single entry like /coverage/p/.*)
('/coverage/p/<string:project>/component',
'CIServeCodeCoverageDataComponent',
serve_ci_coverage.ServeCodeCoverageData().Handle, ['GET']),
('/coverage/p/<string:project>/dir', 'CIServeCodeCoverageDataDir',
serve_ci_coverage.ServeCodeCoverageData().Handle, ['GET']),
('/coverage/p/<string:project>/file', 'CIServeCodeCoverageDataFile',
serve_ci_coverage.ServeCodeCoverageData().Handle, ['GET']),
('/coverage/p/<string:project>', 'CIServeCodeCoverageDataDefault',
serve_ci_coverage.ServeCodeCoverageData().Handle, ['GET']),
('/waterfall/config', 'WaterfallConfig', config.Configuration().Handle,
['GET', 'POST'])
]
frontend_application = Flask(__name__)
frontend_application.wsgi_app = google.appengine.api.wrap_wsgi_app(
frontend_application.wsgi_app)
for url, endpoint, view_func, methods in handler_mappings:
frontend_application.add_url_rule(
url, endpoint=endpoint, view_func=view_func, methods=methods)
if appengine_util.IsInProductionApp():
gae_ts_mon.instrument_wsgi_application(frontend_application)