MAESTRO: add health endpoint

This commit is contained in:
Mariusz Banach
2026-02-18 04:18:51 +01:00
parent 4d1a5299bf
commit 2ff3b64b26
4 changed files with 95 additions and 1 deletions

View File

@@ -0,0 +1,75 @@
from __future__ import annotations
import os
import time
import tomllib
from importlib import metadata
from pathlib import Path
from fastapi import APIRouter
from app.engine.scanner_registry import ScannerRegistry
from app.schemas.health import HealthResponse
router = APIRouter(prefix="/api", tags=["health"])
_START_TIME = time.monotonic()
_PROJECT_NAME = "web-header-analyzer-backend"
@router.get("/health", response_model=HealthResponse)
def health_check() -> HealthResponse:
status = "up"
scanner_count = 0
try:
registry = ScannerRegistry()
scanner_count = len(registry.list_tests())
if scanner_count == 0:
status = "degraded"
except Exception:
status = "down"
scanner_count = 0
return HealthResponse(
status=status,
version=_resolve_version(),
uptime=_uptime_seconds(),
scanner_count=scanner_count,
)
def _uptime_seconds() -> float:
return max(0.0, time.monotonic() - _START_TIME)
def _resolve_version() -> str:
env_version = os.getenv("WHA_VERSION", "").strip()
if env_version:
return env_version
try:
return metadata.version(_PROJECT_NAME)
except metadata.PackageNotFoundError:
pass
pyproject_path = Path(__file__).resolve().parents[2] / "pyproject.toml"
if pyproject_path.exists():
try:
data = pyproject_path.read_text(encoding="utf-8")
except OSError:
data = ""
if data:
try:
parsed = tomllib.loads(data)
except ValueError:
parsed = {}
version = (
parsed.get("project", {}).get("version")
if isinstance(parsed, dict)
else None
)
if isinstance(version, str) and version.strip():
return version.strip()
return "unknown"