Coverage for vpn/api/serializers_/l2vpn.py: 100%
28 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-10 18:35 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-10 18:35 +0000
1from django.contrib.contenttypes.models import ContentType
3from ipam.api.serializers_.vrfs import RouteTargetSerializer
4from ipam.models import RouteTarget
5from netbox.api.fields import ChoiceField, ContentTypeField, SerializedPKRelatedField
6from netbox.api.gfk_fields import GFKSerializerField
7from netbox.api.serializers import NetBoxModelSerializer, PrimaryModelSerializer
8from tenancy.api.serializers_.tenants import TenantSerializer
9from vpn.choices import *
10from vpn.models import L2VPN, L2VPNTermination
12__all__ = (
13 'L2VPNSerializer',
14 'L2VPNTerminationSerializer',
15)
18class L2VPNSerializer(PrimaryModelSerializer):
19 type = ChoiceField(choices=L2VPNTypeChoices, required=True)
20 import_targets = SerializedPKRelatedField(
21 queryset=RouteTarget.objects.all(),
22 serializer=RouteTargetSerializer,
23 nested=True,
24 required=False,
25 many=True
26 )
27 export_targets = SerializedPKRelatedField(
28 queryset=RouteTarget.objects.all(),
29 serializer=RouteTargetSerializer,
30 nested=True,
31 required=False,
32 many=True
33 )
34 tenant = TenantSerializer(nested=True, required=False, allow_null=True)
35 status = ChoiceField(choices=L2VPNStatusChoices, required=False)
37 class Meta:
38 model = L2VPN
39 fields = [
40 'id', 'url', 'display_url', 'display', 'identifier', 'name', 'slug', 'type', 'status', 'import_targets',
41 'export_targets', 'description', 'owner', 'comments', 'tenant', 'tags', 'custom_fields', 'created',
42 'last_updated',
43 ]
44 brief_fields = ('id', 'url', 'display', 'identifier', 'name', 'slug', 'type', 'description')
47class L2VPNTerminationSerializer(NetBoxModelSerializer):
48 l2vpn = L2VPNSerializer(
49 nested=True
50 )
51 assigned_object_type = ContentTypeField(
52 queryset=ContentType.objects.all()
53 )
54 assigned_object = GFKSerializerField(read_only=True)
56 class Meta:
57 model = L2VPNTermination
58 fields = [
59 'id', 'url', 'display_url', 'display', 'l2vpn', 'assigned_object_type', 'assigned_object_id',
60 'assigned_object', 'tags', 'custom_fields', 'created', 'last_updated'
61 ]
62 brief_fields = ('id', 'url', 'display', 'l2vpn')