views.py 3.9 KB

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