Add serializer classes to InterfaceSerializer

This commit is contained in:
Brian Tiemann 2024-10-10 11:43:01 -04:00
parent 1add28bf08
commit 27856ecaea
4 changed files with 26 additions and 9 deletions

View File

@ -8,7 +8,7 @@ from dcim.models import (
ConsolePort, ConsoleServerPort, DeviceBay, FrontPort, Interface, InventoryItem, ModuleBay, PowerOutlet, PowerPort,
RearPort, VirtualDeviceContext,
)
from ipam.api.serializers_.vlans import VLANSerializer
from ipam.api.serializers_.vlans import VLANSerializer, VLANTranslationPolicySerializer
from ipam.api.serializers_.vrfs import VRFSerializer
from ipam.models import VLAN
from netbox.api.fields import ChoiceField, ContentTypeField, SerializedPKRelatedField
@ -196,6 +196,7 @@ class InterfaceSerializer(NetBoxModelSerializer, CabledObjectSerializer, Connect
required=False,
many=True
)
vlan_translation_policy = VLANTranslationPolicySerializer(nested=True, required=False, allow_null=True)
vrf = VRFSerializer(nested=True, required=False, allow_null=True)
l2vpn_termination = L2VPNTerminationSerializer(nested=True, read_only=True, allow_null=True)
wireless_link = NestedWirelessLinkSerializer(read_only=True, allow_null=True)
@ -225,7 +226,7 @@ class InterfaceSerializer(NetBoxModelSerializer, CabledObjectSerializer, Connect
'tx_power', 'untagged_vlan', 'tagged_vlans', 'mark_connected', 'cable', 'cable_end', 'wireless_link',
'link_peers', 'link_peers_type', 'wireless_lans', 'vrf', 'l2vpn_termination', 'connected_endpoints',
'connected_endpoints_type', 'connected_endpoints_reachable', 'tags', 'custom_fields', 'created',
'last_updated', 'count_ipaddresses', 'count_fhrp_groups', '_occupied',
'last_updated', 'count_ipaddresses', 'count_fhrp_groups', '_occupied', 'vlan_translation_policy'
]
brief_fields = ('id', 'url', 'display', 'device', 'name', 'description', 'cable', '_occupied')

View File

@ -114,15 +114,17 @@ class CreateAvailableVLANSerializer(NetBoxModelSerializer):
return data
class VLANTranslationPolicySerializer(NetBoxModelSerializer):
class Meta:
model = VLANTranslationPolicy
fields = ['name', 'description']
class VLANTranslationRuleSerializer(NetBoxModelSerializer):
class Meta:
model = VLANTranslationRule
fields = ['policy', 'local_vid', 'remote_vid']
class VLANTranslationPolicySerializer(NetBoxModelSerializer):
rules = VLANTranslationRuleSerializer(many=True, read_only=True)
class Meta:
model = VLANTranslationPolicy
fields = ('id', 'name', 'description', 'rules')
brief_fields = ('id', 'rules')

View File

@ -21,6 +21,8 @@ router.register('fhrp-groups', views.FHRPGroupViewSet)
router.register('fhrp-group-assignments', views.FHRPGroupAssignmentViewSet)
router.register('vlan-groups', views.VLANGroupViewSet)
router.register('vlans', views.VLANViewSet)
router.register('vlan-translation-policies', views.VLANTranslationPolicyViewSet)
router.register('vlan-translation-rules', views.VLANTranslationRuleViewSet)
router.register('service-templates', views.ServiceTemplateViewSet)
router.register('services', views.ServiceViewSet)

View File

@ -143,6 +143,18 @@ class VLANViewSet(NetBoxModelViewSet):
filterset_class = filtersets.VLANFilterSet
class VLANTranslationPolicyViewSet(NetBoxModelViewSet):
queryset = VLANTranslationPolicy.objects.prefetch_related('rules')
serializer_class = serializers.VLANTranslationPolicySerializer
filterset_class = filtersets.VLANTranslationPolicyFilterSet
class VLANTranslationRuleViewSet(NetBoxModelViewSet):
queryset = VLANTranslationRule.objects.all()
serializer_class = serializers.VLANTranslationRuleSerializer
filterset_class = filtersets.VLANTranslationRuleFilterSet
class ServiceTemplateViewSet(NetBoxModelViewSet):
queryset = ServiceTemplate.objects.all()
serializer_class = serializers.ServiceTemplateSerializer