47 lines
1.6 KiB
Python
47 lines
1.6 KiB
Python
"""
|
|
routes/root.py — корневые эндпоинты (/health, /).
|
|
|
|
Blueprint "root" регистрируется в app.py БЕЗ url_prefix.
|
|
Отвечает за healthcheck (для Nubes) и HTML-страницу с информацией о сервисе.
|
|
"""
|
|
|
|
from flask import Blueprint, render_template
|
|
|
|
import mock_state
|
|
import config.loader as _cfg
|
|
|
|
# Версия — из config/loader.py (единый источник правды)
|
|
VERSION = _cfg.VERSION
|
|
|
|
# Blueprint без префикса — роуты /health и / будут на корне домена
|
|
bp = Blueprint("root", __name__)
|
|
|
|
|
|
@bp.route("/health")
|
|
def health():
|
|
"""Healthcheck для Nubes.
|
|
|
|
Платформа периодически дёргает этот эндпоинт. Если вернёт не 200 —
|
|
контейнер будет перезапущен. Возвращаем просто "OK", без JSON.
|
|
"""
|
|
return "OK"
|
|
|
|
|
|
@bp.route("/")
|
|
def index():
|
|
"""Корневая HTML-страница с информацией о сервисе.
|
|
|
|
Показывает: версию, количество загруженных сервисов, количество инстансов,
|
|
текущую задержку операций. Использует Jinja2-шаблон templates/index.html
|
|
и внешний CSS из static/style.css.
|
|
"""
|
|
svc_count = len(_cfg.SERVICES)
|
|
inst_count = len(mock_state.state.instances)
|
|
return render_template(
|
|
"index.html",
|
|
version=_cfg.VERSION,
|
|
svc_count=svc_count,
|
|
inst_count=inst_count,
|
|
delay=_cfg.DELAY,
|
|
)
|