choices.py 33 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196
  1. from utilities.choices import ChoiceSet
  2. #
  3. # Sites
  4. #
  5. class SiteStatusChoices(ChoiceSet):
  6. STATUS_ACTIVE = 'active'
  7. STATUS_PLANNED = 'planned'
  8. STATUS_RETIRED = 'retired'
  9. CHOICES = (
  10. (STATUS_ACTIVE, 'Active'),
  11. (STATUS_PLANNED, 'Planned'),
  12. (STATUS_RETIRED, 'Retired'),
  13. )
  14. LEGACY_MAP = {
  15. STATUS_ACTIVE: 1,
  16. STATUS_PLANNED: 2,
  17. STATUS_RETIRED: 4,
  18. }
  19. #
  20. # Racks
  21. #
  22. class RackTypeChoices(ChoiceSet):
  23. TYPE_2POST = '2-post-frame'
  24. TYPE_4POST = '4-post-frame'
  25. TYPE_CABINET = '4-post-cabinet'
  26. TYPE_WALLFRAME = 'wall-frame'
  27. TYPE_WALLCABINET = 'wall-cabinet'
  28. CHOICES = (
  29. (TYPE_2POST, '2-post frame'),
  30. (TYPE_4POST, '4-post frame'),
  31. (TYPE_CABINET, '4-post cabinet'),
  32. (TYPE_WALLFRAME, 'Wall-mounted frame'),
  33. (TYPE_WALLCABINET, 'Wall-mounted cabinet'),
  34. )
  35. LEGACY_MAP = {
  36. TYPE_2POST: 100,
  37. TYPE_4POST: 200,
  38. TYPE_CABINET: 300,
  39. TYPE_WALLFRAME: 1000,
  40. TYPE_WALLCABINET: 1100,
  41. }
  42. class RackWidthChoices(ChoiceSet):
  43. WIDTH_10IN = 10
  44. WIDTH_19IN = 19
  45. WIDTH_21IN = 21
  46. WIDTH_23IN = 23
  47. CHOICES = (
  48. (WIDTH_10IN, '10 inches'),
  49. (WIDTH_19IN, '19 inches'),
  50. (WIDTH_21IN, '21 inches'),
  51. (WIDTH_23IN, '23 inches'),
  52. )
  53. class RackStatusChoices(ChoiceSet):
  54. STATUS_RESERVED = 'reserved'
  55. STATUS_AVAILABLE = 'available'
  56. STATUS_PLANNED = 'planned'
  57. STATUS_ACTIVE = 'active'
  58. STATUS_DEPRECATED = 'deprecated'
  59. CHOICES = (
  60. (STATUS_RESERVED, 'Reserved'),
  61. (STATUS_AVAILABLE, 'Available'),
  62. (STATUS_PLANNED, 'Planned'),
  63. (STATUS_ACTIVE, 'Active'),
  64. (STATUS_DEPRECATED, 'Deprecated'),
  65. )
  66. LEGACY_MAP = {
  67. STATUS_RESERVED: 0,
  68. STATUS_AVAILABLE: 1,
  69. STATUS_PLANNED: 2,
  70. STATUS_ACTIVE: 3,
  71. STATUS_DEPRECATED: 4,
  72. }
  73. class RackDimensionUnitChoices(ChoiceSet):
  74. UNIT_MILLIMETER = 'mm'
  75. UNIT_INCH = 'in'
  76. CHOICES = (
  77. (UNIT_MILLIMETER, 'Millimeters'),
  78. (UNIT_INCH, 'Inches'),
  79. )
  80. LEGACY_MAP = {
  81. UNIT_MILLIMETER: 1000,
  82. UNIT_INCH: 2000,
  83. }
  84. class RackElevationDetailRenderChoices(ChoiceSet):
  85. RENDER_JSON = 'json'
  86. RENDER_SVG = 'svg'
  87. CHOICES = (
  88. (RENDER_JSON, 'json'),
  89. (RENDER_SVG, 'svg')
  90. )
  91. #
  92. # DeviceTypes
  93. #
  94. class SubdeviceRoleChoices(ChoiceSet):
  95. ROLE_PARENT = 'parent'
  96. ROLE_CHILD = 'child'
  97. CHOICES = (
  98. (ROLE_PARENT, 'Parent'),
  99. (ROLE_CHILD, 'Child'),
  100. )
  101. LEGACY_MAP = {
  102. ROLE_PARENT: True,
  103. ROLE_CHILD: False,
  104. }
  105. #
  106. # Devices
  107. #
  108. class DeviceFaceChoices(ChoiceSet):
  109. FACE_FRONT = 'front'
  110. FACE_REAR = 'rear'
  111. CHOICES = (
  112. (FACE_FRONT, 'Front'),
  113. (FACE_REAR, 'Rear'),
  114. )
  115. LEGACY_MAP = {
  116. FACE_FRONT: 0,
  117. FACE_REAR: 1,
  118. }
  119. class DeviceStatusChoices(ChoiceSet):
  120. STATUS_OFFLINE = 'offline'
  121. STATUS_ACTIVE = 'active'
  122. STATUS_PLANNED = 'planned'
  123. STATUS_STAGED = 'staged'
  124. STATUS_FAILED = 'failed'
  125. STATUS_INVENTORY = 'inventory'
  126. STATUS_DECOMMISSIONING = 'decommissioning'
  127. CHOICES = (
  128. (STATUS_OFFLINE, 'Offline'),
  129. (STATUS_ACTIVE, 'Active'),
  130. (STATUS_PLANNED, 'Planned'),
  131. (STATUS_STAGED, 'Staged'),
  132. (STATUS_FAILED, 'Failed'),
  133. (STATUS_INVENTORY, 'Inventory'),
  134. (STATUS_DECOMMISSIONING, 'Decommissioning'),
  135. )
  136. LEGACY_MAP = {
  137. STATUS_OFFLINE: 0,
  138. STATUS_ACTIVE: 1,
  139. STATUS_PLANNED: 2,
  140. STATUS_STAGED: 3,
  141. STATUS_FAILED: 4,
  142. STATUS_INVENTORY: 5,
  143. STATUS_DECOMMISSIONING: 6,
  144. }
  145. #
  146. # ConsolePorts
  147. #
  148. class ConsolePortTypeChoices(ChoiceSet):
  149. TYPE_DE9 = 'de-9'
  150. TYPE_DB25 = 'db-25'
  151. TYPE_RJ11 = 'rj-11'
  152. TYPE_RJ12 = 'rj-12'
  153. TYPE_RJ45 = 'rj-45'
  154. TYPE_USB_A = 'usb-a'
  155. TYPE_USB_B = 'usb-b'
  156. TYPE_USB_C = 'usb-c'
  157. TYPE_USB_MINI_A = 'usb-mini-a'
  158. TYPE_USB_MINI_B = 'usb-mini-b'
  159. TYPE_USB_MICRO_A = 'usb-micro-a'
  160. TYPE_USB_MICRO_B = 'usb-micro-b'
  161. TYPE_OTHER = 'other'
  162. CHOICES = (
  163. ('Serial', (
  164. (TYPE_DE9, 'DE-9'),
  165. (TYPE_DB25, 'DB-25'),
  166. (TYPE_RJ11, 'RJ-11'),
  167. (TYPE_RJ12, 'RJ-12'),
  168. (TYPE_RJ45, 'RJ-45'),
  169. )),
  170. ('USB', (
  171. (TYPE_USB_A, 'USB Type A'),
  172. (TYPE_USB_B, 'USB Type B'),
  173. (TYPE_USB_C, 'USB Type C'),
  174. (TYPE_USB_MINI_A, 'USB Mini A'),
  175. (TYPE_USB_MINI_B, 'USB Mini B'),
  176. (TYPE_USB_MICRO_A, 'USB Micro A'),
  177. (TYPE_USB_MICRO_B, 'USB Micro B'),
  178. )),
  179. ('Other', (
  180. (TYPE_OTHER, 'Other'),
  181. )),
  182. )
  183. #
  184. # PowerPorts
  185. #
  186. class PowerPortTypeChoices(ChoiceSet):
  187. # IEC 60320
  188. TYPE_IEC_C6 = 'iec-60320-c6'
  189. TYPE_IEC_C8 = 'iec-60320-c8'
  190. TYPE_IEC_C14 = 'iec-60320-c14'
  191. TYPE_IEC_C16 = 'iec-60320-c16'
  192. TYPE_IEC_C20 = 'iec-60320-c20'
  193. # IEC 60309
  194. TYPE_IEC_PNE4H = 'iec-60309-p-n-e-4h'
  195. TYPE_IEC_PNE6H = 'iec-60309-p-n-e-6h'
  196. TYPE_IEC_PNE9H = 'iec-60309-p-n-e-9h'
  197. TYPE_IEC_2PE4H = 'iec-60309-2p-e-4h'
  198. TYPE_IEC_2PE6H = 'iec-60309-2p-e-6h'
  199. TYPE_IEC_2PE9H = 'iec-60309-2p-e-9h'
  200. TYPE_IEC_3PE4H = 'iec-60309-3p-e-4h'
  201. TYPE_IEC_3PE6H = 'iec-60309-3p-e-6h'
  202. TYPE_IEC_3PE9H = 'iec-60309-3p-e-9h'
  203. TYPE_IEC_3PNE4H = 'iec-60309-3p-n-e-4h'
  204. TYPE_IEC_3PNE6H = 'iec-60309-3p-n-e-6h'
  205. TYPE_IEC_3PNE9H = 'iec-60309-3p-n-e-9h'
  206. # NEMA non-locking
  207. TYPE_NEMA_115P = 'nema-1-15p'
  208. TYPE_NEMA_515P = 'nema-5-15p'
  209. TYPE_NEMA_520P = 'nema-5-20p'
  210. TYPE_NEMA_530P = 'nema-5-30p'
  211. TYPE_NEMA_550P = 'nema-5-50p'
  212. TYPE_NEMA_615P = 'nema-6-15p'
  213. TYPE_NEMA_620P = 'nema-6-20p'
  214. TYPE_NEMA_630P = 'nema-6-30p'
  215. TYPE_NEMA_650P = 'nema-6-50p'
  216. TYPE_NEMA_1030P = 'nema-10-30p'
  217. TYPE_NEMA_1050P = 'nema-10-50p'
  218. TYPE_NEMA_1420P = 'nema-14-20p'
  219. TYPE_NEMA_1430P = 'nema-14-30p'
  220. TYPE_NEMA_1450P = 'nema-14-50p'
  221. TYPE_NEMA_1460P = 'nema-14-60p'
  222. TYPE_NEMA_1515P = 'nema-15-15p'
  223. TYPE_NEMA_1520P = 'nema-15-20p'
  224. TYPE_NEMA_1530P = 'nema-15-30p'
  225. TYPE_NEMA_1550P = 'nema-15-50p'
  226. TYPE_NEMA_1560P = 'nema-15-60p'
  227. # NEMA locking
  228. TYPE_NEMA_L115P = 'nema-l1-15p'
  229. TYPE_NEMA_L515P = 'nema-l5-15p'
  230. TYPE_NEMA_L520P = 'nema-l5-20p'
  231. TYPE_NEMA_L530P = 'nema-l5-30p'
  232. TYPE_NEMA_L550P = 'nema-l5-50p'
  233. TYPE_NEMA_L615P = 'nema-l6-15p'
  234. TYPE_NEMA_L620P = 'nema-l6-20p'
  235. TYPE_NEMA_L630P = 'nema-l6-30p'
  236. TYPE_NEMA_L650P = 'nema-l6-50p'
  237. TYPE_NEMA_L1030P = 'nema-l10-30p'
  238. TYPE_NEMA_L1420P = 'nema-l14-20p'
  239. TYPE_NEMA_L1430P = 'nema-l14-30p'
  240. TYPE_NEMA_L1450P = 'nema-l14-50p'
  241. TYPE_NEMA_L1460P = 'nema-l14-60p'
  242. TYPE_NEMA_L1520P = 'nema-l15-20p'
  243. TYPE_NEMA_L1530P = 'nema-l15-30p'
  244. TYPE_NEMA_L1550P = 'nema-l15-50p'
  245. TYPE_NEMA_L1560P = 'nema-l15-60p'
  246. TYPE_NEMA_L2120P = 'nema-l21-20p'
  247. TYPE_NEMA_L2130P = 'nema-l21-30p'
  248. # California style
  249. TYPE_CS6361C = 'cs6361c'
  250. TYPE_CS6365C = 'cs6365c'
  251. TYPE_CS8165C = 'cs8165c'
  252. TYPE_CS8265C = 'cs8265c'
  253. TYPE_CS8365C = 'cs8365c'
  254. TYPE_CS8465C = 'cs8465c'
  255. # ITA/international
  256. TYPE_ITA_E = 'ita-e'
  257. TYPE_ITA_F = 'ita-f'
  258. TYPE_ITA_EF = 'ita-ef'
  259. TYPE_ITA_G = 'ita-g'
  260. TYPE_ITA_H = 'ita-h'
  261. TYPE_ITA_I = 'ita-i'
  262. TYPE_ITA_J = 'ita-j'
  263. TYPE_ITA_K = 'ita-k'
  264. TYPE_ITA_L = 'ita-l'
  265. TYPE_ITA_M = 'ita-m'
  266. TYPE_ITA_N = 'ita-n'
  267. TYPE_ITA_O = 'ita-o'
  268. CHOICES = (
  269. ('IEC 60320', (
  270. (TYPE_IEC_C6, 'C6'),
  271. (TYPE_IEC_C8, 'C8'),
  272. (TYPE_IEC_C14, 'C14'),
  273. (TYPE_IEC_C16, 'C16'),
  274. (TYPE_IEC_C20, 'C20'),
  275. )),
  276. ('IEC 60309', (
  277. (TYPE_IEC_PNE4H, 'P+N+E 4H'),
  278. (TYPE_IEC_PNE6H, 'P+N+E 6H'),
  279. (TYPE_IEC_PNE9H, 'P+N+E 9H'),
  280. (TYPE_IEC_2PE4H, '2P+E 4H'),
  281. (TYPE_IEC_2PE6H, '2P+E 6H'),
  282. (TYPE_IEC_2PE9H, '2P+E 9H'),
  283. (TYPE_IEC_3PE4H, '3P+E 4H'),
  284. (TYPE_IEC_3PE6H, '3P+E 6H'),
  285. (TYPE_IEC_3PE9H, '3P+E 9H'),
  286. (TYPE_IEC_3PNE4H, '3P+N+E 4H'),
  287. (TYPE_IEC_3PNE6H, '3P+N+E 6H'),
  288. (TYPE_IEC_3PNE9H, '3P+N+E 9H'),
  289. )),
  290. ('NEMA (Non-locking)', (
  291. (TYPE_NEMA_115P, 'NEMA 1-15P'),
  292. (TYPE_NEMA_515P, 'NEMA 5-15P'),
  293. (TYPE_NEMA_520P, 'NEMA 5-20P'),
  294. (TYPE_NEMA_530P, 'NEMA 5-30P'),
  295. (TYPE_NEMA_550P, 'NEMA 5-50P'),
  296. (TYPE_NEMA_615P, 'NEMA 6-15P'),
  297. (TYPE_NEMA_620P, 'NEMA 6-20P'),
  298. (TYPE_NEMA_630P, 'NEMA 6-30P'),
  299. (TYPE_NEMA_650P, 'NEMA 6-50P'),
  300. (TYPE_NEMA_1030P, 'NEMA 10-30P'),
  301. (TYPE_NEMA_1050P, 'NEMA 10-50P'),
  302. (TYPE_NEMA_1420P, 'NEMA 14-20P'),
  303. (TYPE_NEMA_1430P, 'NEMA 14-30P'),
  304. (TYPE_NEMA_1450P, 'NEMA 14-50P'),
  305. (TYPE_NEMA_1460P, 'NEMA 14-60P'),
  306. (TYPE_NEMA_1515P, 'NEMA 15-15P'),
  307. (TYPE_NEMA_1520P, 'NEMA 15-20P'),
  308. (TYPE_NEMA_1530P, 'NEMA 15-30P'),
  309. (TYPE_NEMA_1550P, 'NEMA 15-50P'),
  310. (TYPE_NEMA_1560P, 'NEMA 15-60P'),
  311. )),
  312. ('NEMA (Locking)', (
  313. (TYPE_NEMA_L115P, 'NEMA L1-15P'),
  314. (TYPE_NEMA_L515P, 'NEMA L5-15P'),
  315. (TYPE_NEMA_L520P, 'NEMA L5-20P'),
  316. (TYPE_NEMA_L530P, 'NEMA L5-30P'),
  317. (TYPE_NEMA_L550P, 'NEMA L5-50P'),
  318. (TYPE_NEMA_L615P, 'NEMA L6-15P'),
  319. (TYPE_NEMA_L620P, 'NEMA L6-20P'),
  320. (TYPE_NEMA_L630P, 'NEMA L6-30P'),
  321. (TYPE_NEMA_L650P, 'NEMA L6-50P'),
  322. (TYPE_NEMA_L1030P, 'NEMA L10-30P'),
  323. (TYPE_NEMA_L1420P, 'NEMA L14-20P'),
  324. (TYPE_NEMA_L1430P, 'NEMA L14-30P'),
  325. (TYPE_NEMA_L1450P, 'NEMA L14-50P'),
  326. (TYPE_NEMA_L1460P, 'NEMA L14-60P'),
  327. (TYPE_NEMA_L1520P, 'NEMA L15-20P'),
  328. (TYPE_NEMA_L1530P, 'NEMA L15-30P'),
  329. (TYPE_NEMA_L1550P, 'NEMA L15-50P'),
  330. (TYPE_NEMA_L1560P, 'NEMA L15-60P'),
  331. (TYPE_NEMA_L2120P, 'NEMA L21-20P'),
  332. (TYPE_NEMA_L2130P, 'NEMA L21-30P'),
  333. )),
  334. ('California Style', (
  335. (TYPE_CS6361C, 'CS6361C'),
  336. (TYPE_CS6365C, 'CS6365C'),
  337. (TYPE_CS8165C, 'CS8165C'),
  338. (TYPE_CS8265C, 'CS8265C'),
  339. (TYPE_CS8365C, 'CS8365C'),
  340. (TYPE_CS8465C, 'CS8465C'),
  341. )),
  342. ('International/ITA', (
  343. (TYPE_ITA_E, 'ITA Type E (CEE 7/5)'),
  344. (TYPE_ITA_F, 'ITA Type F (CEE 7/4)'),
  345. (TYPE_ITA_EF, 'ITA Type E/F (CEE 7/7)'),
  346. (TYPE_ITA_G, 'ITA Type G (BS 1363)'),
  347. (TYPE_ITA_H, 'ITA Type H'),
  348. (TYPE_ITA_I, 'ITA Type I'),
  349. (TYPE_ITA_J, 'ITA Type J'),
  350. (TYPE_ITA_K, 'ITA Type K'),
  351. (TYPE_ITA_L, 'ITA Type L (CEI 23-50)'),
  352. (TYPE_ITA_M, 'ITA Type M (BS 546)'),
  353. (TYPE_ITA_N, 'ITA Type N'),
  354. (TYPE_ITA_O, 'ITA Type O'),
  355. )),
  356. )
  357. #
  358. # PowerOutlets
  359. #
  360. class PowerOutletTypeChoices(ChoiceSet):
  361. # IEC 60320
  362. TYPE_IEC_C5 = 'iec-60320-c5'
  363. TYPE_IEC_C7 = 'iec-60320-c7'
  364. TYPE_IEC_C13 = 'iec-60320-c13'
  365. TYPE_IEC_C15 = 'iec-60320-c15'
  366. TYPE_IEC_C19 = 'iec-60320-c19'
  367. # IEC 60309
  368. TYPE_IEC_PNE4H = 'iec-60309-p-n-e-4h'
  369. TYPE_IEC_PNE6H = 'iec-60309-p-n-e-6h'
  370. TYPE_IEC_PNE9H = 'iec-60309-p-n-e-9h'
  371. TYPE_IEC_2PE4H = 'iec-60309-2p-e-4h'
  372. TYPE_IEC_2PE6H = 'iec-60309-2p-e-6h'
  373. TYPE_IEC_2PE9H = 'iec-60309-2p-e-9h'
  374. TYPE_IEC_3PE4H = 'iec-60309-3p-e-4h'
  375. TYPE_IEC_3PE6H = 'iec-60309-3p-e-6h'
  376. TYPE_IEC_3PE9H = 'iec-60309-3p-e-9h'
  377. TYPE_IEC_3PNE4H = 'iec-60309-3p-n-e-4h'
  378. TYPE_IEC_3PNE6H = 'iec-60309-3p-n-e-6h'
  379. TYPE_IEC_3PNE9H = 'iec-60309-3p-n-e-9h'
  380. # NEMA non-locking
  381. TYPE_NEMA_115R = 'nema-1-15r'
  382. TYPE_NEMA_515R = 'nema-5-15r'
  383. TYPE_NEMA_520R = 'nema-5-20r'
  384. TYPE_NEMA_530R = 'nema-5-30r'
  385. TYPE_NEMA_550R = 'nema-5-50r'
  386. TYPE_NEMA_615R = 'nema-6-15r'
  387. TYPE_NEMA_620R = 'nema-6-20r'
  388. TYPE_NEMA_630R = 'nema-6-30r'
  389. TYPE_NEMA_650R = 'nema-6-50r'
  390. TYPE_NEMA_1030R = 'nema-10-30r'
  391. TYPE_NEMA_1050R = 'nema-10-50r'
  392. TYPE_NEMA_1420R = 'nema-14-20r'
  393. TYPE_NEMA_1430R = 'nema-14-30r'
  394. TYPE_NEMA_1450R = 'nema-14-50r'
  395. TYPE_NEMA_1460R = 'nema-14-60r'
  396. TYPE_NEMA_1515R = 'nema-15-15r'
  397. TYPE_NEMA_1520R = 'nema-15-20r'
  398. TYPE_NEMA_1530R = 'nema-15-30r'
  399. TYPE_NEMA_1550R = 'nema-15-50r'
  400. TYPE_NEMA_1560R = 'nema-15-60r'
  401. # NEMA locking
  402. TYPE_NEMA_L115R = 'nema-l1-15r'
  403. TYPE_NEMA_L515R = 'nema-l5-15r'
  404. TYPE_NEMA_L520R = 'nema-l5-20r'
  405. TYPE_NEMA_L530R = 'nema-l5-30r'
  406. TYPE_NEMA_L550R = 'nema-l5-50r'
  407. TYPE_NEMA_L615R = 'nema-l6-15r'
  408. TYPE_NEMA_L620R = 'nema-l6-20r'
  409. TYPE_NEMA_L630R = 'nema-l6-30r'
  410. TYPE_NEMA_L650R = 'nema-l6-50r'
  411. TYPE_NEMA_L1030R = 'nema-l10-30r'
  412. TYPE_NEMA_L1420R = 'nema-l14-20r'
  413. TYPE_NEMA_L1430R = 'nema-l14-30r'
  414. TYPE_NEMA_L1450R = 'nema-l14-50r'
  415. TYPE_NEMA_L1460R = 'nema-l14-60r'
  416. TYPE_NEMA_L1520R = 'nema-l15-20r'
  417. TYPE_NEMA_L1530R = 'nema-l15-30r'
  418. TYPE_NEMA_L1550R = 'nema-l15-50r'
  419. TYPE_NEMA_L1560R = 'nema-l15-60r'
  420. TYPE_NEMA_L2120R = 'nema-l21-20r'
  421. TYPE_NEMA_L2130R = 'nema-l21-30r'
  422. # California style
  423. TYPE_CS6360C = 'CS6360C'
  424. TYPE_CS6364C = 'CS6364C'
  425. TYPE_CS8164C = 'CS8164C'
  426. TYPE_CS8264C = 'CS8264C'
  427. TYPE_CS8364C = 'CS8364C'
  428. TYPE_CS8464C = 'CS8464C'
  429. # ITA/international
  430. TYPE_ITA_E = 'ita-e'
  431. TYPE_ITA_F = 'ita-f'
  432. TYPE_ITA_G = 'ita-g'
  433. TYPE_ITA_H = 'ita-h'
  434. TYPE_ITA_I = 'ita-i'
  435. TYPE_ITA_J = 'ita-j'
  436. TYPE_ITA_K = 'ita-k'
  437. TYPE_ITA_L = 'ita-l'
  438. TYPE_ITA_M = 'ita-m'
  439. TYPE_ITA_N = 'ita-n'
  440. TYPE_ITA_O = 'ita-o'
  441. # Proprietary
  442. TYPE_HDOT_CX = 'hdot-cx'
  443. CHOICES = (
  444. ('IEC 60320', (
  445. (TYPE_IEC_C5, 'C5'),
  446. (TYPE_IEC_C7, 'C7'),
  447. (TYPE_IEC_C13, 'C13'),
  448. (TYPE_IEC_C15, 'C15'),
  449. (TYPE_IEC_C19, 'C19'),
  450. )),
  451. ('IEC 60309', (
  452. (TYPE_IEC_PNE4H, 'P+N+E 4H'),
  453. (TYPE_IEC_PNE6H, 'P+N+E 6H'),
  454. (TYPE_IEC_PNE9H, 'P+N+E 9H'),
  455. (TYPE_IEC_2PE4H, '2P+E 4H'),
  456. (TYPE_IEC_2PE6H, '2P+E 6H'),
  457. (TYPE_IEC_2PE9H, '2P+E 9H'),
  458. (TYPE_IEC_3PE4H, '3P+E 4H'),
  459. (TYPE_IEC_3PE6H, '3P+E 6H'),
  460. (TYPE_IEC_3PE9H, '3P+E 9H'),
  461. (TYPE_IEC_3PNE4H, '3P+N+E 4H'),
  462. (TYPE_IEC_3PNE6H, '3P+N+E 6H'),
  463. (TYPE_IEC_3PNE9H, '3P+N+E 9H'),
  464. )),
  465. ('NEMA (Non-locking)', (
  466. (TYPE_NEMA_115R, 'NEMA 1-15R'),
  467. (TYPE_NEMA_515R, 'NEMA 5-15R'),
  468. (TYPE_NEMA_520R, 'NEMA 5-20R'),
  469. (TYPE_NEMA_530R, 'NEMA 5-30R'),
  470. (TYPE_NEMA_550R, 'NEMA 5-50R'),
  471. (TYPE_NEMA_615R, 'NEMA 6-15R'),
  472. (TYPE_NEMA_620R, 'NEMA 6-20R'),
  473. (TYPE_NEMA_630R, 'NEMA 6-30R'),
  474. (TYPE_NEMA_650R, 'NEMA 6-50R'),
  475. (TYPE_NEMA_1030R, 'NEMA 10-30R'),
  476. (TYPE_NEMA_1050R, 'NEMA 10-50R'),
  477. (TYPE_NEMA_1420R, 'NEMA 14-20R'),
  478. (TYPE_NEMA_1430R, 'NEMA 14-30R'),
  479. (TYPE_NEMA_1450R, 'NEMA 14-50R'),
  480. (TYPE_NEMA_1460R, 'NEMA 14-60R'),
  481. (TYPE_NEMA_1515R, 'NEMA 15-15R'),
  482. (TYPE_NEMA_1520R, 'NEMA 15-20R'),
  483. (TYPE_NEMA_1530R, 'NEMA 15-30R'),
  484. (TYPE_NEMA_1550R, 'NEMA 15-50R'),
  485. (TYPE_NEMA_1560R, 'NEMA 15-60R'),
  486. )),
  487. ('NEMA (Locking)', (
  488. (TYPE_NEMA_L115R, 'NEMA L1-15R'),
  489. (TYPE_NEMA_L515R, 'NEMA L5-15R'),
  490. (TYPE_NEMA_L520R, 'NEMA L5-20R'),
  491. (TYPE_NEMA_L530R, 'NEMA L5-30R'),
  492. (TYPE_NEMA_L550R, 'NEMA L5-50R'),
  493. (TYPE_NEMA_L615R, 'NEMA L6-15R'),
  494. (TYPE_NEMA_L620R, 'NEMA L6-20R'),
  495. (TYPE_NEMA_L630R, 'NEMA L6-30R'),
  496. (TYPE_NEMA_L650R, 'NEMA L6-50R'),
  497. (TYPE_NEMA_L1030R, 'NEMA L10-30R'),
  498. (TYPE_NEMA_L1420R, 'NEMA L14-20R'),
  499. (TYPE_NEMA_L1430R, 'NEMA L14-30R'),
  500. (TYPE_NEMA_L1450R, 'NEMA L14-50R'),
  501. (TYPE_NEMA_L1460R, 'NEMA L14-60R'),
  502. (TYPE_NEMA_L1520R, 'NEMA L15-20R'),
  503. (TYPE_NEMA_L1530R, 'NEMA L15-30R'),
  504. (TYPE_NEMA_L1550R, 'NEMA L15-50R'),
  505. (TYPE_NEMA_L1560R, 'NEMA L15-60R'),
  506. (TYPE_NEMA_L2120R, 'NEMA L21-20R'),
  507. (TYPE_NEMA_L2130R, 'NEMA L21-30R'),
  508. )),
  509. ('California Style', (
  510. (TYPE_CS6360C, 'CS6360C'),
  511. (TYPE_CS6364C, 'CS6364C'),
  512. (TYPE_CS8164C, 'CS8164C'),
  513. (TYPE_CS8264C, 'CS8264C'),
  514. (TYPE_CS8364C, 'CS8364C'),
  515. (TYPE_CS8464C, 'CS8464C'),
  516. )),
  517. ('ITA/International', (
  518. (TYPE_ITA_E, 'ITA Type E (CEE7/5)'),
  519. (TYPE_ITA_F, 'ITA Type F (CEE7/3)'),
  520. (TYPE_ITA_G, 'ITA Type G (BS 1363)'),
  521. (TYPE_ITA_H, 'ITA Type H'),
  522. (TYPE_ITA_I, 'ITA Type I'),
  523. (TYPE_ITA_J, 'ITA Type J'),
  524. (TYPE_ITA_K, 'ITA Type K'),
  525. (TYPE_ITA_L, 'ITA Type L (CEI 23-50)'),
  526. (TYPE_ITA_M, 'ITA Type M (BS 546)'),
  527. (TYPE_ITA_N, 'ITA Type N'),
  528. (TYPE_ITA_O, 'ITA Type O'),
  529. )),
  530. ('Proprietary', (
  531. (TYPE_HDOT_CX, 'HDOT Cx'),
  532. )),
  533. )
  534. class PowerOutletFeedLegChoices(ChoiceSet):
  535. FEED_LEG_A = 'A'
  536. FEED_LEG_B = 'B'
  537. FEED_LEG_C = 'C'
  538. CHOICES = (
  539. (FEED_LEG_A, 'A'),
  540. (FEED_LEG_B, 'B'),
  541. (FEED_LEG_C, 'C'),
  542. )
  543. LEGACY_MAP = {
  544. FEED_LEG_A: 1,
  545. FEED_LEG_B: 2,
  546. FEED_LEG_C: 3,
  547. }
  548. #
  549. # Interfaces
  550. #
  551. class InterfaceTypeChoices(ChoiceSet):
  552. # Virtual
  553. TYPE_VIRTUAL = 'virtual'
  554. TYPE_LAG = 'lag'
  555. # Ethernet
  556. TYPE_100ME_FIXED = '100base-tx'
  557. TYPE_1GE_FIXED = '1000base-t'
  558. TYPE_1GE_GBIC = '1000base-x-gbic'
  559. TYPE_1GE_SFP = '1000base-x-sfp'
  560. TYPE_2GE_FIXED = '2.5gbase-t'
  561. TYPE_5GE_FIXED = '5gbase-t'
  562. TYPE_10GE_FIXED = '10gbase-t'
  563. TYPE_10GE_CX4 = '10gbase-cx4'
  564. TYPE_10GE_SFP_PLUS = '10gbase-x-sfpp'
  565. TYPE_10GE_XFP = '10gbase-x-xfp'
  566. TYPE_10GE_XENPAK = '10gbase-x-xenpak'
  567. TYPE_10GE_X2 = '10gbase-x-x2'
  568. TYPE_25GE_SFP28 = '25gbase-x-sfp28'
  569. TYPE_40GE_QSFP_PLUS = '40gbase-x-qsfpp'
  570. TYPE_50GE_QSFP28 = '50gbase-x-sfp28'
  571. TYPE_100GE_CFP = '100gbase-x-cfp'
  572. TYPE_100GE_CFP2 = '100gbase-x-cfp2'
  573. TYPE_100GE_CFP4 = '100gbase-x-cfp4'
  574. TYPE_100GE_CPAK = '100gbase-x-cpak'
  575. TYPE_100GE_QSFP28 = '100gbase-x-qsfp28'
  576. TYPE_200GE_CFP2 = '200gbase-x-cfp2'
  577. TYPE_200GE_QSFP56 = '200gbase-x-qsfp56'
  578. TYPE_400GE_QSFP_DD = '400gbase-x-qsfpdd'
  579. TYPE_400GE_OSFP = '400gbase-x-osfp'
  580. # Wireless
  581. TYPE_80211A = 'ieee802.11a'
  582. TYPE_80211G = 'ieee802.11g'
  583. TYPE_80211N = 'ieee802.11n'
  584. TYPE_80211AC = 'ieee802.11ac'
  585. TYPE_80211AD = 'ieee802.11ad'
  586. TYPE_80211AX = 'ieee802.11ax'
  587. # Cellular
  588. TYPE_GSM = 'gsm'
  589. TYPE_CDMA = 'cdma'
  590. TYPE_LTE = 'lte'
  591. # SONET
  592. TYPE_SONET_OC3 = 'sonet-oc3'
  593. TYPE_SONET_OC12 = 'sonet-oc12'
  594. TYPE_SONET_OC48 = 'sonet-oc48'
  595. TYPE_SONET_OC192 = 'sonet-oc192'
  596. TYPE_SONET_OC768 = 'sonet-oc768'
  597. TYPE_SONET_OC1920 = 'sonet-oc1920'
  598. TYPE_SONET_OC3840 = 'sonet-oc3840'
  599. # Fibrechannel
  600. TYPE_1GFC_SFP = '1gfc-sfp'
  601. TYPE_2GFC_SFP = '2gfc-sfp'
  602. TYPE_4GFC_SFP = '4gfc-sfp'
  603. TYPE_8GFC_SFP_PLUS = '8gfc-sfpp'
  604. TYPE_16GFC_SFP_PLUS = '16gfc-sfpp'
  605. TYPE_32GFC_SFP28 = '32gfc-sfp28'
  606. TYPE_128GFC_QSFP28 = '128gfc-sfp28'
  607. # InfiniBand
  608. TYPE_INFINIBAND_SDR = 'infiniband-sdr'
  609. TYPE_INFINIBAND_DDR = 'infiniband-ddr'
  610. TYPE_INFINIBAND_QDR = 'infiniband-qdr'
  611. TYPE_INFINIBAND_FDR10 = 'infiniband-fdr10'
  612. TYPE_INFINIBAND_FDR = 'infiniband-fdr'
  613. TYPE_INFINIBAND_EDR = 'infiniband-edr'
  614. TYPE_INFINIBAND_HDR = 'infiniband-hdr'
  615. TYPE_INFINIBAND_NDR = 'infiniband-ndr'
  616. TYPE_INFINIBAND_XDR = 'infiniband-xdr'
  617. # Serial
  618. TYPE_T1 = 't1'
  619. TYPE_E1 = 'e1'
  620. TYPE_T3 = 't3'
  621. TYPE_E3 = 'e3'
  622. # Stacking
  623. TYPE_STACKWISE = 'cisco-stackwise'
  624. TYPE_STACKWISE_PLUS = 'cisco-stackwise-plus'
  625. TYPE_FLEXSTACK = 'cisco-flexstack'
  626. TYPE_FLEXSTACK_PLUS = 'cisco-flexstack-plus'
  627. TYPE_JUNIPER_VCP = 'juniper-vcp'
  628. TYPE_SUMMITSTACK = 'extreme-summitstack'
  629. TYPE_SUMMITSTACK128 = 'extreme-summitstack-128'
  630. TYPE_SUMMITSTACK256 = 'extreme-summitstack-256'
  631. TYPE_SUMMITSTACK512 = 'extreme-summitstack-512'
  632. # Other
  633. TYPE_OTHER = 'other'
  634. CHOICES = (
  635. (
  636. 'Virtual interfaces',
  637. (
  638. (TYPE_VIRTUAL, 'Virtual'),
  639. (TYPE_LAG, 'Link Aggregation Group (LAG)'),
  640. ),
  641. ),
  642. (
  643. 'Ethernet (fixed)',
  644. (
  645. (TYPE_100ME_FIXED, '100BASE-TX (10/100ME)'),
  646. (TYPE_1GE_FIXED, '1000BASE-T (1GE)'),
  647. (TYPE_2GE_FIXED, '2.5GBASE-T (2.5GE)'),
  648. (TYPE_5GE_FIXED, '5GBASE-T (5GE)'),
  649. (TYPE_10GE_FIXED, '10GBASE-T (10GE)'),
  650. (TYPE_10GE_CX4, '10GBASE-CX4 (10GE)'),
  651. )
  652. ),
  653. (
  654. 'Ethernet (modular)',
  655. (
  656. (TYPE_1GE_GBIC, 'GBIC (1GE)'),
  657. (TYPE_1GE_SFP, 'SFP (1GE)'),
  658. (TYPE_10GE_SFP_PLUS, 'SFP+ (10GE)'),
  659. (TYPE_10GE_XFP, 'XFP (10GE)'),
  660. (TYPE_10GE_XENPAK, 'XENPAK (10GE)'),
  661. (TYPE_10GE_X2, 'X2 (10GE)'),
  662. (TYPE_25GE_SFP28, 'SFP28 (25GE)'),
  663. (TYPE_40GE_QSFP_PLUS, 'QSFP+ (40GE)'),
  664. (TYPE_50GE_QSFP28, 'QSFP28 (50GE)'),
  665. (TYPE_100GE_CFP, 'CFP (100GE)'),
  666. (TYPE_100GE_CFP2, 'CFP2 (100GE)'),
  667. (TYPE_200GE_CFP2, 'CFP2 (200GE)'),
  668. (TYPE_100GE_CFP4, 'CFP4 (100GE)'),
  669. (TYPE_100GE_CPAK, 'Cisco CPAK (100GE)'),
  670. (TYPE_100GE_QSFP28, 'QSFP28 (100GE)'),
  671. (TYPE_200GE_QSFP56, 'QSFP56 (200GE)'),
  672. (TYPE_400GE_QSFP_DD, 'QSFP-DD (400GE)'),
  673. (TYPE_400GE_OSFP, 'OSFP (400GE)'),
  674. )
  675. ),
  676. (
  677. 'Wireless',
  678. (
  679. (TYPE_80211A, 'IEEE 802.11a'),
  680. (TYPE_80211G, 'IEEE 802.11b/g'),
  681. (TYPE_80211N, 'IEEE 802.11n'),
  682. (TYPE_80211AC, 'IEEE 802.11ac'),
  683. (TYPE_80211AD, 'IEEE 802.11ad'),
  684. (TYPE_80211AX, 'IEEE 802.11ax'),
  685. )
  686. ),
  687. (
  688. 'Cellular',
  689. (
  690. (TYPE_GSM, 'GSM'),
  691. (TYPE_CDMA, 'CDMA'),
  692. (TYPE_LTE, 'LTE'),
  693. )
  694. ),
  695. (
  696. 'SONET',
  697. (
  698. (TYPE_SONET_OC3, 'OC-3/STM-1'),
  699. (TYPE_SONET_OC12, 'OC-12/STM-4'),
  700. (TYPE_SONET_OC48, 'OC-48/STM-16'),
  701. (TYPE_SONET_OC192, 'OC-192/STM-64'),
  702. (TYPE_SONET_OC768, 'OC-768/STM-256'),
  703. (TYPE_SONET_OC1920, 'OC-1920/STM-640'),
  704. (TYPE_SONET_OC3840, 'OC-3840/STM-1234'),
  705. )
  706. ),
  707. (
  708. 'FibreChannel',
  709. (
  710. (TYPE_1GFC_SFP, 'SFP (1GFC)'),
  711. (TYPE_2GFC_SFP, 'SFP (2GFC)'),
  712. (TYPE_4GFC_SFP, 'SFP (4GFC)'),
  713. (TYPE_8GFC_SFP_PLUS, 'SFP+ (8GFC)'),
  714. (TYPE_16GFC_SFP_PLUS, 'SFP+ (16GFC)'),
  715. (TYPE_32GFC_SFP28, 'SFP28 (32GFC)'),
  716. (TYPE_128GFC_QSFP28, 'QSFP28 (128GFC)'),
  717. )
  718. ),
  719. (
  720. 'InfiniBand',
  721. (
  722. (TYPE_INFINIBAND_SDR, 'SDR (2 Gbps)'),
  723. (TYPE_INFINIBAND_DDR, 'DDR (4 Gbps)'),
  724. (TYPE_INFINIBAND_QDR, 'QDR (8 Gbps)'),
  725. (TYPE_INFINIBAND_FDR10, 'FDR10 (10 Gbps)'),
  726. (TYPE_INFINIBAND_FDR, 'FDR (13.5 Gbps)'),
  727. (TYPE_INFINIBAND_EDR, 'EDR (25 Gbps)'),
  728. (TYPE_INFINIBAND_HDR, 'HDR (50 Gbps)'),
  729. (TYPE_INFINIBAND_NDR, 'NDR (100 Gbps)'),
  730. (TYPE_INFINIBAND_XDR, 'XDR (250 Gbps)'),
  731. )
  732. ),
  733. (
  734. 'Serial',
  735. (
  736. (TYPE_T1, 'T1 (1.544 Mbps)'),
  737. (TYPE_E1, 'E1 (2.048 Mbps)'),
  738. (TYPE_T3, 'T3 (45 Mbps)'),
  739. (TYPE_E3, 'E3 (34 Mbps)'),
  740. )
  741. ),
  742. (
  743. 'Stacking',
  744. (
  745. (TYPE_STACKWISE, 'Cisco StackWise'),
  746. (TYPE_STACKWISE_PLUS, 'Cisco StackWise Plus'),
  747. (TYPE_FLEXSTACK, 'Cisco FlexStack'),
  748. (TYPE_FLEXSTACK_PLUS, 'Cisco FlexStack Plus'),
  749. (TYPE_JUNIPER_VCP, 'Juniper VCP'),
  750. (TYPE_SUMMITSTACK, 'Extreme SummitStack'),
  751. (TYPE_SUMMITSTACK128, 'Extreme SummitStack-128'),
  752. (TYPE_SUMMITSTACK256, 'Extreme SummitStack-256'),
  753. (TYPE_SUMMITSTACK512, 'Extreme SummitStack-512'),
  754. )
  755. ),
  756. (
  757. 'Other',
  758. (
  759. (TYPE_OTHER, 'Other'),
  760. )
  761. ),
  762. )
  763. LEGACY_MAP = {
  764. TYPE_VIRTUAL: 0,
  765. TYPE_LAG: 200,
  766. TYPE_100ME_FIXED: 800,
  767. TYPE_1GE_FIXED: 1000,
  768. TYPE_1GE_GBIC: 1050,
  769. TYPE_1GE_SFP: 1100,
  770. TYPE_2GE_FIXED: 1120,
  771. TYPE_5GE_FIXED: 1130,
  772. TYPE_10GE_FIXED: 1150,
  773. TYPE_10GE_CX4: 1170,
  774. TYPE_10GE_SFP_PLUS: 1200,
  775. TYPE_10GE_XFP: 1300,
  776. TYPE_10GE_XENPAK: 1310,
  777. TYPE_10GE_X2: 1320,
  778. TYPE_25GE_SFP28: 1350,
  779. TYPE_40GE_QSFP_PLUS: 1400,
  780. TYPE_50GE_QSFP28: 1420,
  781. TYPE_100GE_CFP: 1500,
  782. TYPE_100GE_CFP2: 1510,
  783. TYPE_100GE_CFP4: 1520,
  784. TYPE_100GE_CPAK: 1550,
  785. TYPE_100GE_QSFP28: 1600,
  786. TYPE_200GE_CFP2: 1650,
  787. TYPE_200GE_QSFP56: 1700,
  788. TYPE_400GE_QSFP_DD: 1750,
  789. TYPE_400GE_OSFP: 1800,
  790. TYPE_80211A: 2600,
  791. TYPE_80211G: 2610,
  792. TYPE_80211N: 2620,
  793. TYPE_80211AC: 2630,
  794. TYPE_80211AD: 2640,
  795. TYPE_GSM: 2810,
  796. TYPE_CDMA: 2820,
  797. TYPE_LTE: 2830,
  798. TYPE_SONET_OC3: 6100,
  799. TYPE_SONET_OC12: 6200,
  800. TYPE_SONET_OC48: 6300,
  801. TYPE_SONET_OC192: 6400,
  802. TYPE_SONET_OC768: 6500,
  803. TYPE_SONET_OC1920: 6600,
  804. TYPE_SONET_OC3840: 6700,
  805. TYPE_1GFC_SFP: 3010,
  806. TYPE_2GFC_SFP: 3020,
  807. TYPE_4GFC_SFP: 3040,
  808. TYPE_8GFC_SFP_PLUS: 3080,
  809. TYPE_16GFC_SFP_PLUS: 3160,
  810. TYPE_32GFC_SFP28: 3320,
  811. TYPE_128GFC_QSFP28: 3400,
  812. TYPE_INFINIBAND_SDR: 7010,
  813. TYPE_INFINIBAND_DDR: 7020,
  814. TYPE_INFINIBAND_QDR: 7030,
  815. TYPE_INFINIBAND_FDR10: 7040,
  816. TYPE_INFINIBAND_FDR: 7050,
  817. TYPE_INFINIBAND_EDR: 7060,
  818. TYPE_INFINIBAND_HDR: 7070,
  819. TYPE_INFINIBAND_NDR: 7080,
  820. TYPE_INFINIBAND_XDR: 7090,
  821. TYPE_T1: 4000,
  822. TYPE_E1: 4010,
  823. TYPE_T3: 4040,
  824. TYPE_E3: 4050,
  825. TYPE_STACKWISE: 5000,
  826. TYPE_STACKWISE_PLUS: 5050,
  827. TYPE_FLEXSTACK: 5100,
  828. TYPE_FLEXSTACK_PLUS: 5150,
  829. TYPE_JUNIPER_VCP: 5200,
  830. TYPE_SUMMITSTACK: 5300,
  831. TYPE_SUMMITSTACK128: 5310,
  832. TYPE_SUMMITSTACK256: 5320,
  833. TYPE_SUMMITSTACK512: 5330,
  834. TYPE_OTHER: 32767,
  835. }
  836. class InterfaceModeChoices(ChoiceSet):
  837. MODE_ACCESS = 'access'
  838. MODE_TAGGED = 'tagged'
  839. MODE_TAGGED_ALL = 'tagged-all'
  840. CHOICES = (
  841. (MODE_ACCESS, 'Access'),
  842. (MODE_TAGGED, 'Tagged'),
  843. (MODE_TAGGED_ALL, 'Tagged (All)'),
  844. )
  845. LEGACY_MAP = {
  846. MODE_ACCESS: 100,
  847. MODE_TAGGED: 200,
  848. MODE_TAGGED_ALL: 300,
  849. }
  850. #
  851. # FrontPorts/RearPorts
  852. #
  853. class PortTypeChoices(ChoiceSet):
  854. TYPE_8P8C = '8p8c'
  855. TYPE_110_PUNCH = '110-punch'
  856. TYPE_BNC = 'bnc'
  857. TYPE_MRJ21 = 'mrj21'
  858. TYPE_ST = 'st'
  859. TYPE_SC = 'sc'
  860. TYPE_SC_APC = 'sc-apc'
  861. TYPE_FC = 'fc'
  862. TYPE_LC = 'lc'
  863. TYPE_LC_APC = 'lc-apc'
  864. TYPE_MTRJ = 'mtrj'
  865. TYPE_MPO = 'mpo'
  866. TYPE_LSH = 'lsh'
  867. TYPE_LSH_APC = 'lsh-apc'
  868. CHOICES = (
  869. (
  870. 'Copper',
  871. (
  872. (TYPE_8P8C, '8P8C'),
  873. (TYPE_110_PUNCH, '110 Punch'),
  874. (TYPE_BNC, 'BNC'),
  875. (TYPE_MRJ21, 'MRJ21'),
  876. ),
  877. ),
  878. (
  879. 'Fiber Optic',
  880. (
  881. (TYPE_FC, 'FC'),
  882. (TYPE_LC, 'LC'),
  883. (TYPE_LC_APC, 'LC/APC'),
  884. (TYPE_LSH, 'LSH'),
  885. (TYPE_LSH_APC, 'LSH/APC'),
  886. (TYPE_MPO, 'MPO'),
  887. (TYPE_MTRJ, 'MTRJ'),
  888. (TYPE_SC, 'SC'),
  889. (TYPE_SC_APC, 'SC/APC'),
  890. (TYPE_ST, 'ST'),
  891. )
  892. )
  893. )
  894. LEGACY_MAP = {
  895. TYPE_8P8C: 1000,
  896. TYPE_110_PUNCH: 1100,
  897. TYPE_BNC: 1200,
  898. TYPE_ST: 2000,
  899. TYPE_SC: 2100,
  900. TYPE_SC_APC: 2110,
  901. TYPE_FC: 2200,
  902. TYPE_LC: 2300,
  903. TYPE_LC_APC: 2310,
  904. TYPE_MTRJ: 2400,
  905. TYPE_MPO: 2500,
  906. TYPE_LSH: 2600,
  907. TYPE_LSH_APC: 2610,
  908. }
  909. #
  910. # Cables
  911. #
  912. class CableTypeChoices(ChoiceSet):
  913. TYPE_CAT3 = 'cat3'
  914. TYPE_CAT5 = 'cat5'
  915. TYPE_CAT5E = 'cat5e'
  916. TYPE_CAT6 = 'cat6'
  917. TYPE_CAT6A = 'cat6a'
  918. TYPE_CAT7 = 'cat7'
  919. TYPE_DAC_ACTIVE = 'dac-active'
  920. TYPE_DAC_PASSIVE = 'dac-passive'
  921. TYPE_MRJ21_TRUNK = 'mrj21-trunk'
  922. TYPE_COAXIAL = 'coaxial'
  923. TYPE_MMF = 'mmf'
  924. TYPE_MMF_OM1 = 'mmf-om1'
  925. TYPE_MMF_OM2 = 'mmf-om2'
  926. TYPE_MMF_OM3 = 'mmf-om3'
  927. TYPE_MMF_OM4 = 'mmf-om4'
  928. TYPE_SMF = 'smf'
  929. TYPE_SMF_OS1 = 'smf-os1'
  930. TYPE_SMF_OS2 = 'smf-os2'
  931. TYPE_AOC = 'aoc'
  932. TYPE_POWER = 'power'
  933. CHOICES = (
  934. (
  935. 'Copper', (
  936. (TYPE_CAT3, 'CAT3'),
  937. (TYPE_CAT5, 'CAT5'),
  938. (TYPE_CAT5E, 'CAT5e'),
  939. (TYPE_CAT6, 'CAT6'),
  940. (TYPE_CAT6A, 'CAT6a'),
  941. (TYPE_CAT7, 'CAT7'),
  942. (TYPE_DAC_ACTIVE, 'Direct Attach Copper (Active)'),
  943. (TYPE_DAC_PASSIVE, 'Direct Attach Copper (Passive)'),
  944. (TYPE_MRJ21_TRUNK, 'MRJ21 Trunk'),
  945. (TYPE_COAXIAL, 'Coaxial'),
  946. ),
  947. ),
  948. (
  949. 'Fiber', (
  950. (TYPE_MMF, 'Multimode Fiber'),
  951. (TYPE_MMF_OM1, 'Multimode Fiber (OM1)'),
  952. (TYPE_MMF_OM2, 'Multimode Fiber (OM2)'),
  953. (TYPE_MMF_OM3, 'Multimode Fiber (OM3)'),
  954. (TYPE_MMF_OM4, 'Multimode Fiber (OM4)'),
  955. (TYPE_SMF, 'Singlemode Fiber'),
  956. (TYPE_SMF_OS1, 'Singlemode Fiber (OS1)'),
  957. (TYPE_SMF_OS2, 'Singlemode Fiber (OS2)'),
  958. (TYPE_AOC, 'Active Optical Cabling (AOC)'),
  959. ),
  960. ),
  961. (TYPE_POWER, 'Power'),
  962. )
  963. LEGACY_MAP = {
  964. TYPE_CAT3: 1300,
  965. TYPE_CAT5: 1500,
  966. TYPE_CAT5E: 1510,
  967. TYPE_CAT6: 1600,
  968. TYPE_CAT6A: 1610,
  969. TYPE_CAT7: 1700,
  970. TYPE_DAC_ACTIVE: 1800,
  971. TYPE_DAC_PASSIVE: 1810,
  972. TYPE_COAXIAL: 1900,
  973. TYPE_MMF: 3000,
  974. TYPE_MMF_OM1: 3010,
  975. TYPE_MMF_OM2: 3020,
  976. TYPE_MMF_OM3: 3030,
  977. TYPE_MMF_OM4: 3040,
  978. TYPE_SMF: 3500,
  979. TYPE_SMF_OS1: 3510,
  980. TYPE_SMF_OS2: 3520,
  981. TYPE_AOC: 3800,
  982. TYPE_POWER: 5000,
  983. }
  984. class CableStatusChoices(ChoiceSet):
  985. STATUS_CONNECTED = 'connected'
  986. STATUS_PLANNED = 'planned'
  987. STATUS_DECOMMISSIONING = 'decommissioning'
  988. CHOICES = (
  989. (STATUS_CONNECTED, 'Connected'),
  990. (STATUS_PLANNED, 'Planned'),
  991. (STATUS_DECOMMISSIONING, 'Decommissioning'),
  992. )
  993. LEGACY_MAP = {
  994. STATUS_CONNECTED: True,
  995. STATUS_PLANNED: False,
  996. }
  997. class CableLengthUnitChoices(ChoiceSet):
  998. UNIT_METER = 'm'
  999. UNIT_CENTIMETER = 'cm'
  1000. UNIT_FOOT = 'ft'
  1001. UNIT_INCH = 'in'
  1002. CHOICES = (
  1003. (UNIT_METER, 'Meters'),
  1004. (UNIT_CENTIMETER, 'Centimeters'),
  1005. (UNIT_FOOT, 'Feet'),
  1006. (UNIT_INCH, 'Inches'),
  1007. )
  1008. LEGACY_MAP = {
  1009. UNIT_METER: 1200,
  1010. UNIT_CENTIMETER: 1100,
  1011. UNIT_FOOT: 2100,
  1012. UNIT_INCH: 2000,
  1013. }
  1014. #
  1015. # PowerFeeds
  1016. #
  1017. class PowerFeedStatusChoices(ChoiceSet):
  1018. STATUS_OFFLINE = 'offline'
  1019. STATUS_ACTIVE = 'active'
  1020. STATUS_PLANNED = 'planned'
  1021. STATUS_FAILED = 'failed'
  1022. CHOICES = (
  1023. (STATUS_OFFLINE, 'Offline'),
  1024. (STATUS_ACTIVE, 'Active'),
  1025. (STATUS_PLANNED, 'Planned'),
  1026. (STATUS_FAILED, 'Failed'),
  1027. )
  1028. LEGACY_MAP = {
  1029. STATUS_OFFLINE: 0,
  1030. STATUS_ACTIVE: 1,
  1031. STATUS_PLANNED: 2,
  1032. STATUS_FAILED: 4,
  1033. }
  1034. class PowerFeedTypeChoices(ChoiceSet):
  1035. TYPE_PRIMARY = 'primary'
  1036. TYPE_REDUNDANT = 'redundant'
  1037. CHOICES = (
  1038. (TYPE_PRIMARY, 'Primary'),
  1039. (TYPE_REDUNDANT, 'Redundant'),
  1040. )
  1041. LEGACY_MAP = {
  1042. TYPE_PRIMARY: 1,
  1043. TYPE_REDUNDANT: 2,
  1044. }
  1045. class PowerFeedSupplyChoices(ChoiceSet):
  1046. SUPPLY_AC = 'ac'
  1047. SUPPLY_DC = 'dc'
  1048. CHOICES = (
  1049. (SUPPLY_AC, 'AC'),
  1050. (SUPPLY_DC, 'DC'),
  1051. )
  1052. LEGACY_MAP = {
  1053. SUPPLY_AC: 1,
  1054. SUPPLY_DC: 2,
  1055. }
  1056. class PowerFeedPhaseChoices(ChoiceSet):
  1057. PHASE_SINGLE = 'single-phase'
  1058. PHASE_3PHASE = 'three-phase'
  1059. CHOICES = (
  1060. (PHASE_SINGLE, 'Single phase'),
  1061. (PHASE_3PHASE, 'Three-phase'),
  1062. )
  1063. LEGACY_MAP = {
  1064. PHASE_SINGLE: 1,
  1065. PHASE_3PHASE: 3,
  1066. }