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

247 lines
6.5 KiB
Python
Raw Normal View History

from drf_spectacular.utils import extend_schema_serializer
from rest_framework import serializers
from ipam import models
2022-06-27 23:24:50 -05:00
from ipam.models.l2vpn import L2VPNTermination, L2VPN
2022-07-13 16:18:55 -04:00
from netbox.api.serializers import WritableNestedSerializer
__all__ = [
'NestedAggregateSerializer',
2021-10-24 23:42:47 -05:00
'NestedASNSerializer',
'NestedASNRangeSerializer',
2021-11-01 16:14:44 -04:00
'NestedFHRPGroupSerializer',
'NestedFHRPGroupAssignmentSerializer',
'NestedIPAddressSerializer',
2021-07-16 09:15:19 -04:00
'NestedIPRangeSerializer',
2022-06-29 16:01:20 -05:00
'NestedL2VPNSerializer',
'NestedL2VPNTerminationSerializer',
'NestedPrefixSerializer',
'NestedRIRSerializer',
'NestedRoleSerializer',
2020-09-24 11:25:52 -04:00
'NestedRouteTargetSerializer',
'NestedServiceSerializer',
2022-01-12 16:42:28 -05:00
'NestedServiceTemplateSerializer',
'NestedVLANGroupSerializer',
'NestedVLANSerializer',
'NestedVRFSerializer',
]
#
# ASN ranges
#
class NestedASNRangeSerializer(WritableNestedSerializer):
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:asnrange-detail')
class Meta:
model = models.ASNRange
fields = ['id', 'url', 'display', 'name']
2021-10-24 23:42:47 -05:00
#
# ASNs
#
class NestedASNSerializer(WritableNestedSerializer):
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:asn-detail')
class Meta:
model = models.ASN
fields = ['id', 'url', 'display', 'asn']
#
# VRFs
#
@extend_schema_serializer(
exclude_fields=('prefix_count',),
)
class NestedVRFSerializer(WritableNestedSerializer):
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:vrf-detail')
prefix_count = serializers.IntegerField(read_only=True)
class Meta:
model = models.VRF
fields = ['id', 'url', 'display', 'name', 'rd', 'prefix_count']
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', 'display', 'name']
2020-09-24 11:25:52 -04:00
#
# RIRs/aggregates
#
@extend_schema_serializer(
exclude_fields=('aggregate_count',),
)
class NestedRIRSerializer(WritableNestedSerializer):
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:rir-detail')
aggregate_count = serializers.IntegerField(read_only=True)
class Meta:
model = models.RIR
fields = ['id', 'url', 'display', 'name', 'slug', 'aggregate_count']
class NestedAggregateSerializer(WritableNestedSerializer):
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:aggregate-detail')
family = serializers.IntegerField(read_only=True)
class Meta:
model = models.Aggregate
fields = ['id', 'url', 'display', 'family', 'prefix']
2021-11-01 16:14:44 -04:00
#
# FHRP groups
#
class NestedFHRPGroupSerializer(WritableNestedSerializer):
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:fhrpgroup-detail')
class Meta:
model = models.FHRPGroup
fields = ['id', 'url', 'display', 'protocol', 'group_id']
class NestedFHRPGroupAssignmentSerializer(WritableNestedSerializer):
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:fhrpgroupassignment-detail')
class Meta:
model = models.FHRPGroupAssignment
fields = ['id', 'url', 'display', 'interface_type', 'interface_id', 'group_id', 'priority']
#
# VLANs
#
@extend_schema_serializer(
exclude_fields=('prefix_count', 'vlan_count'),
)
class NestedRoleSerializer(WritableNestedSerializer):
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:role-detail')
prefix_count = serializers.IntegerField(read_only=True)
vlan_count = serializers.IntegerField(read_only=True)
class Meta:
model = models.Role
fields = ['id', 'url', 'display', 'name', 'slug', 'prefix_count', 'vlan_count']
@extend_schema_serializer(
exclude_fields=('vlan_count',),
)
class NestedVLANGroupSerializer(WritableNestedSerializer):
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:vlangroup-detail')
vlan_count = serializers.IntegerField(read_only=True)
class Meta:
model = models.VLANGroup
fields = ['id', 'url', 'display', 'name', 'slug', 'vlan_count']
class NestedVLANSerializer(WritableNestedSerializer):
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:vlan-detail')
class Meta:
model = models.VLAN
fields = ['id', 'url', 'display', 'vid', 'name']
#
# Prefixes
#
class NestedPrefixSerializer(WritableNestedSerializer):
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:prefix-detail')
family = serializers.IntegerField(read_only=True)
_depth = serializers.IntegerField(read_only=True)
class Meta:
model = models.Prefix
fields = ['id', 'url', 'display', 'family', 'prefix', '_depth']
2021-07-16 09:15:19 -04:00
#
# IP ranges
#
class NestedIPRangeSerializer(WritableNestedSerializer):
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:iprange-detail')
family = serializers.IntegerField(read_only=True)
class Meta:
model = models.IPRange
fields = ['id', 'url', 'display', 'family', 'start_address', 'end_address']
#
# IP addresses
#
class NestedIPAddressSerializer(WritableNestedSerializer):
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:ipaddress-detail')
family = serializers.IntegerField(read_only=True)
class Meta:
model = models.IPAddress
fields = ['id', 'url', 'display', 'family', 'address']
#
# Services
#
2022-01-12 16:42:28 -05:00
class NestedServiceTemplateSerializer(WritableNestedSerializer):
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:servicetemplate-detail')
class Meta:
model = models.ServiceTemplate
fields = ['id', 'url', 'display', 'name', 'protocol', 'ports']
class NestedServiceSerializer(WritableNestedSerializer):
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:service-detail')
class Meta:
model = models.Service
fields = ['id', 'url', 'display', 'name', 'protocol', 'ports']
2022-06-27 23:24:50 -05:00
#
# L2VPN
2022-06-27 23:24:50 -05:00
#
class NestedL2VPNSerializer(WritableNestedSerializer):
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:l2vpn-detail')
class Meta:
model = L2VPN
fields = [
2022-06-29 16:01:20 -05:00
'id', 'url', 'display', 'identifier', 'name', 'slug', 'type'
2022-06-27 23:24:50 -05:00
]
class NestedL2VPNTerminationSerializer(WritableNestedSerializer):
2022-06-29 16:01:20 -05:00
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:l2vpntermination-detail')
2022-06-27 23:24:50 -05:00
l2vpn = NestedL2VPNSerializer()
class Meta:
model = L2VPNTermination
fields = [
2022-06-29 16:01:20 -05:00
'id', 'url', 'display', 'l2vpn'
2022-06-27 23:24:50 -05:00
]