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

1from django.contrib.contenttypes.models import ContentType 

2 

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 

11 

12__all__ = ( 

13 'L2VPNSerializer', 

14 'L2VPNTerminationSerializer', 

15) 

16 

17 

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) 

36 

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') 

45 

46 

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) 

55 

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')