47 lines
1.1 KiB
Python
47 lines
1.1 KiB
Python
import requests
|
|
from flask import Flask, jsonify
|
|
from waitress import serve
|
|
|
|
from pyinfra.config import CONFIG
|
|
|
|
|
|
def run_probing_webserver(app, host=None, port=None, mode=None):
|
|
if not host:
|
|
host = CONFIG.probing_webserver.host
|
|
|
|
if not port:
|
|
port = CONFIG.probing_webserver.port
|
|
|
|
if not mode:
|
|
mode = CONFIG.probing_webserver.mode
|
|
|
|
if mode == "development":
|
|
app.run(host=host, port=port, debug=True)
|
|
|
|
elif mode == "production":
|
|
serve(app, host=host, port=port)
|
|
|
|
|
|
def set_up_probing_webserver():
|
|
app = Flask(__name__)
|
|
|
|
@app.route("/ready", methods=["GET"])
|
|
def ready():
|
|
resp = jsonify("OK")
|
|
resp.status_code = 200
|
|
return resp
|
|
|
|
@app.route("/health", methods=["GET"])
|
|
def healthy():
|
|
resp = jsonify("OK")
|
|
resp.status_code = 200
|
|
return resp
|
|
|
|
@app.route("/prometheus", methods=["GET"])
|
|
def get_analysis_prometheus():
|
|
prom_endpoint = f"{CONFIG.rabbitmq.callback.analysis_endpoint}/prometheus"
|
|
metric = requests.get(prom_endpoint)
|
|
return metric.text
|
|
|
|
return app
|