"""Prometheus service definition.""" from __future__ import annotations from media_library_viewer_api.integrations.base import ( SecretField, ServiceConfigBase, ServiceDefinition, WidgetConfigBase, widget_kind, ) class PrometheusConfig(ServiceConfigBase): """Non-secret Prometheus connection config.""" base_url: str timeout_seconds: int = 10 class PrometheusMetricWidgetConfig(WidgetConfigBase): """A PromQL instant query rendered as a metric.""" promql: str DEFINITION = ServiceDefinition( service_type="prometheus", name="Prometheus", description="Metrics storage and PromQL queries.", config_model=PrometheusConfig, secret_fields=[ SecretField(key="api_key", label="API key", helper="Optional bearer token"), ], widget_kinds=[ widget_kind( kind="metric", name="Metric", description="Instant query result rendered as a metric.", model_cls=PrometheusMetricWidgetConfig, default_config={"promql": ""}, refresh_interval_ms=30_000, ), ], )