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

200 lines
4.8 KiB
Python
Raw Normal View History

2016-03-01 11:23:03 -05:00
from rest_framework import serializers
from dcim.api.serializers import NestedDeviceSerializer, ChildInterfaceSerializer, NestedSiteSerializer
2016-08-22 15:16:49 -04:00
from extras.api.serializers import CustomFieldSerializer
from ipam.models import Aggregate, IPAddress, Prefix, RIR, Role, Service, VLAN, VLANGroup, VRF
from tenancy.api.serializers import NestedTenantSerializer
2017-01-27 14:36:13 -05:00
from utilities.api import WritableSerializerMixin
2016-03-01 11:23:03 -05:00
#
# VRFs
#
2016-08-22 15:16:49 -04:00
class VRFSerializer(CustomFieldSerializer, serializers.ModelSerializer):
tenant = NestedTenantSerializer()
2016-03-01 11:23:03 -05:00
class Meta:
model = VRF
2016-08-22 13:20:30 -04:00
fields = ['id', 'name', 'rd', 'tenant', 'enforce_unique', 'description', 'custom_fields']
2016-03-01 11:23:03 -05:00
class NestedVRFSerializer(serializers.HyperlinkedModelSerializer):
2016-03-01 11:23:03 -05:00
class Meta:
model = VRF
fields = ['id', 'url', 'name', 'rd']
2016-03-01 11:23:03 -05:00
#
# Roles
#
class RoleSerializer(serializers.ModelSerializer):
class Meta:
model = Role
fields = ['id', 'name', 'slug', 'weight']
class NestedRoleSerializer(serializers.HyperlinkedModelSerializer):
2016-03-01 11:23:03 -05:00
class Meta:
model = Role
fields = ['id', 'url', 'name', 'slug']
2016-03-01 11:23:03 -05:00
#
# RIRs
#
class RIRSerializer(serializers.ModelSerializer):
class Meta:
model = RIR
fields = ['id', 'name', 'slug', 'is_private']
2016-03-01 11:23:03 -05:00
class NestedRIRSerializer(serializers.HyperlinkedModelSerializer):
2016-03-01 11:23:03 -05:00
class Meta:
model = RIR
fields = ['id', 'url', 'name', 'slug']
2016-03-01 11:23:03 -05:00
#
# Aggregates
#
2016-08-22 15:16:49 -04:00
class AggregateSerializer(CustomFieldSerializer, serializers.ModelSerializer):
rir = NestedRIRSerializer()
2016-03-01 11:23:03 -05:00
class Meta:
model = Aggregate
2016-08-22 13:20:30 -04:00
fields = ['id', 'family', 'prefix', 'rir', 'date_added', 'description', 'custom_fields']
2016-03-01 11:23:03 -05:00
class NestedAggregateSerializer(serializers.HyperlinkedModelSerializer):
2016-03-01 11:23:03 -05:00
class Meta(AggregateSerializer.Meta):
model = Aggregate
fields = ['id', 'url', 'family', 'prefix']
2016-03-01 11:23:03 -05:00
2016-07-15 13:26:54 -04:00
#
# VLAN groups
#
2017-01-27 14:36:13 -05:00
class VLANGroupSerializer(WritableSerializerMixin, serializers.ModelSerializer):
site = NestedSiteSerializer()
2016-07-15 13:26:54 -04:00
class Meta:
model = VLANGroup
fields = ['id', 'name', 'slug', 'site']
class NestedVLANGroupSerializer(serializers.HyperlinkedModelSerializer):
2016-07-15 13:26:54 -04:00
class Meta:
model = VLANGroup
fields = ['id', 'url', 'name', 'slug']
2016-07-15 13:26:54 -04:00
2016-03-01 11:23:03 -05:00
#
# VLANs
#
2016-08-22 15:16:49 -04:00
class VLANSerializer(CustomFieldSerializer, serializers.ModelSerializer):
site = NestedSiteSerializer()
group = NestedVLANGroupSerializer()
tenant = NestedTenantSerializer()
role = NestedRoleSerializer()
2016-03-01 11:23:03 -05:00
class Meta:
model = VLAN
fields = [
'id', 'site', 'group', 'vid', 'name', 'tenant', 'status', 'role', 'description', 'display_name',
'custom_fields',
]
2016-03-01 11:23:03 -05:00
class NestedVLANSerializer(serializers.HyperlinkedModelSerializer):
2016-03-01 11:23:03 -05:00
class Meta:
model = VLAN
fields = ['id', 'url', 'vid', 'name', 'display_name']
2016-03-01 11:23:03 -05:00
#
# Prefixes
#
2016-08-22 15:16:49 -04:00
class PrefixSerializer(CustomFieldSerializer, serializers.ModelSerializer):
site = NestedSiteSerializer()
vrf = NestedVRFSerializer()
tenant = NestedTenantSerializer()
vlan = NestedVLANSerializer()
role = NestedRoleSerializer()
2016-03-01 11:23:03 -05:00
class Meta:
model = Prefix
fields = [
'id', 'family', 'prefix', 'site', 'vrf', 'tenant', 'vlan', 'status', 'role', 'is_pool', 'description',
'custom_fields',
]
2016-03-01 11:23:03 -05:00
class NestedPrefixSerializer(serializers.HyperlinkedModelSerializer):
2016-03-01 11:23:03 -05:00
class Meta:
model = Prefix
fields = ['id', 'url', 'family', 'prefix']
2016-03-01 11:23:03 -05:00
#
# IP addresses
#
2016-08-22 15:16:49 -04:00
class IPAddressSerializer(CustomFieldSerializer, serializers.ModelSerializer):
vrf = NestedVRFSerializer()
tenant = NestedTenantSerializer()
interface = ChildInterfaceSerializer()
2016-03-01 11:23:03 -05:00
class Meta:
model = IPAddress
fields = [
'id', 'family', 'address', 'vrf', 'tenant', 'status', 'interface', 'description', 'nat_inside',
'nat_outside', 'custom_fields',
]
2016-03-01 11:23:03 -05:00
class NestedIPAddressSerializer(serializers.HyperlinkedModelSerializer):
2016-03-01 11:23:03 -05:00
class Meta:
model = IPAddress
fields = ['id', 'url', 'family', 'address']
2016-03-01 11:23:03 -05:00
IPAddressSerializer._declared_fields['nat_inside'] = NestedIPAddressSerializer()
IPAddressSerializer._declared_fields['nat_outside'] = NestedIPAddressSerializer()
#
# Services
#
class ServiceSerializer(serializers.ModelSerializer):
device = NestedDeviceSerializer()
ipaddresses = NestedIPAddressSerializer(many=True)
class Meta:
model = Service
fields = ['id', 'device', 'name', 'port', 'protocol', 'ipaddresses', 'description']
2017-01-27 16:19:38 -05:00
class ChildServiceSerializer(serializers.HyperlinkedModelSerializer):
ipaddresses = NestedIPAddressSerializer(many=True)
class Meta:
model = Service
fields = ['id', 'url', 'name', 'port', 'protocol', 'ipaddresses', 'description']