main
py 35 lines 1.16 KB
Raw
1 from fastapi import APIRouter
2 from fastapi import Body
3 from fastapi import Security
4 from loguru import logger
5
6 from app.auth.utils import AuthHandler
7 from app.connectors.grafana.schema.dashboards import DashboardProvisionRequest
8 from app.connectors.grafana.schema.dashboards import GrafanaDashboardResponse
9 from app.connectors.grafana.services.dashboards import provision_dashboards
10
11 # App specific imports
12
13
14 grafana_dashboards_router = APIRouter()
15
16
17 @grafana_dashboards_router.post(
18 "/dashboards",
19 response_model=GrafanaDashboardResponse,
20 description="Provision Grafana dashboards",
21 dependencies=[Security(AuthHandler().require_any_scope("admin", "analyst"))],
22 )
23 async def provision_dashboards_route(request: DashboardProvisionRequest = Body(...)):
24 """
25 Endpoint to provision Grafana dashboards.
26
27 Args:
28 request (DashboardProvisionRequest): The request body containing the dashboard provisioning data.
29
30 Returns:
31 GrafanaDashboardResponse: The response containing the result of the dashboard provisioning.
32 """
33 logger.info("Provisioning Grafana dashboards")
34 provision = await provision_dashboards(request)
35 return provision