vrfs.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. from rest_framework import serializers
  2. from ipam.models import RouteTarget, VRF
  3. from netbox.api.fields import RelatedObjectCountField, SerializedPKRelatedField
  4. from netbox.api.serializers import NetBoxModelSerializer
  5. from tenancy.api.serializers_.tenants import TenantSerializer
  6. __all__ = (
  7. 'RouteTargetSerializer',
  8. 'VRFSerializer',
  9. )
  10. class RouteTargetSerializer(NetBoxModelSerializer):
  11. url = serializers.HyperlinkedIdentityField(view_name='ipam-api:routetarget-detail')
  12. tenant = TenantSerializer(nested=True, required=False, allow_null=True)
  13. class Meta:
  14. model = RouteTarget
  15. fields = [
  16. 'id', 'url', 'display', 'name', 'tenant', 'description', 'comments', 'tags', 'custom_fields', 'created',
  17. 'last_updated',
  18. ]
  19. brief_fields = ('id', 'url', 'display', 'name', 'description')
  20. class VRFSerializer(NetBoxModelSerializer):
  21. url = serializers.HyperlinkedIdentityField(view_name='ipam-api:vrf-detail')
  22. tenant = TenantSerializer(nested=True, required=False, allow_null=True)
  23. import_targets = SerializedPKRelatedField(
  24. queryset=RouteTarget.objects.all(),
  25. serializer=RouteTargetSerializer,
  26. required=False,
  27. many=True
  28. )
  29. export_targets = SerializedPKRelatedField(
  30. queryset=RouteTarget.objects.all(),
  31. serializer=RouteTargetSerializer,
  32. required=False,
  33. many=True
  34. )
  35. # Related object counts
  36. ipaddress_count = RelatedObjectCountField('ip_addresses')
  37. prefix_count = RelatedObjectCountField('prefixes')
  38. class Meta:
  39. model = VRF
  40. fields = [
  41. 'id', 'url', 'display', 'name', 'rd', 'tenant', 'enforce_unique', 'description', 'comments',
  42. 'import_targets', 'export_targets', 'tags', 'custom_fields', 'created', 'last_updated', 'ipaddress_count',
  43. 'prefix_count',
  44. ]
  45. brief_fields = ('id', 'url', 'display', 'name', 'rd', 'description', 'prefix_count')