1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

201 lines
5.2 KiB
Python
Raw Normal View History

2016-03-01 11:23:03 -05:00
from rest_framework import generics
from ipam.models import Aggregate, IPAddress, Prefix, RIR, Role, Service, VLAN, VLANGroup, VRF
2016-07-15 13:26:54 -04:00
from ipam import filters
2016-05-18 16:20:30 -04:00
2016-08-22 13:20:30 -04:00
from extras.api.views import CustomFieldModelAPIView
2016-05-18 16:20:30 -04:00
from . import serializers
2016-03-01 11:23:03 -05:00
2016-07-15 13:26:54 -04:00
#
# VRFs
#
2016-08-22 13:20:30 -04:00
class VRFListView(CustomFieldModelAPIView, generics.ListAPIView):
2016-03-01 11:23:03 -05:00
"""
List all VRFs
"""
2016-08-22 15:16:49 -04:00
queryset = VRF.objects.select_related('tenant').prefetch_related('custom_field_values__field')
2016-05-18 16:20:30 -04:00
serializer_class = serializers.VRFSerializer
2016-07-15 13:26:54 -04:00
filter_class = filters.VRFFilter
2016-03-01 11:23:03 -05:00
2016-08-22 13:20:30 -04:00
class VRFDetailView(CustomFieldModelAPIView, generics.RetrieveAPIView):
2016-03-01 11:23:03 -05:00
"""
Retrieve a single VRF
"""
2016-08-22 15:16:49 -04:00
queryset = VRF.objects.select_related('tenant').prefetch_related('custom_field_values__field')
2016-05-18 16:20:30 -04:00
serializer_class = serializers.VRFSerializer
2016-03-01 11:23:03 -05:00
2016-07-15 13:26:54 -04:00
#
# Roles
#
2016-03-01 11:23:03 -05:00
class RoleListView(generics.ListAPIView):
"""
List all roles
"""
queryset = Role.objects.all()
2016-05-18 16:20:30 -04:00
serializer_class = serializers.RoleSerializer
2016-03-01 11:23:03 -05:00
class RoleDetailView(generics.RetrieveAPIView):
"""
Retrieve a single role
"""
queryset = Role.objects.all()
2016-05-18 16:20:30 -04:00
serializer_class = serializers.RoleSerializer
2016-03-01 11:23:03 -05:00
2016-07-15 13:26:54 -04:00
#
# RIRs
#
2016-03-01 11:23:03 -05:00
class RIRListView(generics.ListAPIView):
"""
List all RIRs
"""
queryset = RIR.objects.all()
2016-05-18 16:20:30 -04:00
serializer_class = serializers.RIRSerializer
2016-03-01 11:23:03 -05:00
class RIRDetailView(generics.RetrieveAPIView):
"""
Retrieve a single RIR
"""
queryset = RIR.objects.all()
2016-05-18 16:20:30 -04:00
serializer_class = serializers.RIRSerializer
2016-03-01 11:23:03 -05:00
2016-07-15 13:26:54 -04:00
#
# Aggregates
#
2016-08-22 13:20:30 -04:00
class AggregateListView(CustomFieldModelAPIView, generics.ListAPIView):
2016-03-01 11:23:03 -05:00
"""
List aggregates (filterable)
"""
2016-08-22 15:16:49 -04:00
queryset = Aggregate.objects.select_related('rir').prefetch_related('custom_field_values__field')
2016-05-18 16:20:30 -04:00
serializer_class = serializers.AggregateSerializer
2016-07-15 13:26:54 -04:00
filter_class = filters.AggregateFilter
2016-03-01 11:23:03 -05:00
2016-08-22 13:20:30 -04:00
class AggregateDetailView(CustomFieldModelAPIView, generics.RetrieveAPIView):
2016-03-01 11:23:03 -05:00
"""
Retrieve a single aggregate
"""
2016-08-22 15:16:49 -04:00
queryset = Aggregate.objects.select_related('rir').prefetch_related('custom_field_values__field')
2016-05-18 16:20:30 -04:00
serializer_class = serializers.AggregateSerializer
2016-03-01 11:23:03 -05:00
2016-07-15 13:26:54 -04:00
#
# Prefixes
#
2016-08-22 13:20:30 -04:00
class PrefixListView(CustomFieldModelAPIView, generics.ListAPIView):
2016-03-01 11:23:03 -05:00
"""
List prefixes (filterable)
"""
2016-08-22 13:20:30 -04:00
queryset = Prefix.objects.select_related('site', 'vrf__tenant', 'tenant', 'vlan', 'role')\
2016-08-22 15:16:49 -04:00
.prefetch_related('custom_field_values__field')
2016-05-18 16:20:30 -04:00
serializer_class = serializers.PrefixSerializer
2016-07-15 13:26:54 -04:00
filter_class = filters.PrefixFilter
2016-03-01 11:23:03 -05:00
2016-08-22 13:20:30 -04:00
class PrefixDetailView(CustomFieldModelAPIView, generics.RetrieveAPIView):
2016-03-01 11:23:03 -05:00
"""
Retrieve a single prefix
"""
2016-08-22 13:20:30 -04:00
queryset = Prefix.objects.select_related('site', 'vrf__tenant', 'tenant', 'vlan', 'role')\
2016-08-22 15:16:49 -04:00
.prefetch_related('custom_field_values__field')
2016-05-18 16:20:30 -04:00
serializer_class = serializers.PrefixSerializer
2016-03-01 11:23:03 -05:00
2016-07-15 13:26:54 -04:00
#
# IP addresses
#
2016-08-22 13:20:30 -04:00
class IPAddressListView(CustomFieldModelAPIView, generics.ListAPIView):
2016-03-01 11:23:03 -05:00
"""
List IP addresses (filterable)
"""
queryset = IPAddress.objects.select_related('vrf__tenant', 'tenant', 'interface__device', 'nat_inside')\
2016-08-22 15:16:49 -04:00
.prefetch_related('nat_outside', 'custom_field_values__field')
2016-05-18 16:20:30 -04:00
serializer_class = serializers.IPAddressSerializer
2016-07-15 13:26:54 -04:00
filter_class = filters.IPAddressFilter
2016-03-01 11:23:03 -05:00
2016-08-22 13:20:30 -04:00
class IPAddressDetailView(CustomFieldModelAPIView, generics.RetrieveAPIView):
2016-03-01 11:23:03 -05:00
"""
Retrieve a single IP address
"""
queryset = IPAddress.objects.select_related('vrf__tenant', 'tenant', 'interface__device', 'nat_inside')\
2016-08-22 15:16:49 -04:00
.prefetch_related('nat_outside', 'custom_field_values__field')
2016-05-18 16:20:30 -04:00
serializer_class = serializers.IPAddressSerializer
2016-03-01 11:23:03 -05:00
2016-07-15 13:26:54 -04:00
#
# VLAN groups
#
class VLANGroupListView(generics.ListAPIView):
"""
List all VLAN groups
"""
2016-07-27 14:40:19 -04:00
queryset = VLANGroup.objects.select_related('site')
2016-07-15 13:26:54 -04:00
serializer_class = serializers.VLANGroupSerializer
filter_class = filters.VLANGroupFilter
class VLANGroupDetailView(generics.RetrieveAPIView):
"""
Retrieve a single VLAN group
"""
2016-07-27 14:40:19 -04:00
queryset = VLANGroup.objects.select_related('site')
2016-07-15 13:26:54 -04:00
serializer_class = serializers.VLANGroupSerializer
#
# VLANs
#
2016-08-22 13:20:30 -04:00
class VLANListView(CustomFieldModelAPIView, generics.ListAPIView):
2016-03-01 11:23:03 -05:00
"""
List VLANs (filterable)
"""
2016-08-22 15:16:49 -04:00
queryset = VLAN.objects.select_related('site', 'group', 'tenant', 'role')\
.prefetch_related('custom_field_values__field')
2016-05-18 16:20:30 -04:00
serializer_class = serializers.VLANSerializer
2016-07-15 13:26:54 -04:00
filter_class = filters.VLANFilter
2016-03-01 11:23:03 -05:00
2016-08-22 13:20:30 -04:00
class VLANDetailView(CustomFieldModelAPIView, generics.RetrieveAPIView):
2016-03-01 11:23:03 -05:00
"""
Retrieve a single VLAN
"""
2016-08-22 15:16:49 -04:00
queryset = VLAN.objects.select_related('site', 'group', 'tenant', 'role')\
.prefetch_related('custom_field_values__field')
2016-05-18 16:20:30 -04:00
serializer_class = serializers.VLANSerializer
#
# Services
#
class ServiceListView(generics.ListAPIView):
"""
List services (filterable)
"""
queryset = Service.objects.select_related('device').prefetch_related('ipaddresses')
serializer_class = serializers.ServiceSerializer
filter_class = filters.ServiceFilter
class ServiceDetailView(generics.RetrieveAPIView):
"""
Retrieve a single service
"""
queryset = Service.objects.select_related('device').prefetch_related('ipaddresses')
serializer_class = serializers.ServiceSerializer