2020-08-13 12:45:38 -04:00
|
|
|
from rest_framework.routers import APIRootView
|
2017-01-26 17:18:41 -05:00
|
|
|
|
2021-04-29 16:38:56 -04:00
|
|
|
from circuits import filtersets
|
2021-03-18 11:10:48 -04:00
|
|
|
from circuits.models import *
|
2021-04-26 16:49:52 -04:00
|
|
|
from dcim.api.views import PassThroughPortMixin
|
2022-03-09 11:09:06 -05:00
|
|
|
from netbox.api.viewsets import NetBoxModelViewSet
|
2020-12-17 14:47:49 -05:00
|
|
|
from utilities.utils import count_related
|
2016-05-18 15:17:58 -04:00
|
|
|
from . import serializers
|
2016-03-01 11:23:03 -05:00
|
|
|
|
|
|
|
|
2020-08-13 12:45:38 -04:00
|
|
|
class CircuitsRootView(APIRootView):
|
|
|
|
"""
|
|
|
|
Circuits API root view
|
|
|
|
"""
|
|
|
|
def get_view_name(self):
|
|
|
|
return 'Circuits'
|
|
|
|
|
|
|
|
|
2017-01-24 17:12:16 -05:00
|
|
|
#
|
|
|
|
# Providers
|
|
|
|
#
|
2016-03-01 11:23:03 -05:00
|
|
|
|
2022-03-09 11:44:55 -05:00
|
|
|
class ProviderViewSet(NetBoxModelViewSet):
|
2022-03-30 17:17:36 -04:00
|
|
|
queryset = Provider.objects.prefetch_related('asns', 'tags').annotate(
|
2020-12-17 14:47:49 -05:00
|
|
|
circuit_count=count_related(Circuit, 'provider')
|
2020-11-25 15:49:18 -05:00
|
|
|
)
|
2016-05-18 15:17:58 -04:00
|
|
|
serializer_class = serializers.ProviderSerializer
|
2021-04-29 16:38:56 -04:00
|
|
|
filterset_class = filtersets.ProviderFilterSet
|
2016-03-01 11:23:03 -05:00
|
|
|
|
|
|
|
|
2017-01-24 17:12:16 -05:00
|
|
|
#
|
|
|
|
# Circuit Types
|
|
|
|
#
|
2016-03-01 11:23:03 -05:00
|
|
|
|
2022-03-09 11:44:55 -05:00
|
|
|
class CircuitTypeViewSet(NetBoxModelViewSet):
|
2021-10-21 10:51:02 -04:00
|
|
|
queryset = CircuitType.objects.prefetch_related('tags').annotate(
|
2020-12-17 14:47:49 -05:00
|
|
|
circuit_count=count_related(Circuit, 'type')
|
2020-11-25 15:49:18 -05:00
|
|
|
)
|
2016-05-18 15:17:58 -04:00
|
|
|
serializer_class = serializers.CircuitTypeSerializer
|
2021-04-29 16:38:56 -04:00
|
|
|
filterset_class = filtersets.CircuitTypeFilterSet
|
2016-03-01 11:23:03 -05:00
|
|
|
|
|
|
|
|
2017-01-24 17:12:16 -05:00
|
|
|
#
|
|
|
|
# Circuits
|
|
|
|
#
|
2016-03-01 11:23:03 -05:00
|
|
|
|
2022-03-09 11:44:55 -05:00
|
|
|
class CircuitViewSet(NetBoxModelViewSet):
|
2020-01-27 21:53:10 +00:00
|
|
|
queryset = Circuit.objects.prefetch_related(
|
2021-03-18 13:54:05 -04:00
|
|
|
'type', 'tenant', 'provider', 'termination_a', 'termination_z'
|
2020-01-27 21:53:10 +00:00
|
|
|
).prefetch_related('tags')
|
2017-01-27 14:36:13 -05:00
|
|
|
serializer_class = serializers.CircuitSerializer
|
2021-04-29 16:38:56 -04:00
|
|
|
filterset_class = filtersets.CircuitFilterSet
|
2017-01-26 15:33:41 -05:00
|
|
|
|
2017-01-26 17:18:41 -05:00
|
|
|
|
|
|
|
#
|
|
|
|
# Circuit Terminations
|
|
|
|
#
|
|
|
|
|
2022-03-09 11:09:06 -05:00
|
|
|
class CircuitTerminationViewSet(PassThroughPortMixin, NetBoxModelViewSet):
|
2019-08-19 01:53:39 -04:00
|
|
|
queryset = CircuitTermination.objects.prefetch_related(
|
2021-04-01 14:31:10 -04:00
|
|
|
'circuit', 'site', 'provider_network', 'cable'
|
2018-11-05 13:53:22 -05:00
|
|
|
)
|
2017-01-26 17:18:41 -05:00
|
|
|
serializer_class = serializers.CircuitTerminationSerializer
|
2021-04-29 16:38:56 -04:00
|
|
|
filterset_class = filtersets.CircuitTerminationFilterSet
|
2020-12-29 11:41:44 -05:00
|
|
|
brief_prefetch_fields = ['circuit']
|
2021-03-18 11:10:48 -04:00
|
|
|
|
|
|
|
|
|
|
|
#
|
2021-04-01 10:21:41 -04:00
|
|
|
# Provider networks
|
2021-03-18 11:10:48 -04:00
|
|
|
#
|
|
|
|
|
2022-03-09 11:44:55 -05:00
|
|
|
class ProviderNetworkViewSet(NetBoxModelViewSet):
|
2021-04-01 10:21:41 -04:00
|
|
|
queryset = ProviderNetwork.objects.prefetch_related('tags')
|
|
|
|
serializer_class = serializers.ProviderNetworkSerializer
|
2021-04-29 16:38:56 -04:00
|
|
|
filterset_class = filtersets.ProviderNetworkFilterSet
|