majuna/app/__init__.py
Iain Learmonth 4081a38552 metrics: refactor into a separate module
as much as possible, given we need flask context
2022-10-05 15:57:58 +01:00

42 lines
1.2 KiB
Python

from flask import Flask, redirect, url_for
from flask.typing import ResponseReturnValue
from werkzeug.middleware.dispatcher import DispatcherMiddleware
from prometheus_client import make_wsgi_app, REGISTRY
import yaml
from app.extensions import db
from app.extensions import migrate
from app.extensions import bootstrap
from app.models.automation import Automation, AutomationState
from app.portal import portal
from app.tfstate import tfstate
app = Flask(__name__)
app.config.from_file("../config.yaml", load=yaml.safe_load)
app.wsgi_app = DispatcherMiddleware(app.wsgi_app, {
'/metrics': make_wsgi_app()
})
db.init_app(app)
migrate.init_app(app, db, render_as_batch=True)
bootstrap.init_app(app)
app.register_blueprint(portal, url_prefix="/portal")
app.register_blueprint(tfstate, url_prefix="/tfstate")
from app.metrics import DefinedProxiesCollector, BlockedProxiesCollector, AutomationCollector
REGISTRY.register(DefinedProxiesCollector())
REGISTRY.register(BlockedProxiesCollector())
REGISTRY.register(AutomationCollector())
@app.route('/')
def index() -> ResponseReturnValue:
return redirect(url_for("portal.portal_home"))
if __name__ == '__main__':
app.run()