Coverage for ipam/constants.py: 100%

18 statements  

« prev     ^ index     » next       coverage.py v7.15.2, created at 2026-10-10 18:35 +0000

1from django.db.models import Q 

2 

3from .choices import FHRPGroupProtocolChoices, IPAddressRoleChoices 

4 

5# 

6# VRFs 

7# 

8 

9# Per RFC 4364 section 4.2, a route distinguisher may be encoded as one of the following: 

10# * Type 0 (16-bit AS number : 32-bit integer) 

11# * Type 1 (32-bit IPv4 address : 16-bit integer) 

12# * Type 2 (32-bit AS number : 16-bit integer) 

13# 21 characters are sufficient to convey the longest possible string value (255.255.255.255:65535) 

14# Also used for RouteTargets 

15VRF_RD_MAX_LENGTH = 21 

16 

17 

18# 

19# Prefixes 

20# 

21 

22PREFIX_LENGTH_MIN = 1 

23PREFIX_LENGTH_MAX = 127 # IPv6 

24 

25 

26# 

27# IPAddresses 

28# 

29 

30IPADDRESS_ASSIGNMENT_MODELS = Q( 

31 Q(app_label='dcim', model='interface') | 

32 Q(app_label='ipam', model='fhrpgroup') | 

33 Q(app_label='virtualization', model='vminterface') 

34) 

35 

36IPADDRESS_MASK_LENGTH_MIN = 1 

37IPADDRESS_MASK_LENGTH_MAX = 128 # IPv6 

38 

39IPADDRESS_ROLES_NONUNIQUE = ( 

40 # IPAddress roles which are exempt from unique address enforcement 

41 IPAddressRoleChoices.ROLE_ANYCAST, 

42 IPAddressRoleChoices.ROLE_VIP, 

43 IPAddressRoleChoices.ROLE_VRRP, 

44 IPAddressRoleChoices.ROLE_HSRP, 

45 IPAddressRoleChoices.ROLE_GLBP, 

46 IPAddressRoleChoices.ROLE_CARP, 

47) 

48 

49 

50# 

51# FHRP groups 

52# 

53 

54FHRPGROUPASSIGNMENT_PRIORITY_MIN = 0 

55FHRPGROUPASSIGNMENT_PRIORITY_MAX = 255 

56 

57FHRP_PROTOCOL_ROLE_MAPPINGS = { 

58 FHRPGroupProtocolChoices.PROTOCOL_VRRP2: IPAddressRoleChoices.ROLE_VRRP, 

59 FHRPGroupProtocolChoices.PROTOCOL_VRRP3: IPAddressRoleChoices.ROLE_VRRP, 

60 FHRPGroupProtocolChoices.PROTOCOL_HSRP: IPAddressRoleChoices.ROLE_HSRP, 

61 FHRPGroupProtocolChoices.PROTOCOL_GLBP: IPAddressRoleChoices.ROLE_GLBP, 

62 FHRPGroupProtocolChoices.PROTOCOL_CARP: IPAddressRoleChoices.ROLE_CARP, 

63 FHRPGroupProtocolChoices.PROTOCOL_OTHER: IPAddressRoleChoices.ROLE_VIP, 

64} 

65 

66 

67# 

68# VLANs 

69# 

70 

71# 12-bit VLAN ID (values 0 and 4095 are reserved) 

72VLAN_VID_MIN = 1 

73VLAN_VID_MAX = 4094 

74 

75# models values for ContentTypes which may be VLANGroup scope types 

76VLANGROUP_SCOPE_TYPES = ( 

77 'region', 'sitegroup', 'site', 'location', 'rackgroup', 'rack', 'clustergroup', 'cluster', 

78) 

79 

80 

81# 

82# Services 

83# 

84 

85SERVICE_ASSIGNMENT_MODELS = Q( 

86 Q(app_label='dcim', model='device') | 

87 Q(app_label='ipam', model='fhrpgroup') | 

88 Q(app_label='virtualization', model='virtualmachine') 

89) 

90 

91# 16-bit port number 

92SERVICE_PORT_MIN = 1 

93SERVICE_PORT_MAX = 65535