Add ServicePort API serializers

This commit is contained in:
Iva Kaneva 2016-10-01 20:48:37 +03:00
parent 81a9e05b62
commit 2a3c096af3
3 changed files with 52 additions and 2 deletions

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
from ipam.models import VRF, Role, RIR, Aggregate, Prefix, IPAddress, VLAN, VLANGroup, ServicePort
from tenancy.api.serializers import TenantNestedSerializer
@ -170,3 +170,29 @@ 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', 'type', 'name', 'description']
class ServicePortNestedSerializer(ServicePortSerializer):
ip_address = IPAddressNestedSerializer()
class Meta(ServicePortSerializer.Meta):
fields = ['id', 'ip_address', 'port', 'type']
class ServicePortDetailSerializer(ServicePortSerializer):
ip_address = IPAddressNestedSerializer()
class Meta(ServicePortSerializer.Meta):
fields = ['id', 'ip_address', 'port', 'type', 'name', 'description']

View File

@ -29,6 +29,10 @@ 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
from ipam.models import VRF, Role, RIR, Aggregate, Prefix, IPAddress, VLAN, VLANGroup, ServicePort
from ipam import filters
from extras.api.views import CustomFieldModelAPIView
@ -135,6 +135,26 @@ class IPAddressDetailView(CustomFieldModelAPIView, generics.RetrieveAPIView):
serializer_class = serializers.IPAddressSerializer
#
# IP addresses
#
class ServicePortListView(generics.ListAPIView):
"""
List IP addresses (filterable)
"""
queryset = ServicePort.objects.select_related('ip_address', 'port', 'type', 'name', 'description')
serializer_class = serializers.ServicePortSerializer
class ServicePortDetailView(generics.RetrieveAPIView):
"""
Retrieve a single IP address
"""
queryset = ServicePort.objects.select_related('ip_address', 'port', 'type', 'name', 'description')
serializer_class = serializers.ServicePortSerializer
#
# VLAN groups
#