mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
* Enable dynamic field inclusion for REST API serializers * Recurse through nested serializer when resolving prefetches * Remove obsolete calls to prefetch_related() for API views * Remove support for brief_prefetch_fields viewset attribute * Rename query parameter * Fixes #15133: Fix FHRP group representation on assignments endpoint under brief mode (#15134) * Fixes #15133: Fix FHRP group representation on assignments endpoint under brief mode * Update API test * Restore get_queryset() on BriefModeMixin, minus prefetch logic * get_prefetches_for_serializer() should reference serializer field source if set
98 lines
2.7 KiB
Python
98 lines
2.7 KiB
Python
from rest_framework.routers import APIRootView
|
|
|
|
from netbox.api.viewsets import NetBoxModelViewSet
|
|
from utilities.utils import count_related
|
|
from vpn import filtersets
|
|
from vpn.models import *
|
|
from . import serializers
|
|
|
|
__all__ = (
|
|
'IKEPolicyViewSet',
|
|
'IKEProposalViewSet',
|
|
'IPSecPolicyViewSet',
|
|
'IPSecProfileViewSet',
|
|
'IPSecProposalViewSet',
|
|
'L2VPNViewSet',
|
|
'L2VPNTerminationViewSet',
|
|
'TunnelGroupViewSet',
|
|
'TunnelTerminationViewSet',
|
|
'TunnelViewSet',
|
|
'VPNRootView',
|
|
)
|
|
|
|
|
|
class VPNRootView(APIRootView):
|
|
"""
|
|
VPN API root view
|
|
"""
|
|
def get_view_name(self):
|
|
return 'VPN'
|
|
|
|
|
|
#
|
|
# Viewsets
|
|
#
|
|
|
|
class TunnelGroupViewSet(NetBoxModelViewSet):
|
|
queryset = TunnelGroup.objects.annotate(
|
|
tunnel_count=count_related(Tunnel, 'group')
|
|
)
|
|
serializer_class = serializers.TunnelGroupSerializer
|
|
filterset_class = filtersets.TunnelGroupFilterSet
|
|
|
|
|
|
class TunnelViewSet(NetBoxModelViewSet):
|
|
queryset = Tunnel.objects.annotate(
|
|
terminations_count=count_related(TunnelTermination, 'tunnel')
|
|
)
|
|
serializer_class = serializers.TunnelSerializer
|
|
filterset_class = filtersets.TunnelFilterSet
|
|
|
|
|
|
class TunnelTerminationViewSet(NetBoxModelViewSet):
|
|
queryset = TunnelTermination.objects.all()
|
|
serializer_class = serializers.TunnelTerminationSerializer
|
|
filterset_class = filtersets.TunnelTerminationFilterSet
|
|
|
|
|
|
class IKEProposalViewSet(NetBoxModelViewSet):
|
|
queryset = IKEProposal.objects.all()
|
|
serializer_class = serializers.IKEProposalSerializer
|
|
filterset_class = filtersets.IKEProposalFilterSet
|
|
|
|
|
|
class IKEPolicyViewSet(NetBoxModelViewSet):
|
|
queryset = IKEPolicy.objects.all()
|
|
serializer_class = serializers.IKEPolicySerializer
|
|
filterset_class = filtersets.IKEPolicyFilterSet
|
|
|
|
|
|
class IPSecProposalViewSet(NetBoxModelViewSet):
|
|
queryset = IPSecProposal.objects.all()
|
|
serializer_class = serializers.IPSecProposalSerializer
|
|
filterset_class = filtersets.IPSecProposalFilterSet
|
|
|
|
|
|
class IPSecPolicyViewSet(NetBoxModelViewSet):
|
|
queryset = IPSecPolicy.objects.all()
|
|
serializer_class = serializers.IPSecPolicySerializer
|
|
filterset_class = filtersets.IPSecPolicyFilterSet
|
|
|
|
|
|
class IPSecProfileViewSet(NetBoxModelViewSet):
|
|
queryset = IPSecProfile.objects.all()
|
|
serializer_class = serializers.IPSecProfileSerializer
|
|
filterset_class = filtersets.IPSecProfileFilterSet
|
|
|
|
|
|
class L2VPNViewSet(NetBoxModelViewSet):
|
|
queryset = L2VPN.objects.all()
|
|
serializer_class = serializers.L2VPNSerializer
|
|
filterset_class = filtersets.L2VPNFilterSet
|
|
|
|
|
|
class L2VPNTerminationViewSet(NetBoxModelViewSet):
|
|
queryset = L2VPNTermination.objects.all()
|
|
serializer_class = serializers.L2VPNTerminationSerializer
|
|
filterset_class = filtersets.L2VPNTerminationFilterSet
|