| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- from rest_framework import generics
- from ipam.models import VRF, Role, RIR, Aggregate, Prefix, IPAddress, VLAN, VLANGroup
- from ipam import filters
- from extras.api.views import CustomFieldModelAPIView
- from . import serializers
- #
- # VRFs
- #
- class VRFListView(CustomFieldModelAPIView, generics.ListAPIView):
- """
- List all VRFs
- """
- queryset = VRF.objects.select_related('tenant').prefetch_related('custom_field_values__field')
- serializer_class = serializers.VRFSerializer
- filter_class = filters.VRFFilter
- class VRFDetailView(CustomFieldModelAPIView, generics.RetrieveAPIView):
- """
- Retrieve a single VRF
- """
- queryset = VRF.objects.select_related('tenant').prefetch_related('custom_field_values__field')
- serializer_class = serializers.VRFSerializer
- #
- # Roles
- #
- class RoleListView(generics.ListAPIView):
- """
- List all roles
- """
- queryset = Role.objects.all()
- serializer_class = serializers.RoleSerializer
- class RoleDetailView(generics.RetrieveAPIView):
- """
- Retrieve a single role
- """
- queryset = Role.objects.all()
- serializer_class = serializers.RoleSerializer
- #
- # RIRs
- #
- class RIRListView(generics.ListAPIView):
- """
- List all RIRs
- """
- queryset = RIR.objects.all()
- serializer_class = serializers.RIRSerializer
- class RIRDetailView(generics.RetrieveAPIView):
- """
- Retrieve a single RIR
- """
- queryset = RIR.objects.all()
- serializer_class = serializers.RIRSerializer
- #
- # Aggregates
- #
- class AggregateListView(CustomFieldModelAPIView, generics.ListAPIView):
- """
- List aggregates (filterable)
- """
- queryset = Aggregate.objects.select_related('rir').prefetch_related('custom_field_values__field')
- serializer_class = serializers.AggregateSerializer
- filter_class = filters.AggregateFilter
- class AggregateDetailView(CustomFieldModelAPIView, generics.RetrieveAPIView):
- """
- Retrieve a single aggregate
- """
- queryset = Aggregate.objects.select_related('rir').prefetch_related('custom_field_values__field')
- serializer_class = serializers.AggregateSerializer
- #
- # Prefixes
- #
- class PrefixListView(CustomFieldModelAPIView, generics.ListAPIView):
- """
- List prefixes (filterable)
- """
- queryset = Prefix.objects.select_related('site', 'vrf__tenant', 'tenant', 'vlan', 'role')\
- .prefetch_related('custom_field_values__field')
- serializer_class = serializers.PrefixSerializer
- filter_class = filters.PrefixFilter
- class PrefixDetailView(CustomFieldModelAPIView, generics.RetrieveAPIView):
- """
- Retrieve a single prefix
- """
- queryset = Prefix.objects.select_related('site', 'vrf__tenant', 'tenant', 'vlan', 'role')\
- .prefetch_related('custom_field_values__field')
- serializer_class = serializers.PrefixSerializer
- #
- # IP addresses
- #
- class IPAddressListView(CustomFieldModelAPIView, generics.ListAPIView):
- """
- List IP addresses (filterable)
- """
- queryset = IPAddress.objects.select_related('vrf__tenant', 'tenant', 'interface__device', 'nat_inside')\
- .prefetch_related('nat_outside', 'custom_field_values__field')
- serializer_class = serializers.IPAddressSerializer
- filter_class = filters.IPAddressFilter
- class IPAddressDetailView(CustomFieldModelAPIView, generics.RetrieveAPIView):
- """
- Retrieve a single IP address
- """
- queryset = IPAddress.objects.select_related('vrf__tenant', 'tenant', 'interface__device', 'nat_inside')\
- .prefetch_related('nat_outside', 'custom_field_values__field')
- serializer_class = serializers.IPAddressSerializer
- #
- # VLAN groups
- #
- class VLANGroupListView(generics.ListAPIView):
- """
- List all VLAN groups
- """
- queryset = VLANGroup.objects.select_related('site')
- serializer_class = serializers.VLANGroupSerializer
- filter_class = filters.VLANGroupFilter
- class VLANGroupDetailView(generics.RetrieveAPIView):
- """
- Retrieve a single VLAN group
- """
- queryset = VLANGroup.objects.select_related('site')
- serializer_class = serializers.VLANGroupSerializer
- #
- # VLANs
- #
- class VLANListView(CustomFieldModelAPIView, generics.ListAPIView):
- """
- List VLANs (filterable)
- """
- queryset = VLAN.objects.select_related('site', 'group', 'tenant', 'role')\
- .prefetch_related('custom_field_values__field')
- serializer_class = serializers.VLANSerializer
- filter_class = filters.VLANFilter
- class VLANDetailView(CustomFieldModelAPIView, generics.RetrieveAPIView):
- """
- Retrieve a single VLAN
- """
- queryset = VLAN.objects.select_related('site', 'group', 'tenant', 'role')\
- .prefetch_related('custom_field_values__field')
- serializer_class = serializers.VLANSerializer
|