2018-11-12 11:36:44 -05:00
|
|
|
from rest_framework import serializers
|
|
|
|
|
2020-06-05 15:48:36 -04:00
|
|
|
from ipam import models
|
2020-10-13 15:54:23 -04:00
|
|
|
from netbox.api import WritableNestedSerializer
|
2018-11-12 11:36:44 -05:00
|
|
|
|
|
|
|
__all__ = [
|
|
|
|
'NestedAggregateSerializer',
|
|
|
|
'NestedIPAddressSerializer',
|
|
|
|
'NestedPrefixSerializer',
|
|
|
|
'NestedRIRSerializer',
|
|
|
|
'NestedRoleSerializer',
|
2020-09-24 11:25:52 -04:00
|
|
|
'NestedRouteTargetSerializer',
|
2020-06-05 15:48:36 -04:00
|
|
|
'NestedServiceSerializer',
|
2018-11-12 11:36:44 -05:00
|
|
|
'NestedVLANGroupSerializer',
|
|
|
|
'NestedVLANSerializer',
|
|
|
|
'NestedVRFSerializer',
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
# VRFs
|
|
|
|
#
|
|
|
|
|
|
|
|
class NestedVRFSerializer(WritableNestedSerializer):
|
|
|
|
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:vrf-detail')
|
2019-04-12 17:07:56 -04:00
|
|
|
prefix_count = serializers.IntegerField(read_only=True)
|
2018-11-12 11:36:44 -05:00
|
|
|
|
|
|
|
class Meta:
|
2020-06-05 15:48:36 -04:00
|
|
|
model = models.VRF
|
2020-08-13 09:44:01 -04:00
|
|
|
fields = ['id', 'url', 'name', 'rd', 'display_name', 'prefix_count']
|
2018-11-12 11:36:44 -05:00
|
|
|
|
|
|
|
|
2020-09-24 11:25:52 -04:00
|
|
|
#
|
|
|
|
# Route targets
|
|
|
|
#
|
|
|
|
|
|
|
|
class NestedRouteTargetSerializer(WritableNestedSerializer):
|
|
|
|
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:routetarget-detail')
|
|
|
|
|
|
|
|
class Meta:
|
|
|
|
model = models.RouteTarget
|
|
|
|
fields = ['id', 'url', 'name']
|
|
|
|
|
|
|
|
|
2018-11-12 11:36:44 -05:00
|
|
|
#
|
|
|
|
# RIRs/aggregates
|
|
|
|
#
|
|
|
|
|
|
|
|
class NestedRIRSerializer(WritableNestedSerializer):
|
|
|
|
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:rir-detail')
|
2019-04-12 17:07:56 -04:00
|
|
|
aggregate_count = serializers.IntegerField(read_only=True)
|
2018-11-12 11:36:44 -05:00
|
|
|
|
|
|
|
class Meta:
|
2020-06-05 15:48:36 -04:00
|
|
|
model = models.RIR
|
2019-04-12 17:07:56 -04:00
|
|
|
fields = ['id', 'url', 'name', 'slug', 'aggregate_count']
|
2018-11-12 11:36:44 -05:00
|
|
|
|
|
|
|
|
|
|
|
class NestedAggregateSerializer(WritableNestedSerializer):
|
|
|
|
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:aggregate-detail')
|
2020-07-13 14:50:58 -04:00
|
|
|
family = serializers.IntegerField(read_only=True)
|
2018-11-12 11:36:44 -05:00
|
|
|
|
|
|
|
class Meta:
|
2020-06-05 15:48:36 -04:00
|
|
|
model = models.Aggregate
|
2018-11-12 11:36:44 -05:00
|
|
|
fields = ['id', 'url', 'family', 'prefix']
|
|
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
# VLANs
|
|
|
|
#
|
|
|
|
|
|
|
|
class NestedRoleSerializer(WritableNestedSerializer):
|
|
|
|
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:role-detail')
|
2019-04-12 17:07:56 -04:00
|
|
|
prefix_count = serializers.IntegerField(read_only=True)
|
|
|
|
vlan_count = serializers.IntegerField(read_only=True)
|
2018-11-12 11:36:44 -05:00
|
|
|
|
|
|
|
class Meta:
|
2020-06-05 15:48:36 -04:00
|
|
|
model = models.Role
|
2019-04-12 17:07:56 -04:00
|
|
|
fields = ['id', 'url', 'name', 'slug', 'prefix_count', 'vlan_count']
|
2018-11-12 11:36:44 -05:00
|
|
|
|
|
|
|
|
|
|
|
class NestedVLANGroupSerializer(WritableNestedSerializer):
|
|
|
|
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:vlangroup-detail')
|
2019-04-12 17:07:56 -04:00
|
|
|
vlan_count = serializers.IntegerField(read_only=True)
|
2018-11-12 11:36:44 -05:00
|
|
|
|
|
|
|
class Meta:
|
2020-06-05 15:48:36 -04:00
|
|
|
model = models.VLANGroup
|
2019-04-12 17:07:56 -04:00
|
|
|
fields = ['id', 'url', 'name', 'slug', 'vlan_count']
|
2018-11-12 11:36:44 -05:00
|
|
|
|
|
|
|
|
|
|
|
class NestedVLANSerializer(WritableNestedSerializer):
|
|
|
|
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:vlan-detail')
|
|
|
|
|
|
|
|
class Meta:
|
2020-06-05 15:48:36 -04:00
|
|
|
model = models.VLAN
|
2018-11-12 11:36:44 -05:00
|
|
|
fields = ['id', 'url', 'vid', 'name', 'display_name']
|
|
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
# Prefixes
|
|
|
|
#
|
|
|
|
|
|
|
|
class NestedPrefixSerializer(WritableNestedSerializer):
|
|
|
|
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:prefix-detail')
|
2020-07-13 14:50:58 -04:00
|
|
|
family = serializers.IntegerField(read_only=True)
|
2018-11-12 11:36:44 -05:00
|
|
|
|
|
|
|
class Meta:
|
2020-06-05 15:48:36 -04:00
|
|
|
model = models.Prefix
|
2018-11-12 11:36:44 -05:00
|
|
|
fields = ['id', 'url', 'family', 'prefix']
|
|
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
# IP addresses
|
|
|
|
#
|
|
|
|
|
|
|
|
class NestedIPAddressSerializer(WritableNestedSerializer):
|
|
|
|
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:ipaddress-detail')
|
2020-07-13 14:50:58 -04:00
|
|
|
family = serializers.IntegerField(read_only=True)
|
2018-11-12 11:36:44 -05:00
|
|
|
|
|
|
|
class Meta:
|
2020-06-05 15:48:36 -04:00
|
|
|
model = models.IPAddress
|
2018-11-12 11:36:44 -05:00
|
|
|
fields = ['id', 'url', 'family', 'address']
|
2020-06-05 15:48:36 -04:00
|
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
# Services
|
|
|
|
#
|
|
|
|
|
|
|
|
class NestedServiceSerializer(WritableNestedSerializer):
|
|
|
|
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:service-detail')
|
|
|
|
|
|
|
|
class Meta:
|
|
|
|
model = models.Service
|
2020-09-21 13:21:41 -04:00
|
|
|
fields = ['id', 'url', 'name', 'protocol', 'ports']
|