views.py 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. from rest_framework.viewsets import ModelViewSet
  2. from ipam.models import Aggregate, IPAddress, Prefix, RIR, Role, Service, VLAN, VLANGroup, VRF
  3. from ipam import filters
  4. from extras.api.views import CustomFieldModelViewSet
  5. from utilities.api import WritableSerializerMixin
  6. from . import serializers
  7. #
  8. # VRFs
  9. #
  10. class VRFViewSet(WritableSerializerMixin, CustomFieldModelViewSet):
  11. queryset = VRF.objects.select_related('tenant')
  12. serializer_class = serializers.VRFSerializer
  13. filter_class = filters.VRFFilter
  14. #
  15. # Roles
  16. #
  17. class RoleViewSet(ModelViewSet):
  18. queryset = Role.objects.all()
  19. serializer_class = serializers.RoleSerializer
  20. #
  21. # RIRs
  22. #
  23. class RIRViewSet(ModelViewSet):
  24. queryset = RIR.objects.all()
  25. serializer_class = serializers.RIRSerializer
  26. #
  27. # Aggregates
  28. #
  29. class AggregateViewSet(WritableSerializerMixin, CustomFieldModelViewSet):
  30. queryset = Aggregate.objects.select_related('rir')
  31. serializer_class = serializers.AggregateSerializer
  32. filter_class = filters.AggregateFilter
  33. #
  34. # Prefixes
  35. #
  36. class PrefixViewSet(WritableSerializerMixin, CustomFieldModelViewSet):
  37. queryset = Prefix.objects.select_related('site', 'vrf__tenant', 'tenant', 'vlan', 'role')
  38. serializer_class = serializers.PrefixSerializer
  39. filter_class = filters.PrefixFilter
  40. #
  41. # IP addresses
  42. #
  43. class IPAddressViewSet(WritableSerializerMixin, CustomFieldModelViewSet):
  44. queryset = IPAddress.objects.select_related('vrf__tenant', 'tenant', 'interface__device', 'nat_inside')
  45. serializer_class = serializers.IPAddressSerializer
  46. filter_class = filters.IPAddressFilter
  47. #
  48. # VLAN groups
  49. #
  50. class VLANGroupViewSet(WritableSerializerMixin, ModelViewSet):
  51. queryset = VLANGroup.objects.select_related('site')
  52. serializer_class = serializers.VLANGroupSerializer
  53. filter_class = filters.VLANGroupFilter
  54. #
  55. # VLANs
  56. #
  57. class VLANViewSet(WritableSerializerMixin, CustomFieldModelViewSet):
  58. queryset = VLAN.objects.select_related('site', 'group', 'tenant', 'role')
  59. serializer_class = serializers.VLANSerializer
  60. filter_class = filters.VLANFilter
  61. #
  62. # Services
  63. #
  64. class ServiceViewSet(WritableSerializerMixin, ModelViewSet):
  65. queryset = Service.objects.select_related('device').prefetch_related('ipaddresses')
  66. serializer_class = serializers.ServiceSerializer
  67. filter_class = filters.ServiceFilter