From b5174f8d435f982532238e92efe7ad6bf8b9eb63 Mon Sep 17 00:00:00 2001 From: Iva Kaneva Date: Sat, 26 Nov 2016 01:17:29 +0200 Subject: [PATCH] Move ServicePort api serialization from `ipam` to `dcim` --- netbox/dcim/api/serializers.py | 31 ++++++++++++++++++++++++++++++- netbox/dcim/api/urls.py | 4 ++++ netbox/dcim/api/views.py | 21 +++++++++++++++++++++ netbox/ipam/api/serializers.py | 28 +--------------------------- netbox/ipam/api/urls.py | 4 ---- netbox/ipam/api/views.py | 22 +--------------------- 6 files changed, 57 insertions(+), 53 deletions(-) diff --git a/netbox/dcim/api/serializers.py b/netbox/dcim/api/serializers.py index ef7a4be60..1d15cf6f3 100644 --- a/netbox/dcim/api/serializers.py +++ b/netbox/dcim/api/serializers.py @@ -1,6 +1,6 @@ from rest_framework import serializers -from ipam.models import IPAddress +from ipam.models import IPAddress, ServicePort from dcim.models import ( ConsolePort, ConsolePortTemplate, ConsoleServerPort, ConsoleServerPortTemplate, Device, DeviceBay, DeviceType, DeviceRole, Interface, InterfaceConnection, InterfaceTemplate, Manufacturer, Module, Platform, PowerOutlet, @@ -442,3 +442,32 @@ class InterfaceConnectionSerializer(serializers.ModelSerializer): class Meta: model = InterfaceConnection fields = ['id', 'interface_a', 'interface_b', 'connection_status'] + + +# +# Service Ports +# + +class ServicePortSerializer(serializers.ModelSerializer): + device = DeviceNestedSerializer() + ip_address = DeviceIPAddressNestedSerializer() + + class Meta: + model = ServicePort + fields = ['id', 'device', 'ip_address', 'port', 'protocol', 'name', 'description'] + + +class ServicePortNestedSerializer(ServicePortSerializer): + device = DeviceNestedSerializer() + ip_address = DeviceIPAddressNestedSerializer() + + class Meta(ServicePortSerializer.Meta): + fields = ['id', 'device', 'ip_address', 'port', 'protocol'] + + +class ServicePortDetailSerializer(ServicePortSerializer): + device = DeviceNestedSerializer() + ip_address = DeviceIPAddressNestedSerializer() + + class Meta(ServicePortSerializer.Meta): + fields = ['id', 'device', 'ip_address', 'port', 'protocol', 'name', 'description'] diff --git a/netbox/dcim/api/urls.py b/netbox/dcim/api/urls.py index 23787f4b4..e8a4f4508 100644 --- a/netbox/dcim/api/urls.py +++ b/netbox/dcim/api/urls.py @@ -69,6 +69,10 @@ urlpatterns = [ url(r'^interface-connections/$', InterfaceConnectionListView.as_view(), name='interfaceconnection_list'), url(r'^interface-connections/(?P\d+)/$', InterfaceConnectionView.as_view(), name='interfaceconnection_detail'), + # Service ports + url(r'^service-ports/$', ServicePortListView.as_view(), name='serviceport_list'), + url(r'^service-ports/(?P\d+)/$', ServicePortDetailView.as_view(), name='serviceport_detail'), + # Miscellaneous url(r'^related-connections/$', RelatedConnectionsView.as_view(), name='related_connections'), url(r'^topology-maps/(?P[\w-]+)/$', TopologyMapView.as_view(), name='topology_map'), diff --git a/netbox/dcim/api/views.py b/netbox/dcim/api/views.py index 01a8c6f61..6bafa0d70 100644 --- a/netbox/dcim/api/views.py +++ b/netbox/dcim/api/views.py @@ -16,6 +16,7 @@ from dcim.models import ( from dcim import filters from extras.api.views import CustomFieldModelAPIView from extras.api.renderers import BINDZoneRenderer, FlatJSONRenderer +from ipam.models import ServicePort from utilities.api import ServiceUnavailable from .exceptions import MissingFilterException from . import serializers @@ -422,6 +423,26 @@ class LLDPNeighborsView(APIView): return Response(lldp_neighbors) +# +# Service Port +# + +class ServicePortListView(generics.ListAPIView): + """ + List IP addresses (filterable) + """ + queryset = ServicePort.objects.select_related('device', 'ip_address', 'port', 'protocol', 'name', 'description') + serializer_class = serializers.ServicePortSerializer + + +class ServicePortDetailView(generics.RetrieveAPIView): + """ + Retrieve a single IP address + """ + queryset = ServicePort.objects.select_related('device', 'ip_address', 'port', 'protocol', 'name', 'description') + serializer_class = serializers.ServicePortSerializer + + # # Miscellaneous # diff --git a/netbox/ipam/api/serializers.py b/netbox/ipam/api/serializers.py index d8b783bdc..f7cf20636 100644 --- a/netbox/ipam/api/serializers.py +++ b/netbox/ipam/api/serializers.py @@ -2,7 +2,7 @@ from rest_framework import serializers from dcim.api.serializers import SiteNestedSerializer, InterfaceNestedSerializer from extras.api.serializers import CustomFieldSerializer -from ipam.models import VRF, Role, RIR, Aggregate, Prefix, IPAddress, VLAN, VLANGroup, ServicePort +from ipam.models import VRF, Role, RIR, Aggregate, Prefix, IPAddress, VLAN, VLANGroup from tenancy.api.serializers import TenantNestedSerializer @@ -170,29 +170,3 @@ class IPAddressNestedSerializer(IPAddressSerializer): IPAddressSerializer._declared_fields['nat_inside'] = IPAddressNestedSerializer() IPAddressSerializer._declared_fields['nat_outside'] = IPAddressNestedSerializer() - - -# -# Service Ports -# - -class ServicePortSerializer(serializers.ModelSerializer): - ip_address = IPAddressNestedSerializer() - - class Meta: - model = ServicePort - fields = ['id', 'ip_address', 'port', 'protocol', 'name', 'description'] - - -class ServicePortNestedSerializer(ServicePortSerializer): - ip_address = IPAddressNestedSerializer() - - class Meta(ServicePortSerializer.Meta): - fields = ['id', 'ip_address', 'port', 'protocol'] - - -class ServicePortDetailSerializer(ServicePortSerializer): - ip_address = IPAddressNestedSerializer() - - class Meta(ServicePortSerializer.Meta): - fields = ['id', 'ip_address', 'port', 'protocol', 'name', 'description'] diff --git a/netbox/ipam/api/urls.py b/netbox/ipam/api/urls.py index f2a2db21f..0c0ac9495 100644 --- a/netbox/ipam/api/urls.py +++ b/netbox/ipam/api/urls.py @@ -29,10 +29,6 @@ urlpatterns = [ url(r'^ip-addresses/$', IPAddressListView.as_view(), name='ipaddress_list'), url(r'^ip-addresses/(?P\d+)/$', IPAddressDetailView.as_view(), name='ipaddress_detail'), - # Service ports - url(r'^service-ports/$', ServicePortListView.as_view(), name='serviceport_list'), - url(r'^service-ports/(?P\d+)/$', ServicePortDetailView.as_view(), name='serviceport_detail'), - # VLAN groups url(r'^vlan-groups/$', VLANGroupListView.as_view(), name='vlangroup_list'), url(r'^vlan-groups/(?P\d+)/$', VLANGroupDetailView.as_view(), name='vlangroup_detail'), diff --git a/netbox/ipam/api/views.py b/netbox/ipam/api/views.py index 72ba88718..21ab9335c 100644 --- a/netbox/ipam/api/views.py +++ b/netbox/ipam/api/views.py @@ -1,6 +1,6 @@ from rest_framework import generics -from ipam.models import VRF, Role, RIR, Aggregate, Prefix, IPAddress, VLAN, VLANGroup, ServicePort +from ipam.models import VRF, Role, RIR, Aggregate, Prefix, IPAddress, VLAN, VLANGroup from ipam import filters from extras.api.views import CustomFieldModelAPIView @@ -135,26 +135,6 @@ class IPAddressDetailView(CustomFieldModelAPIView, generics.RetrieveAPIView): serializer_class = serializers.IPAddressSerializer -# -# Service Port -# - -class ServicePortListView(generics.ListAPIView): - """ - List IP addresses (filterable) - """ - queryset = ServicePort.objects.select_related('device', 'ip_address', 'port', 'protocol', 'name', 'description') - serializer_class = serializers.ServicePortSerializer - - -class ServicePortDetailView(generics.RetrieveAPIView): - """ - Retrieve a single IP address - """ - queryset = ServicePort.objects.select_related('device', 'ip_address', 'port', 'protocol', 'name', 'description') - serializer_class = serializers.ServicePortSerializer - - # # VLAN groups #