views.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. from rest_framework import generics
  2. from ipam.models import VRF, Role, RIR, Aggregate, Prefix, IPAddress, VLAN
  3. from ipam.filters import AggregateFilter, PrefixFilter, IPAddressFilter, VLANFilter, VRFFilter
  4. from . import serializers
  5. class VRFListView(generics.ListAPIView):
  6. """
  7. List all VRFs
  8. """
  9. queryset = VRF.objects.all()
  10. serializer_class = serializers.VRFSerializer
  11. filter_class = VRFFilter
  12. class VRFDetailView(generics.RetrieveAPIView):
  13. """
  14. Retrieve a single VRF
  15. """
  16. queryset = VRF.objects.all()
  17. serializer_class = serializers.VRFSerializer
  18. class RoleListView(generics.ListAPIView):
  19. """
  20. List all roles
  21. """
  22. queryset = Role.objects.all()
  23. serializer_class = serializers.RoleSerializer
  24. class RoleDetailView(generics.RetrieveAPIView):
  25. """
  26. Retrieve a single role
  27. """
  28. queryset = Role.objects.all()
  29. serializer_class = serializers.RoleSerializer
  30. class RIRListView(generics.ListAPIView):
  31. """
  32. List all RIRs
  33. """
  34. queryset = RIR.objects.all()
  35. serializer_class = serializers.RIRSerializer
  36. class RIRDetailView(generics.RetrieveAPIView):
  37. """
  38. Retrieve a single RIR
  39. """
  40. queryset = RIR.objects.all()
  41. serializer_class = serializers.RIRSerializer
  42. class AggregateListView(generics.ListAPIView):
  43. """
  44. List aggregates (filterable)
  45. """
  46. queryset = Aggregate.objects.select_related('rir')
  47. serializer_class = serializers.AggregateSerializer
  48. filter_class = AggregateFilter
  49. class AggregateDetailView(generics.RetrieveAPIView):
  50. """
  51. Retrieve a single aggregate
  52. """
  53. queryset = Aggregate.objects.select_related('rir')
  54. serializer_class = serializers.AggregateSerializer
  55. class PrefixListView(generics.ListAPIView):
  56. """
  57. List prefixes (filterable)
  58. """
  59. queryset = Prefix.objects.select_related('site', 'vrf', 'vlan', 'role')
  60. serializer_class = serializers.PrefixSerializer
  61. filter_class = PrefixFilter
  62. class PrefixDetailView(generics.RetrieveAPIView):
  63. """
  64. Retrieve a single prefix
  65. """
  66. queryset = Prefix.objects.select_related('site', 'vrf', 'vlan', 'role')
  67. serializer_class = serializers.PrefixSerializer
  68. class IPAddressListView(generics.ListAPIView):
  69. """
  70. List IP addresses (filterable)
  71. """
  72. queryset = IPAddress.objects.select_related('vrf', 'interface__device', 'nat_inside')\
  73. .prefetch_related('nat_outside')
  74. serializer_class = serializers.IPAddressSerializer
  75. filter_class = IPAddressFilter
  76. class IPAddressDetailView(generics.RetrieveAPIView):
  77. """
  78. Retrieve a single IP address
  79. """
  80. queryset = IPAddress.objects.select_related('vrf', 'interface__device', 'nat_inside')\
  81. .prefetch_related('nat_outside')
  82. serializer_class = serializers.IPAddressSerializer
  83. class VLANListView(generics.ListAPIView):
  84. """
  85. List VLANs (filterable)
  86. """
  87. queryset = VLAN.objects.select_related('site', 'role')
  88. serializer_class = serializers.VLANSerializer
  89. filter_class = VLANFilter
  90. class VLANDetailView(generics.RetrieveAPIView):
  91. """
  92. Retrieve a single VLAN
  93. """
  94. queryset = VLAN.objects.select_related('site', 'role')
  95. serializer_class = serializers.VLANSerializer