views.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. from rest_framework.routers import APIRootView
  2. from netbox.api.viewsets import NetBoxModelViewSet
  3. from utilities.utils import count_related
  4. from vpn import filtersets
  5. from vpn.models import *
  6. from . import serializers
  7. __all__ = (
  8. 'IKEPolicyViewSet',
  9. 'IKEProposalViewSet',
  10. 'IPSecPolicyViewSet',
  11. 'IPSecProfileViewSet',
  12. 'IPSecProposalViewSet',
  13. 'TunnelTerminationViewSet',
  14. 'TunnelViewSet',
  15. 'VPNRootView',
  16. )
  17. class VPNRootView(APIRootView):
  18. """
  19. VPN API root view
  20. """
  21. def get_view_name(self):
  22. return 'VPN'
  23. #
  24. # Viewsets
  25. #
  26. class TunnelViewSet(NetBoxModelViewSet):
  27. queryset = Tunnel.objects.prefetch_related('ipsec_profile', 'tenant').annotate(
  28. terminations_count=count_related(TunnelTermination, 'tunnel')
  29. )
  30. serializer_class = serializers.TunnelSerializer
  31. filterset_class = filtersets.TunnelFilterSet
  32. class TunnelTerminationViewSet(NetBoxModelViewSet):
  33. queryset = TunnelTermination.objects.prefetch_related('tunnel')
  34. serializer_class = serializers.TunnelTerminationSerializer
  35. filterset_class = filtersets.TunnelTerminationFilterSet
  36. class IKEProposalViewSet(NetBoxModelViewSet):
  37. queryset = IKEProposal.objects.all()
  38. serializer_class = serializers.IKEProposalSerializer
  39. filterset_class = filtersets.IKEProposalFilterSet
  40. class IKEPolicyViewSet(NetBoxModelViewSet):
  41. queryset = IKEPolicy.objects.all()
  42. serializer_class = serializers.IKEPolicySerializer
  43. filterset_class = filtersets.IKEPolicyFilterSet
  44. class IPSecProposalViewSet(NetBoxModelViewSet):
  45. queryset = IPSecProposal.objects.all()
  46. serializer_class = serializers.IPSecProposalSerializer
  47. filterset_class = filtersets.IPSecProposalFilterSet
  48. class IPSecPolicyViewSet(NetBoxModelViewSet):
  49. queryset = IPSecPolicy.objects.all()
  50. serializer_class = serializers.IPSecPolicySerializer
  51. filterset_class = filtersets.IPSecPolicyFilterSet
  52. class IPSecProfileViewSet(NetBoxModelViewSet):
  53. queryset = IPSecProfile.objects.all()
  54. serializer_class = serializers.IPSecProfileSerializer
  55. filterset_class = filtersets.IPSecProfileFilterSet