constants.py 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. from django.db.models import Q
  2. from .choices import InterfaceTypeChoices
  3. # Exclude SVG images (unsupported by PIL)
  4. DEVICETYPE_IMAGE_FORMATS = 'image/bmp,image/gif,image/jpeg,image/png,image/tiff,image/webp'
  5. #
  6. # Racks
  7. #
  8. RACK_U_HEIGHT_DEFAULT = 42
  9. RACK_U_HEIGHT_MAX = 100
  10. RACK_ELEVATION_BORDER_WIDTH = 2
  11. RACK_ELEVATION_DEFAULT_LEGEND_WIDTH = 30
  12. RACK_ELEVATION_DEFAULT_MARGIN_WIDTH = 15
  13. RACK_STARTING_UNIT_DEFAULT = 1
  14. #
  15. # RearPorts
  16. #
  17. REARPORT_POSITIONS_MIN = 1
  18. REARPORT_POSITIONS_MAX = 1024
  19. #
  20. # Interfaces
  21. #
  22. INTERFACE_MTU_MIN = 1
  23. INTERFACE_MTU_MAX = 65536
  24. VIRTUAL_IFACE_TYPES = [
  25. InterfaceTypeChoices.TYPE_VIRTUAL,
  26. InterfaceTypeChoices.TYPE_LAG,
  27. InterfaceTypeChoices.TYPE_BRIDGE,
  28. ]
  29. WIRELESS_IFACE_TYPES = [
  30. InterfaceTypeChoices.TYPE_80211A,
  31. InterfaceTypeChoices.TYPE_80211G,
  32. InterfaceTypeChoices.TYPE_80211N,
  33. InterfaceTypeChoices.TYPE_80211AC,
  34. InterfaceTypeChoices.TYPE_80211AD,
  35. InterfaceTypeChoices.TYPE_80211AX,
  36. InterfaceTypeChoices.TYPE_80211AY,
  37. InterfaceTypeChoices.TYPE_80211BE,
  38. InterfaceTypeChoices.TYPE_802151,
  39. InterfaceTypeChoices.TYPE_802154,
  40. InterfaceTypeChoices.TYPE_OTHER_WIRELESS,
  41. InterfaceTypeChoices.TYPE_GSM,
  42. InterfaceTypeChoices.TYPE_CDMA,
  43. InterfaceTypeChoices.TYPE_LTE,
  44. InterfaceTypeChoices.TYPE_4G,
  45. InterfaceTypeChoices.TYPE_5G,
  46. ]
  47. NONCONNECTABLE_IFACE_TYPES = VIRTUAL_IFACE_TYPES + WIRELESS_IFACE_TYPES
  48. #
  49. # Device components
  50. #
  51. MODULE_TOKEN = '{module}'
  52. MODULAR_COMPONENT_TEMPLATE_MODELS = Q(
  53. app_label='dcim',
  54. model__in=(
  55. 'consoleporttemplate',
  56. 'consoleserverporttemplate',
  57. 'frontporttemplate',
  58. 'interfacetemplate',
  59. 'poweroutlettemplate',
  60. 'powerporttemplate',
  61. 'rearporttemplate',
  62. ))
  63. MODULAR_COMPONENT_MODELS = Q(
  64. app_label='dcim',
  65. model__in=(
  66. 'consoleport',
  67. 'consoleserverport',
  68. 'frontport',
  69. 'interface',
  70. 'poweroutlet',
  71. 'powerport',
  72. 'rearport',
  73. ))
  74. #
  75. # Cabling and connections
  76. #
  77. CABLE_TRACE_SVG_DEFAULT_WIDTH = 400
  78. # Cable endpoint types
  79. CABLE_TERMINATION_MODELS = Q(
  80. Q(app_label='circuits', model__in=(
  81. 'circuittermination',
  82. )) |
  83. Q(app_label='dcim', model__in=(
  84. 'consoleport',
  85. 'consoleserverport',
  86. 'frontport',
  87. 'interface',
  88. 'powerfeed',
  89. 'poweroutlet',
  90. 'powerport',
  91. 'rearport',
  92. ))
  93. )
  94. COMPATIBLE_TERMINATION_TYPES = {
  95. 'circuittermination': ['interface', 'frontport', 'rearport', 'circuittermination'],
  96. 'consoleport': ['consoleserverport', 'frontport', 'rearport'],
  97. 'consoleserverport': ['consoleport', 'frontport', 'rearport'],
  98. 'interface': ['interface', 'circuittermination', 'frontport', 'rearport'],
  99. 'frontport': ['consoleport', 'consoleserverport', 'interface', 'frontport', 'rearport', 'circuittermination'],
  100. 'powerfeed': ['powerport'],
  101. 'poweroutlet': ['powerport'],
  102. 'powerport': ['poweroutlet', 'powerfeed'],
  103. 'rearport': ['consoleport', 'consoleserverport', 'interface', 'frontport', 'rearport', 'circuittermination'],
  104. }
  105. # Models which can serve to scope an object by location
  106. LOCATION_SCOPE_TYPES = (
  107. 'region', 'sitegroup', 'site', 'location',
  108. )
  109. #
  110. # MAC addresses
  111. #
  112. MACADDRESS_ASSIGNMENT_MODELS = Q(
  113. Q(app_label='dcim', model='interface') |
  114. Q(app_label='virtualization', model='vminterface')
  115. )