Просмотр исходного кода

Add graphs endpoint to VMInterfaceViewSet

Jeremy Stretch 5 лет назад
Родитель
Сommit
89ff59d048
1 измененных файлов с 15 добавлено и 0 удалено
  1. 15 0
      netbox/virtualization/api/views.py

+ 15 - 0
netbox/virtualization/api/views.py

@@ -1,7 +1,12 @@
 from django.db.models import Count
+from django.shortcuts import get_object_or_404
+from rest_framework.decorators import action
+from rest_framework.response import Response
 
 from dcim.models import Device
+from extras.api.serializers import RenderedGraphSerializer
 from extras.api.views import CustomFieldModelViewSet
+from extras.models import Graph
 from utilities.api import ModelViewSet
 from utilities.utils import get_subquery
 from virtualization import filters
@@ -79,3 +84,13 @@ class VMInterfaceViewSet(ModelViewSet):
     )
     serializer_class = serializers.VMInterfaceSerializer
     filterset_class = filters.VMInterfaceFilterSet
+
+    @action(detail=True)
+    def graphs(self, request, pk):
+        """
+        A convenience method for rendering graphs for a particular VM interface.
+        """
+        vminterface = get_object_or_404(self.queryset, pk=pk)
+        queryset = Graph.objects.restrict(request.user).filter(type__model='vminterface')
+        serializer = RenderedGraphSerializer(queryset, many=True, context={'graphed_object': vminterface})
+        return Response(serializer.data)