# plugins/prometheus/__init__.py from __future__ import annotations from typing import TYPE_CHECKING if TYPE_CHECKING: from quart import Quart _app: "Quart | None" = None def setup(app: "Quart") -> None: global _app _app = app from .models import PrometheusTarget # noqa: F401 — registers the table def get_scheduled_tasks() -> list: from .scheduler import make_scrape_task return [make_scrape_task(_app)] def get_blueprint(): from .routes import prometheus_bp return prometheus_bp def get_nav() -> list[dict]: # Surfaces in the sidebar's Infrastructure group (scraped endpoints). return [{"label": "Prometheus", "href": "/plugins/prometheus/"}] def get_alert_metrics() -> dict[str, list[str]]: """The metric names are whatever each endpoint exposes, so the list is empty here and the rule form offers the names recorded so far.""" return {"prometheus": []} def get_audit_entities() -> dict: """Audit rows about a target name it and link to its page.""" from .models import PrometheusTarget return {"prometheus_target": (PrometheusTarget, "/plugins/prometheus/targets/{}")}