Add graphs endpoint to VMInterfaceViewSet

This commit is contained in:
Jeremy Stretch 2020-06-29 12:05:00 -04:00
parent 6ecbf45974
commit 89ff59d048

View File

@ -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)