From 89ff59d048b29eba8596402cbcf3bbe0834de9b0 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Mon, 29 Jun 2020 12:05:00 -0400 Subject: [PATCH] Add graphs endpoint to VMInterfaceViewSet --- netbox/virtualization/api/views.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/netbox/virtualization/api/views.py b/netbox/virtualization/api/views.py index f2a689f12..51bc567d2 100644 --- a/netbox/virtualization/api/views.py +++ b/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)