|
@@ -1,18 +1,22 @@
|
|
from rest_framework import generics
|
|
from rest_framework import generics
|
|
|
|
|
|
-from ipam.models import VRF, Role, RIR, Aggregate, Prefix, IPAddress, VLAN
|
|
|
|
-from ipam.filters import AggregateFilter, PrefixFilter, IPAddressFilter, VLANFilter, VRFFilter
|
|
|
|
|
|
+from ipam.models import VRF, Role, RIR, Aggregate, Prefix, IPAddress, VLAN, VLANGroup
|
|
|
|
+from ipam import filters
|
|
|
|
|
|
from . import serializers
|
|
from . import serializers
|
|
|
|
|
|
|
|
|
|
|
|
+#
|
|
|
|
+# VRFs
|
|
|
|
+#
|
|
|
|
+
|
|
class VRFListView(generics.ListAPIView):
|
|
class VRFListView(generics.ListAPIView):
|
|
"""
|
|
"""
|
|
List all VRFs
|
|
List all VRFs
|
|
"""
|
|
"""
|
|
queryset = VRF.objects.all()
|
|
queryset = VRF.objects.all()
|
|
serializer_class = serializers.VRFSerializer
|
|
serializer_class = serializers.VRFSerializer
|
|
- filter_class = VRFFilter
|
|
|
|
|
|
+ filter_class = filters.VRFFilter
|
|
|
|
|
|
|
|
|
|
class VRFDetailView(generics.RetrieveAPIView):
|
|
class VRFDetailView(generics.RetrieveAPIView):
|
|
@@ -23,6 +27,10 @@ class VRFDetailView(generics.RetrieveAPIView):
|
|
serializer_class = serializers.VRFSerializer
|
|
serializer_class = serializers.VRFSerializer
|
|
|
|
|
|
|
|
|
|
|
|
+#
|
|
|
|
+# Roles
|
|
|
|
+#
|
|
|
|
+
|
|
class RoleListView(generics.ListAPIView):
|
|
class RoleListView(generics.ListAPIView):
|
|
"""
|
|
"""
|
|
List all roles
|
|
List all roles
|
|
@@ -39,6 +47,10 @@ class RoleDetailView(generics.RetrieveAPIView):
|
|
serializer_class = serializers.RoleSerializer
|
|
serializer_class = serializers.RoleSerializer
|
|
|
|
|
|
|
|
|
|
|
|
+#
|
|
|
|
+# RIRs
|
|
|
|
+#
|
|
|
|
+
|
|
class RIRListView(generics.ListAPIView):
|
|
class RIRListView(generics.ListAPIView):
|
|
"""
|
|
"""
|
|
List all RIRs
|
|
List all RIRs
|
|
@@ -55,13 +67,17 @@ class RIRDetailView(generics.RetrieveAPIView):
|
|
serializer_class = serializers.RIRSerializer
|
|
serializer_class = serializers.RIRSerializer
|
|
|
|
|
|
|
|
|
|
|
|
+#
|
|
|
|
+# Aggregates
|
|
|
|
+#
|
|
|
|
+
|
|
class AggregateListView(generics.ListAPIView):
|
|
class AggregateListView(generics.ListAPIView):
|
|
"""
|
|
"""
|
|
List aggregates (filterable)
|
|
List aggregates (filterable)
|
|
"""
|
|
"""
|
|
queryset = Aggregate.objects.select_related('rir')
|
|
queryset = Aggregate.objects.select_related('rir')
|
|
serializer_class = serializers.AggregateSerializer
|
|
serializer_class = serializers.AggregateSerializer
|
|
- filter_class = AggregateFilter
|
|
|
|
|
|
+ filter_class = filters.AggregateFilter
|
|
|
|
|
|
|
|
|
|
class AggregateDetailView(generics.RetrieveAPIView):
|
|
class AggregateDetailView(generics.RetrieveAPIView):
|
|
@@ -72,13 +88,17 @@ class AggregateDetailView(generics.RetrieveAPIView):
|
|
serializer_class = serializers.AggregateSerializer
|
|
serializer_class = serializers.AggregateSerializer
|
|
|
|
|
|
|
|
|
|
|
|
+#
|
|
|
|
+# Prefixes
|
|
|
|
+#
|
|
|
|
+
|
|
class PrefixListView(generics.ListAPIView):
|
|
class PrefixListView(generics.ListAPIView):
|
|
"""
|
|
"""
|
|
List prefixes (filterable)
|
|
List prefixes (filterable)
|
|
"""
|
|
"""
|
|
queryset = Prefix.objects.select_related('site', 'vrf', 'vlan', 'role')
|
|
queryset = Prefix.objects.select_related('site', 'vrf', 'vlan', 'role')
|
|
serializer_class = serializers.PrefixSerializer
|
|
serializer_class = serializers.PrefixSerializer
|
|
- filter_class = PrefixFilter
|
|
|
|
|
|
+ filter_class = filters.PrefixFilter
|
|
|
|
|
|
|
|
|
|
class PrefixDetailView(generics.RetrieveAPIView):
|
|
class PrefixDetailView(generics.RetrieveAPIView):
|
|
@@ -89,6 +109,10 @@ class PrefixDetailView(generics.RetrieveAPIView):
|
|
serializer_class = serializers.PrefixSerializer
|
|
serializer_class = serializers.PrefixSerializer
|
|
|
|
|
|
|
|
|
|
|
|
+#
|
|
|
|
+# IP addresses
|
|
|
|
+#
|
|
|
|
+
|
|
class IPAddressListView(generics.ListAPIView):
|
|
class IPAddressListView(generics.ListAPIView):
|
|
"""
|
|
"""
|
|
List IP addresses (filterable)
|
|
List IP addresses (filterable)
|
|
@@ -96,7 +120,7 @@ class IPAddressListView(generics.ListAPIView):
|
|
queryset = IPAddress.objects.select_related('vrf', 'interface__device', 'nat_inside')\
|
|
queryset = IPAddress.objects.select_related('vrf', 'interface__device', 'nat_inside')\
|
|
.prefetch_related('nat_outside')
|
|
.prefetch_related('nat_outside')
|
|
serializer_class = serializers.IPAddressSerializer
|
|
serializer_class = serializers.IPAddressSerializer
|
|
- filter_class = IPAddressFilter
|
|
|
|
|
|
+ filter_class = filters.IPAddressFilter
|
|
|
|
|
|
|
|
|
|
class IPAddressDetailView(generics.RetrieveAPIView):
|
|
class IPAddressDetailView(generics.RetrieveAPIView):
|
|
@@ -108,13 +132,38 @@ class IPAddressDetailView(generics.RetrieveAPIView):
|
|
serializer_class = serializers.IPAddressSerializer
|
|
serializer_class = serializers.IPAddressSerializer
|
|
|
|
|
|
|
|
|
|
|
|
+#
|
|
|
|
+# VLAN groups
|
|
|
|
+#
|
|
|
|
+
|
|
|
|
+class VLANGroupListView(generics.ListAPIView):
|
|
|
|
+ """
|
|
|
|
+ List all VLAN groups
|
|
|
|
+ """
|
|
|
|
+ queryset = VLANGroup.objects.all()
|
|
|
|
+ serializer_class = serializers.VLANGroupSerializer
|
|
|
|
+ filter_class = filters.VLANGroupFilter
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+class VLANGroupDetailView(generics.RetrieveAPIView):
|
|
|
|
+ """
|
|
|
|
+ Retrieve a single VLAN group
|
|
|
|
+ """
|
|
|
|
+ queryset = VLANGroup.objects.all()
|
|
|
|
+ serializer_class = serializers.VLANGroupSerializer
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+#
|
|
|
|
+# VLANs
|
|
|
|
+#
|
|
|
|
+
|
|
class VLANListView(generics.ListAPIView):
|
|
class VLANListView(generics.ListAPIView):
|
|
"""
|
|
"""
|
|
List VLANs (filterable)
|
|
List VLANs (filterable)
|
|
"""
|
|
"""
|
|
queryset = VLAN.objects.select_related('site', 'role')
|
|
queryset = VLAN.objects.select_related('site', 'role')
|
|
serializer_class = serializers.VLANSerializer
|
|
serializer_class = serializers.VLANSerializer
|
|
- filter_class = VLANFilter
|
|
|
|
|
|
+ filter_class = filters.VLANFilter
|
|
|
|
|
|
|
|
|
|
class VLANDetailView(generics.RetrieveAPIView):
|
|
class VLANDetailView(generics.RetrieveAPIView):
|