Move ServicePort api serialization from ipam to dcim

This commit is contained in:
Iva Kaneva 2016-11-26 01:17:29 +02:00
parent 2563ce624c
commit b5174f8d43
6 changed files with 57 additions and 53 deletions

View File

@ -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']

View File

@ -69,6 +69,10 @@ urlpatterns = [
url(r'^interface-connections/$', InterfaceConnectionListView.as_view(), name='interfaceconnection_list'),
url(r'^interface-connections/(?P<pk>\d+)/$', InterfaceConnectionView.as_view(), name='interfaceconnection_detail'),
# Service ports
url(r'^service-ports/$', ServicePortListView.as_view(), name='serviceport_list'),
url(r'^service-ports/(?P<pk>\d+)/$', ServicePortDetailView.as_view(), name='serviceport_detail'),
# Miscellaneous
url(r'^related-connections/$', RelatedConnectionsView.as_view(), name='related_connections'),
url(r'^topology-maps/(?P<slug>[\w-]+)/$', TopologyMapView.as_view(), name='topology_map'),

View File

@ -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
#

View File

@ -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']

View File

@ -29,10 +29,6 @@ urlpatterns = [
url(r'^ip-addresses/$', IPAddressListView.as_view(), name='ipaddress_list'),
url(r'^ip-addresses/(?P<pk>\d+)/$', IPAddressDetailView.as_view(), name='ipaddress_detail'),
# Service ports
url(r'^service-ports/$', ServicePortListView.as_view(), name='serviceport_list'),
url(r'^service-ports/(?P<pk>\d+)/$', ServicePortDetailView.as_view(), name='serviceport_detail'),
# VLAN groups
url(r'^vlan-groups/$', VLANGroupListView.as_view(), name='vlangroup_list'),
url(r'^vlan-groups/(?P<pk>\d+)/$', VLANGroupDetailView.as_view(), name='vlangroup_detail'),

View File

@ -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
#