views.py 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. from rest_framework import generics
  2. from ipam.models import VRF, Role, RIR, Aggregate, Prefix, IPAddress, VLAN, VLANGroup
  3. from ipam import filters
  4. from extras.api.views import CustomFieldModelAPIView
  5. from . import serializers
  6. #
  7. # VRFs
  8. #
  9. class VRFListView(CustomFieldModelAPIView, generics.ListAPIView):
  10. """
  11. List all VRFs
  12. """
  13. queryset = VRF.objects.select_related('tenant').prefetch_related('custom_field_values__field')
  14. serializer_class = serializers.VRFSerializer
  15. filter_class = filters.VRFFilter
  16. class VRFDetailView(CustomFieldModelAPIView, generics.RetrieveAPIView):
  17. """
  18. Retrieve a single VRF
  19. """
  20. queryset = VRF.objects.select_related('tenant').prefetch_related('custom_field_values__field')
  21. serializer_class = serializers.VRFSerializer
  22. #
  23. # Roles
  24. #
  25. class RoleListView(generics.ListAPIView):
  26. """
  27. List all roles
  28. """
  29. queryset = Role.objects.all()
  30. serializer_class = serializers.RoleSerializer
  31. class RoleDetailView(generics.RetrieveAPIView):
  32. """
  33. Retrieve a single role
  34. """
  35. queryset = Role.objects.all()
  36. serializer_class = serializers.RoleSerializer
  37. #
  38. # RIRs
  39. #
  40. class RIRListView(generics.ListAPIView):
  41. """
  42. List all RIRs
  43. """
  44. queryset = RIR.objects.all()
  45. serializer_class = serializers.RIRSerializer
  46. class RIRDetailView(generics.RetrieveAPIView):
  47. """
  48. Retrieve a single RIR
  49. """
  50. queryset = RIR.objects.all()
  51. serializer_class = serializers.RIRSerializer
  52. #
  53. # Aggregates
  54. #
  55. class AggregateListView(CustomFieldModelAPIView, generics.ListAPIView):
  56. """
  57. List aggregates (filterable)
  58. """
  59. queryset = Aggregate.objects.select_related('rir').prefetch_related('custom_field_values__field')
  60. serializer_class = serializers.AggregateSerializer
  61. filter_class = filters.AggregateFilter
  62. class AggregateDetailView(CustomFieldModelAPIView, generics.RetrieveAPIView):
  63. """
  64. Retrieve a single aggregate
  65. """
  66. queryset = Aggregate.objects.select_related('rir').prefetch_related('custom_field_values__field')
  67. serializer_class = serializers.AggregateSerializer
  68. #
  69. # Prefixes
  70. #
  71. class PrefixListView(CustomFieldModelAPIView, generics.ListAPIView):
  72. """
  73. List prefixes (filterable)
  74. """
  75. queryset = Prefix.objects.select_related('site', 'vrf__tenant', 'tenant', 'vlan', 'role')\
  76. .prefetch_related('custom_field_values__field')
  77. serializer_class = serializers.PrefixSerializer
  78. filter_class = filters.PrefixFilter
  79. class PrefixDetailView(CustomFieldModelAPIView, generics.RetrieveAPIView):
  80. """
  81. Retrieve a single prefix
  82. """
  83. queryset = Prefix.objects.select_related('site', 'vrf__tenant', 'tenant', 'vlan', 'role')\
  84. .prefetch_related('custom_field_values__field')
  85. serializer_class = serializers.PrefixSerializer
  86. #
  87. # IP addresses
  88. #
  89. class IPAddressListView(CustomFieldModelAPIView, generics.ListAPIView):
  90. """
  91. List IP addresses (filterable)
  92. """
  93. queryset = IPAddress.objects.select_related('vrf__tenant', 'tenant', 'interface__device', 'nat_inside')\
  94. .prefetch_related('nat_outside', 'custom_field_values__field')
  95. serializer_class = serializers.IPAddressSerializer
  96. filter_class = filters.IPAddressFilter
  97. class IPAddressDetailView(CustomFieldModelAPIView, generics.RetrieveAPIView):
  98. """
  99. Retrieve a single IP address
  100. """
  101. queryset = IPAddress.objects.select_related('vrf__tenant', 'tenant', 'interface__device', 'nat_inside')\
  102. .prefetch_related('nat_outside', 'custom_field_values__field')
  103. serializer_class = serializers.IPAddressSerializer
  104. #
  105. # VLAN groups
  106. #
  107. class VLANGroupListView(generics.ListAPIView):
  108. """
  109. List all VLAN groups
  110. """
  111. queryset = VLANGroup.objects.select_related('site')
  112. serializer_class = serializers.VLANGroupSerializer
  113. filter_class = filters.VLANGroupFilter
  114. class VLANGroupDetailView(generics.RetrieveAPIView):
  115. """
  116. Retrieve a single VLAN group
  117. """
  118. queryset = VLANGroup.objects.select_related('site')
  119. serializer_class = serializers.VLANGroupSerializer
  120. #
  121. # VLANs
  122. #
  123. class VLANListView(CustomFieldModelAPIView, generics.ListAPIView):
  124. """
  125. List VLANs (filterable)
  126. """
  127. queryset = VLAN.objects.select_related('site', 'group', 'tenant', 'role')\
  128. .prefetch_related('custom_field_values__field')
  129. serializer_class = serializers.VLANSerializer
  130. filter_class = filters.VLANFilter
  131. class VLANDetailView(CustomFieldModelAPIView, generics.RetrieveAPIView):
  132. """
  133. Retrieve a single VLAN
  134. """
  135. queryset = VLAN.objects.select_related('site', 'group', 'tenant', 'role')\
  136. .prefetch_related('custom_field_values__field')
  137. serializer_class = serializers.VLANSerializer