123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- 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 tenancy.api.serializers import TenantNestedSerializer
- #
- # VRFs
- #
- class VRFSerializer(CustomFieldSerializer, serializers.ModelSerializer):
- tenant = TenantNestedSerializer()
- class Meta:
- model = VRF
- fields = ['id', 'name', 'rd', 'tenant', 'enforce_unique', 'description', 'custom_fields']
- class VRFNestedSerializer(VRFSerializer):
- class Meta(VRFSerializer.Meta):
- fields = ['id', 'name', 'rd']
- class VRFTenantSerializer(VRFSerializer):
- """
- Include tenant serializer. Useful for determining tenant inheritance for Prefixes and IPAddresses.
- """
- class Meta(VRFSerializer.Meta):
- fields = ['id', 'name', 'rd', 'tenant']
- #
- # Roles
- #
- class RoleSerializer(serializers.ModelSerializer):
- class Meta:
- model = Role
- fields = ['id', 'name', 'slug', 'weight']
- class RoleNestedSerializer(RoleSerializer):
- class Meta(RoleSerializer.Meta):
- fields = ['id', 'name', 'slug']
- #
- # RIRs
- #
- class RIRSerializer(serializers.ModelSerializer):
- class Meta:
- model = RIR
- fields = ['id', 'name', 'slug']
- class RIRNestedSerializer(RIRSerializer):
- class Meta(RIRSerializer.Meta):
- pass
- #
- # Aggregates
- #
- class AggregateSerializer(CustomFieldSerializer, serializers.ModelSerializer):
- rir = RIRNestedSerializer()
- class Meta:
- model = Aggregate
- fields = ['id', 'family', 'prefix', 'rir', 'date_added', 'description', 'custom_fields']
- class AggregateNestedSerializer(AggregateSerializer):
- class Meta(AggregateSerializer.Meta):
- fields = ['id', 'family', 'prefix']
- #
- # VLAN groups
- #
- class VLANGroupSerializer(serializers.ModelSerializer):
- site = SiteNestedSerializer()
- class Meta:
- model = VLANGroup
- fields = ['id', 'name', 'slug', 'site']
- class VLANGroupNestedSerializer(VLANGroupSerializer):
- class Meta(VLANGroupSerializer.Meta):
- fields = ['id', 'name', 'slug']
- #
- # VLANs
- #
- class VLANSerializer(CustomFieldSerializer, serializers.ModelSerializer):
- site = SiteNestedSerializer()
- group = VLANGroupNestedSerializer()
- tenant = TenantNestedSerializer()
- role = RoleNestedSerializer()
- class Meta:
- model = VLAN
- fields = ['id', 'site', 'group', 'vid', 'name', 'tenant', 'status', 'role', 'description', 'display_name',
- 'custom_fields']
- class VLANNestedSerializer(VLANSerializer):
- class Meta(VLANSerializer.Meta):
- fields = ['id', 'vid', 'name', 'display_name']
- #
- # Prefixes
- #
- class PrefixSerializer(CustomFieldSerializer, serializers.ModelSerializer):
- site = SiteNestedSerializer()
- vrf = VRFTenantSerializer()
- tenant = TenantNestedSerializer()
- vlan = VLANNestedSerializer()
- role = RoleNestedSerializer()
- class Meta:
- model = Prefix
- fields = ['id', 'family', 'prefix', 'site', 'vrf', 'tenant', 'vlan', 'status', 'role', 'description',
- 'custom_fields']
- class PrefixNestedSerializer(PrefixSerializer):
- class Meta(PrefixSerializer.Meta):
- fields = ['id', 'family', 'prefix']
- #
- # IP addresses
- #
- class IPAddressSerializer(CustomFieldSerializer, serializers.ModelSerializer):
- vrf = VRFTenantSerializer()
- tenant = TenantNestedSerializer()
- interface = InterfaceNestedSerializer()
- class Meta:
- model = IPAddress
- fields = ['id', 'family', 'address', 'vrf', 'tenant', 'interface', 'description', 'nat_inside', 'nat_outside',
- 'custom_fields']
- class IPAddressNestedSerializer(IPAddressSerializer):
- class Meta(IPAddressSerializer.Meta):
- fields = ['id', 'family', 'address']
- IPAddressSerializer._declared_fields['nat_inside'] = IPAddressNestedSerializer()
- IPAddressSerializer._declared_fields['nat_outside'] = IPAddressNestedSerializer()
|