| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 |
- from rest_framework import generics
- from ipam.models import VRF, Role, RIR, Aggregate, Prefix, IPAddress, VLAN, VLANGroup
- from ipam import filters
- from . import serializers
- #
- # VRFs
- #
- class VRFListView(generics.ListAPIView):
- """
- List all VRFs
- """
- queryset = VRF.objects.select_related('tenant')
- serializer_class = serializers.VRFSerializer
- filter_class = filters.VRFFilter
- class VRFDetailView(generics.RetrieveAPIView):
- """
- Retrieve a single VRF
- """
- queryset = VRF.objects.select_related('tenant')
- 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(generics.ListAPIView):
- """
- List aggregates (filterable)
- """
- queryset = Aggregate.objects.select_related('rir')
- serializer_class = serializers.AggregateSerializer
- filter_class = filters.AggregateFilter
- class AggregateDetailView(generics.RetrieveAPIView):
- """
- Retrieve a single aggregate
- """
- queryset = Aggregate.objects.select_related('rir')
- serializer_class = serializers.AggregateSerializer
- #
- # Prefixes
- #
- class PrefixListView(generics.ListAPIView):
- """
- List prefixes (filterable)
- """
- queryset = Prefix.objects.select_related('site', 'vrf__tenant', 'tenant', 'vlan', 'role')
- serializer_class = serializers.PrefixSerializer
- filter_class = filters.PrefixFilter
- class PrefixDetailView(generics.RetrieveAPIView):
- """
- Retrieve a single prefix
- """
- queryset = Prefix.objects.select_related('site', 'vrf__tenant', 'tenant', 'vlan', 'role')
- serializer_class = serializers.PrefixSerializer
- #
- # IP addresses
- #
- class IPAddressListView(generics.ListAPIView):
- """
- List IP addresses (filterable)
- """
- queryset = IPAddress.objects.select_related('vrf__tenant', 'tenant', 'interface__device', 'nat_inside')\
- .prefetch_related('nat_outside')
- serializer_class = serializers.IPAddressSerializer
- filter_class = filters.IPAddressFilter
- class IPAddressDetailView(generics.RetrieveAPIView):
- """
- Retrieve a single IP address
- """
- queryset = IPAddress.objects.select_related('vrf__tenant', 'tenant', 'interface__device', 'nat_inside')\
- .prefetch_related('nat_outside')
- 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(generics.ListAPIView):
- """
- List VLANs (filterable)
- """
- queryset = VLAN.objects.select_related('site', 'group', 'tenant', 'role')
- serializer_class = serializers.VLANSerializer
- filter_class = filters.VLANFilter
- class VLANDetailView(generics.RetrieveAPIView):
- """
- Retrieve a single VLAN
- """
- queryset = VLAN.objects.select_related('site', 'group', 'tenant', 'role')
- serializer_class = serializers.VLANSerializer
|