| 370 | |
| 371 | |
| 372 | class EnvironmentMetricsViewSet(GenericViewSet[Environment]): |
| 373 | permission_classes = [IsAuthenticated, EnvironmentPermissions] |
| 374 | lookup_field = "api_key" |
| 375 | lookup_url_kwarg = "environment_api_key" |
| 376 | serializer_class: type[BaseSerializer[Any]] = EnvironmentMetricsSerializer |
| 377 | queryset = Environment.objects.all() |
| 378 | |
| 379 | @extend_schema( |
| 380 | description="Get metrics for this environment.", |
| 381 | responses={200: EnvironmentMetricsSerializer}, |
| 382 | ) |
| 383 | def list(self, request: Request, *args: Any, **kwargs: Any) -> Response: |
| 384 | environment: Environment = self.get_object() |
| 385 | metrics_service = EnvironmentMetricsService(environment) |
| 386 | metrics = metrics_service.get_metrics_payload() |
| 387 | serializer = self.get_serializer({"metrics": metrics}) |
| 388 | return Response(serializer.data, status=status.HTTP_200_OK) |