freeleaps-service-hub/apps/metrics/webapi/routes/starrocks_metrics/available_metrics.py
2025-09-19 10:29:10 +08:00

42 lines
1.2 KiB
Python

from fastapi import APIRouter, HTTPException
from common.log.module_logger import ModuleLogger
from backend.services.starrocks_metrics_service import StarRocksMetricsService
router = APIRouter()
# Initialize service and logger
starrocks_service = StarRocksMetricsService()
module_logger = ModuleLogger(__file__)
@router.get("/starrocks/product/{product_id}/available-metrics")
async def get_available_metrics(product_id: str):
"""
Get list of available StarRocks-backed metrics for a specific product.
Args:
product_id: Product ID to get metrics for (required).
Returns a list of metric names available via StarRocks for the specified product.
"""
await module_logger.log_info(
f"Getting StarRocks available metrics list for product_id: {product_id}"
)
metrics = starrocks_service.get_available_metrics(product_id)
if not metrics:
available_products = ", ".join(starrocks_service.get_available_products())
raise HTTPException(
status_code=404,
detail=f"Unknown product_id: {product_id}. Available products: {available_products}"
)
return {
"product_id": product_id,
"available_metrics": metrics,
"total_count": len(metrics),
"description": f"List of StarRocks-backed metrics for product '{product_id}'",
}