choices.py 29 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096
  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_515P = 'nema-5-15p'
  208. TYPE_NEMA_520P = 'nema-5-20p'
  209. TYPE_NEMA_530P = 'nema-5-30p'
  210. TYPE_NEMA_550P = 'nema-5-50p'
  211. TYPE_NEMA_615P = 'nema-6-15p'
  212. TYPE_NEMA_620P = 'nema-6-20p'
  213. TYPE_NEMA_630P = 'nema-6-30p'
  214. TYPE_NEMA_650P = 'nema-6-50p'
  215. # NEMA locking
  216. TYPE_NEMA_L515P = 'nema-l5-15p'
  217. TYPE_NEMA_L520P = 'nema-l5-20p'
  218. TYPE_NEMA_L530P = 'nema-l5-30p'
  219. TYPE_NEMA_L615P = 'nema-l5-50p'
  220. TYPE_NEMA_L620P = 'nema-l6-20p'
  221. TYPE_NEMA_L630P = 'nema-l6-30p'
  222. TYPE_NEMA_L650P = 'nema-l6-50p'
  223. # California style
  224. TYPE_CS6361C = 'cs6361c'
  225. TYPE_CS6365C = 'cs6365c'
  226. TYPE_CS8165C = 'cs8165c'
  227. TYPE_CS8265C = 'cs8265c'
  228. TYPE_CS8365C = 'cs8365c'
  229. TYPE_CS8465C = 'cs8465c'
  230. # ITA/international
  231. TYPE_ITA_E = 'ita-e'
  232. TYPE_ITA_F = 'ita-f'
  233. TYPE_ITA_EF = 'ita-ef'
  234. TYPE_ITA_G = 'ita-g'
  235. TYPE_ITA_H = 'ita-h'
  236. TYPE_ITA_I = 'ita-i'
  237. TYPE_ITA_J = 'ita-j'
  238. TYPE_ITA_K = 'ita-k'
  239. TYPE_ITA_L = 'ita-l'
  240. TYPE_ITA_M = 'ita-m'
  241. TYPE_ITA_N = 'ita-n'
  242. TYPE_ITA_O = 'ita-o'
  243. CHOICES = (
  244. ('IEC 60320', (
  245. (TYPE_IEC_C6, 'C6'),
  246. (TYPE_IEC_C8, 'C8'),
  247. (TYPE_IEC_C14, 'C14'),
  248. (TYPE_IEC_C16, 'C16'),
  249. (TYPE_IEC_C20, 'C20'),
  250. )),
  251. ('IEC 60309', (
  252. (TYPE_IEC_PNE4H, 'P+N+E 4H'),
  253. (TYPE_IEC_PNE6H, 'P+N+E 6H'),
  254. (TYPE_IEC_PNE9H, 'P+N+E 9H'),
  255. (TYPE_IEC_2PE4H, '2P+E 4H'),
  256. (TYPE_IEC_2PE6H, '2P+E 6H'),
  257. (TYPE_IEC_2PE9H, '2P+E 9H'),
  258. (TYPE_IEC_3PE4H, '3P+E 4H'),
  259. (TYPE_IEC_3PE6H, '3P+E 6H'),
  260. (TYPE_IEC_3PE9H, '3P+E 9H'),
  261. (TYPE_IEC_3PNE4H, '3P+N+E 4H'),
  262. (TYPE_IEC_3PNE6H, '3P+N+E 6H'),
  263. (TYPE_IEC_3PNE9H, '3P+N+E 9H'),
  264. )),
  265. ('NEMA (Non-locking)', (
  266. (TYPE_NEMA_515P, 'NEMA 5-15P'),
  267. (TYPE_NEMA_520P, 'NEMA 5-20P'),
  268. (TYPE_NEMA_530P, 'NEMA 5-30P'),
  269. (TYPE_NEMA_550P, 'NEMA 5-50P'),
  270. (TYPE_NEMA_615P, 'NEMA 6-15P'),
  271. (TYPE_NEMA_620P, 'NEMA 6-20P'),
  272. (TYPE_NEMA_630P, 'NEMA 6-30P'),
  273. (TYPE_NEMA_650P, 'NEMA 6-50P'),
  274. )),
  275. ('NEMA (Locking)', (
  276. (TYPE_NEMA_L515P, 'NEMA L5-15P'),
  277. (TYPE_NEMA_L520P, 'NEMA L5-20P'),
  278. (TYPE_NEMA_L530P, 'NEMA L5-30P'),
  279. (TYPE_NEMA_L615P, 'NEMA L6-15P'),
  280. (TYPE_NEMA_L620P, 'NEMA L6-20P'),
  281. (TYPE_NEMA_L630P, 'NEMA L6-30P'),
  282. (TYPE_NEMA_L650P, 'NEMA L6-50P'),
  283. )),
  284. ('California Style', (
  285. (TYPE_CS6361C, 'CS6361C'),
  286. (TYPE_CS6365C, 'CS6365C'),
  287. (TYPE_CS8165C, 'CS8165C'),
  288. (TYPE_CS8265C, 'CS8265C'),
  289. (TYPE_CS8365C, 'CS8365C'),
  290. (TYPE_CS8465C, 'CS8465C'),
  291. )),
  292. ('International/ITA', (
  293. (TYPE_ITA_E, 'ITA Type E (CEE 7/5)'),
  294. (TYPE_ITA_F, 'ITA Type F (CEE 7/4)'),
  295. (TYPE_ITA_EF, 'ITA Type E/F (CEE 7/7)'),
  296. (TYPE_ITA_G, 'ITA Type G (BS 1363)'),
  297. (TYPE_ITA_H, 'ITA Type H'),
  298. (TYPE_ITA_I, 'ITA Type I'),
  299. (TYPE_ITA_J, 'ITA Type J'),
  300. (TYPE_ITA_K, 'ITA Type K'),
  301. (TYPE_ITA_L, 'ITA Type L (CEI 23-50)'),
  302. (TYPE_ITA_M, 'ITA Type M (BS 546)'),
  303. (TYPE_ITA_N, 'ITA Type N'),
  304. (TYPE_ITA_O, 'ITA Type O'),
  305. )),
  306. )
  307. #
  308. # PowerOutlets
  309. #
  310. class PowerOutletTypeChoices(ChoiceSet):
  311. # IEC 60320
  312. TYPE_IEC_C5 = 'iec-60320-c5'
  313. TYPE_IEC_C7 = 'iec-60320-c7'
  314. TYPE_IEC_C13 = 'iec-60320-c13'
  315. TYPE_IEC_C15 = 'iec-60320-c15'
  316. TYPE_IEC_C19 = 'iec-60320-c19'
  317. # IEC 60309
  318. TYPE_IEC_PNE4H = 'iec-60309-p-n-e-4h'
  319. TYPE_IEC_PNE6H = 'iec-60309-p-n-e-6h'
  320. TYPE_IEC_PNE9H = 'iec-60309-p-n-e-9h'
  321. TYPE_IEC_2PE4H = 'iec-60309-2p-e-4h'
  322. TYPE_IEC_2PE6H = 'iec-60309-2p-e-6h'
  323. TYPE_IEC_2PE9H = 'iec-60309-2p-e-9h'
  324. TYPE_IEC_3PE4H = 'iec-60309-3p-e-4h'
  325. TYPE_IEC_3PE6H = 'iec-60309-3p-e-6h'
  326. TYPE_IEC_3PE9H = 'iec-60309-3p-e-9h'
  327. TYPE_IEC_3PNE4H = 'iec-60309-3p-n-e-4h'
  328. TYPE_IEC_3PNE6H = 'iec-60309-3p-n-e-6h'
  329. TYPE_IEC_3PNE9H = 'iec-60309-3p-n-e-9h'
  330. # NEMA non-locking
  331. TYPE_NEMA_515R = 'nema-5-15r'
  332. TYPE_NEMA_520R = 'nema-5-20r'
  333. TYPE_NEMA_530R = 'nema-5-30r'
  334. TYPE_NEMA_550R = 'nema-5-50r'
  335. TYPE_NEMA_615R = 'nema-6-15r'
  336. TYPE_NEMA_620R = 'nema-6-20r'
  337. TYPE_NEMA_630R = 'nema-6-30r'
  338. TYPE_NEMA_650R = 'nema-6-50r'
  339. # NEMA locking
  340. TYPE_NEMA_L515R = 'nema-l5-15r'
  341. TYPE_NEMA_L520R = 'nema-l5-20r'
  342. TYPE_NEMA_L530R = 'nema-l5-30r'
  343. TYPE_NEMA_L615R = 'nema-l5-50r'
  344. TYPE_NEMA_L620R = 'nema-l6-20r'
  345. TYPE_NEMA_L630R = 'nema-l6-30r'
  346. TYPE_NEMA_L650R = 'nema-l6-50r'
  347. # California style
  348. TYPE_CS6360C = 'CS6360C'
  349. TYPE_CS6364C = 'CS6364C'
  350. TYPE_CS8164C = 'CS8164C'
  351. TYPE_CS8264C = 'CS8264C'
  352. TYPE_CS8364C = 'CS8364C'
  353. TYPE_CS8464C = 'CS8464C'
  354. # ITA/international
  355. TYPE_ITA_E = 'ita-e'
  356. TYPE_ITA_F = 'ita-f'
  357. TYPE_ITA_G = 'ita-g'
  358. TYPE_ITA_H = 'ita-h'
  359. TYPE_ITA_I = 'ita-i'
  360. TYPE_ITA_J = 'ita-j'
  361. TYPE_ITA_K = 'ita-k'
  362. TYPE_ITA_L = 'ita-l'
  363. TYPE_ITA_M = 'ita-m'
  364. TYPE_ITA_N = 'ita-n'
  365. TYPE_ITA_O = 'ita-o'
  366. # Proprietary
  367. TYPE_HDOT_CX = 'hdot-cx'
  368. CHOICES = (
  369. ('IEC 60320', (
  370. (TYPE_IEC_C5, 'C5'),
  371. (TYPE_IEC_C7, 'C7'),
  372. (TYPE_IEC_C13, 'C13'),
  373. (TYPE_IEC_C15, 'C15'),
  374. (TYPE_IEC_C19, 'C19'),
  375. )),
  376. ('IEC 60309', (
  377. (TYPE_IEC_PNE4H, 'P+N+E 4H'),
  378. (TYPE_IEC_PNE6H, 'P+N+E 6H'),
  379. (TYPE_IEC_PNE9H, 'P+N+E 9H'),
  380. (TYPE_IEC_2PE4H, '2P+E 4H'),
  381. (TYPE_IEC_2PE6H, '2P+E 6H'),
  382. (TYPE_IEC_2PE9H, '2P+E 9H'),
  383. (TYPE_IEC_3PE4H, '3P+E 4H'),
  384. (TYPE_IEC_3PE6H, '3P+E 6H'),
  385. (TYPE_IEC_3PE9H, '3P+E 9H'),
  386. (TYPE_IEC_3PNE4H, '3P+N+E 4H'),
  387. (TYPE_IEC_3PNE6H, '3P+N+E 6H'),
  388. (TYPE_IEC_3PNE9H, '3P+N+E 9H'),
  389. )),
  390. ('NEMA (Non-locking)', (
  391. (TYPE_NEMA_515R, 'NEMA 5-15R'),
  392. (TYPE_NEMA_520R, 'NEMA 5-20R'),
  393. (TYPE_NEMA_530R, 'NEMA 5-30R'),
  394. (TYPE_NEMA_550R, 'NEMA 5-50R'),
  395. (TYPE_NEMA_615R, 'NEMA 6-15R'),
  396. (TYPE_NEMA_620R, 'NEMA 6-20R'),
  397. (TYPE_NEMA_630R, 'NEMA 6-30R'),
  398. (TYPE_NEMA_650R, 'NEMA 6-50R'),
  399. )),
  400. ('NEMA (Locking)', (
  401. (TYPE_NEMA_L515R, 'NEMA L5-15R'),
  402. (TYPE_NEMA_L520R, 'NEMA L5-20R'),
  403. (TYPE_NEMA_L530R, 'NEMA L5-30R'),
  404. (TYPE_NEMA_L615R, 'NEMA L6-15R'),
  405. (TYPE_NEMA_L620R, 'NEMA L6-20R'),
  406. (TYPE_NEMA_L630R, 'NEMA L6-30R'),
  407. (TYPE_NEMA_L650R, 'NEMA L6-50R'),
  408. )),
  409. ('California Style', (
  410. (TYPE_CS6360C, 'CS6360C'),
  411. (TYPE_CS6364C, 'CS6364C'),
  412. (TYPE_CS8164C, 'CS8164C'),
  413. (TYPE_CS8264C, 'CS8264C'),
  414. (TYPE_CS8364C, 'CS8364C'),
  415. (TYPE_CS8464C, 'CS8464C'),
  416. )),
  417. ('ITA/International', (
  418. (TYPE_ITA_E, 'ITA Type E (CEE7/5)'),
  419. (TYPE_ITA_F, 'ITA Type F (CEE7/3)'),
  420. (TYPE_ITA_G, 'ITA Type G (BS 1363)'),
  421. (TYPE_ITA_H, 'ITA Type H'),
  422. (TYPE_ITA_I, 'ITA Type I'),
  423. (TYPE_ITA_J, 'ITA Type J'),
  424. (TYPE_ITA_K, 'ITA Type K'),
  425. (TYPE_ITA_L, 'ITA Type L (CEI 23-50)'),
  426. (TYPE_ITA_M, 'ITA Type M (BS 546)'),
  427. (TYPE_ITA_N, 'ITA Type N'),
  428. (TYPE_ITA_O, 'ITA Type O'),
  429. )),
  430. ('Proprietary', (
  431. (TYPE_HDOT_CX, 'HDOT Cx'),
  432. )),
  433. )
  434. class PowerOutletFeedLegChoices(ChoiceSet):
  435. FEED_LEG_A = 'A'
  436. FEED_LEG_B = 'B'
  437. FEED_LEG_C = 'C'
  438. CHOICES = (
  439. (FEED_LEG_A, 'A'),
  440. (FEED_LEG_B, 'B'),
  441. (FEED_LEG_C, 'C'),
  442. )
  443. LEGACY_MAP = {
  444. FEED_LEG_A: 1,
  445. FEED_LEG_B: 2,
  446. FEED_LEG_C: 3,
  447. }
  448. #
  449. # Interfaces
  450. #
  451. class InterfaceTypeChoices(ChoiceSet):
  452. # Virtual
  453. TYPE_VIRTUAL = 'virtual'
  454. TYPE_LAG = 'lag'
  455. # Ethernet
  456. TYPE_100ME_FIXED = '100base-tx'
  457. TYPE_1GE_FIXED = '1000base-t'
  458. TYPE_1GE_GBIC = '1000base-x-gbic'
  459. TYPE_1GE_SFP = '1000base-x-sfp'
  460. TYPE_2GE_FIXED = '2.5gbase-t'
  461. TYPE_5GE_FIXED = '5gbase-t'
  462. TYPE_10GE_FIXED = '10gbase-t'
  463. TYPE_10GE_CX4 = '10gbase-cx4'
  464. TYPE_10GE_SFP_PLUS = '10gbase-x-sfpp'
  465. TYPE_10GE_XFP = '10gbase-x-xfp'
  466. TYPE_10GE_XENPAK = '10gbase-x-xenpak'
  467. TYPE_10GE_X2 = '10gbase-x-x2'
  468. TYPE_25GE_SFP28 = '25gbase-x-sfp28'
  469. TYPE_40GE_QSFP_PLUS = '40gbase-x-qsfpp'
  470. TYPE_50GE_QSFP28 = '50gbase-x-sfp28'
  471. TYPE_100GE_CFP = '100gbase-x-cfp'
  472. TYPE_100GE_CFP2 = '100gbase-x-cfp2'
  473. TYPE_100GE_CFP4 = '100gbase-x-cfp4'
  474. TYPE_100GE_CPAK = '100gbase-x-cpak'
  475. TYPE_100GE_QSFP28 = '100gbase-x-qsfp28'
  476. TYPE_200GE_CFP2 = '200gbase-x-cfp2'
  477. TYPE_200GE_QSFP56 = '200gbase-x-qsfp56'
  478. TYPE_400GE_QSFP_DD = '400gbase-x-qsfpdd'
  479. TYPE_400GE_OSFP = '400gbase-x-osfp'
  480. # Wireless
  481. TYPE_80211A = 'ieee802.11a'
  482. TYPE_80211G = 'ieee802.11g'
  483. TYPE_80211N = 'ieee802.11n'
  484. TYPE_80211AC = 'ieee802.11ac'
  485. TYPE_80211AD = 'ieee802.11ad'
  486. TYPE_80211AX = 'ieee802.11ax'
  487. # Cellular
  488. TYPE_GSM = 'gsm'
  489. TYPE_CDMA = 'cdma'
  490. TYPE_LTE = 'lte'
  491. # SONET
  492. TYPE_SONET_OC3 = 'sonet-oc3'
  493. TYPE_SONET_OC12 = 'sonet-oc12'
  494. TYPE_SONET_OC48 = 'sonet-oc48'
  495. TYPE_SONET_OC192 = 'sonet-oc192'
  496. TYPE_SONET_OC768 = 'sonet-oc768'
  497. TYPE_SONET_OC1920 = 'sonet-oc1920'
  498. TYPE_SONET_OC3840 = 'sonet-oc3840'
  499. # Fibrechannel
  500. TYPE_1GFC_SFP = '1gfc-sfp'
  501. TYPE_2GFC_SFP = '2gfc-sfp'
  502. TYPE_4GFC_SFP = '4gfc-sfp'
  503. TYPE_8GFC_SFP_PLUS = '8gfc-sfpp'
  504. TYPE_16GFC_SFP_PLUS = '16gfc-sfpp'
  505. TYPE_32GFC_SFP28 = '32gfc-sfp28'
  506. TYPE_128GFC_QSFP28 = '128gfc-sfp28'
  507. # InfiniBand
  508. TYPE_INFINIBAND_SDR = 'infiniband-sdr'
  509. TYPE_INFINIBAND_DDR = 'infiniband-ddr'
  510. TYPE_INFINIBAND_QDR = 'infiniband-qdr'
  511. TYPE_INFINIBAND_FDR10 = 'infiniband-fdr10'
  512. TYPE_INFINIBAND_FDR = 'infiniband-fdr'
  513. TYPE_INFINIBAND_EDR = 'infiniband-edr'
  514. TYPE_INFINIBAND_HDR = 'infiniband-hdr'
  515. TYPE_INFINIBAND_NDR = 'infiniband-ndr'
  516. TYPE_INFINIBAND_XDR = 'infiniband-xdr'
  517. # Serial
  518. TYPE_T1 = 't1'
  519. TYPE_E1 = 'e1'
  520. TYPE_T3 = 't3'
  521. TYPE_E3 = 'e3'
  522. # Stacking
  523. TYPE_STACKWISE = 'cisco-stackwise'
  524. TYPE_STACKWISE_PLUS = 'cisco-stackwise-plus'
  525. TYPE_FLEXSTACK = 'cisco-flexstack'
  526. TYPE_FLEXSTACK_PLUS = 'cisco-flexstack-plus'
  527. TYPE_JUNIPER_VCP = 'juniper-vcp'
  528. TYPE_SUMMITSTACK = 'extreme-summitstack'
  529. TYPE_SUMMITSTACK128 = 'extreme-summitstack-128'
  530. TYPE_SUMMITSTACK256 = 'extreme-summitstack-256'
  531. TYPE_SUMMITSTACK512 = 'extreme-summitstack-512'
  532. # Other
  533. TYPE_OTHER = 'other'
  534. CHOICES = (
  535. (
  536. 'Virtual interfaces',
  537. (
  538. (TYPE_VIRTUAL, 'Virtual'),
  539. (TYPE_LAG, 'Link Aggregation Group (LAG)'),
  540. ),
  541. ),
  542. (
  543. 'Ethernet (fixed)',
  544. (
  545. (TYPE_100ME_FIXED, '100BASE-TX (10/100ME)'),
  546. (TYPE_1GE_FIXED, '1000BASE-T (1GE)'),
  547. (TYPE_2GE_FIXED, '2.5GBASE-T (2.5GE)'),
  548. (TYPE_5GE_FIXED, '5GBASE-T (5GE)'),
  549. (TYPE_10GE_FIXED, '10GBASE-T (10GE)'),
  550. (TYPE_10GE_CX4, '10GBASE-CX4 (10GE)'),
  551. )
  552. ),
  553. (
  554. 'Ethernet (modular)',
  555. (
  556. (TYPE_1GE_GBIC, 'GBIC (1GE)'),
  557. (TYPE_1GE_SFP, 'SFP (1GE)'),
  558. (TYPE_10GE_SFP_PLUS, 'SFP+ (10GE)'),
  559. (TYPE_10GE_XFP, 'XFP (10GE)'),
  560. (TYPE_10GE_XENPAK, 'XENPAK (10GE)'),
  561. (TYPE_10GE_X2, 'X2 (10GE)'),
  562. (TYPE_25GE_SFP28, 'SFP28 (25GE)'),
  563. (TYPE_40GE_QSFP_PLUS, 'QSFP+ (40GE)'),
  564. (TYPE_50GE_QSFP28, 'QSFP28 (50GE)'),
  565. (TYPE_100GE_CFP, 'CFP (100GE)'),
  566. (TYPE_100GE_CFP2, 'CFP2 (100GE)'),
  567. (TYPE_200GE_CFP2, 'CFP2 (200GE)'),
  568. (TYPE_100GE_CFP4, 'CFP4 (100GE)'),
  569. (TYPE_100GE_CPAK, 'Cisco CPAK (100GE)'),
  570. (TYPE_100GE_QSFP28, 'QSFP28 (100GE)'),
  571. (TYPE_200GE_QSFP56, 'QSFP56 (200GE)'),
  572. (TYPE_400GE_QSFP_DD, 'QSFP-DD (400GE)'),
  573. (TYPE_400GE_OSFP, 'OSFP (400GE)'),
  574. )
  575. ),
  576. (
  577. 'Wireless',
  578. (
  579. (TYPE_80211A, 'IEEE 802.11a'),
  580. (TYPE_80211G, 'IEEE 802.11b/g'),
  581. (TYPE_80211N, 'IEEE 802.11n'),
  582. (TYPE_80211AC, 'IEEE 802.11ac'),
  583. (TYPE_80211AD, 'IEEE 802.11ad'),
  584. (TYPE_80211AX, 'IEEE 802.11ax'),
  585. )
  586. ),
  587. (
  588. 'Cellular',
  589. (
  590. (TYPE_GSM, 'GSM'),
  591. (TYPE_CDMA, 'CDMA'),
  592. (TYPE_LTE, 'LTE'),
  593. )
  594. ),
  595. (
  596. 'SONET',
  597. (
  598. (TYPE_SONET_OC3, 'OC-3/STM-1'),
  599. (TYPE_SONET_OC12, 'OC-12/STM-4'),
  600. (TYPE_SONET_OC48, 'OC-48/STM-16'),
  601. (TYPE_SONET_OC192, 'OC-192/STM-64'),
  602. (TYPE_SONET_OC768, 'OC-768/STM-256'),
  603. (TYPE_SONET_OC1920, 'OC-1920/STM-640'),
  604. (TYPE_SONET_OC3840, 'OC-3840/STM-1234'),
  605. )
  606. ),
  607. (
  608. 'FibreChannel',
  609. (
  610. (TYPE_1GFC_SFP, 'SFP (1GFC)'),
  611. (TYPE_2GFC_SFP, 'SFP (2GFC)'),
  612. (TYPE_4GFC_SFP, 'SFP (4GFC)'),
  613. (TYPE_8GFC_SFP_PLUS, 'SFP+ (8GFC)'),
  614. (TYPE_16GFC_SFP_PLUS, 'SFP+ (16GFC)'),
  615. (TYPE_32GFC_SFP28, 'SFP28 (32GFC)'),
  616. (TYPE_128GFC_QSFP28, 'QSFP28 (128GFC)'),
  617. )
  618. ),
  619. (
  620. 'InfiniBand',
  621. (
  622. (TYPE_INFINIBAND_SDR, 'SDR (2 Gbps)'),
  623. (TYPE_INFINIBAND_DDR, 'DDR (4 Gbps)'),
  624. (TYPE_INFINIBAND_QDR, 'QDR (8 Gbps)'),
  625. (TYPE_INFINIBAND_FDR10, 'FDR10 (10 Gbps)'),
  626. (TYPE_INFINIBAND_FDR, 'FDR (13.5 Gbps)'),
  627. (TYPE_INFINIBAND_EDR, 'EDR (25 Gbps)'),
  628. (TYPE_INFINIBAND_HDR, 'HDR (50 Gbps)'),
  629. (TYPE_INFINIBAND_NDR, 'NDR (100 Gbps)'),
  630. (TYPE_INFINIBAND_XDR, 'XDR (250 Gbps)'),
  631. )
  632. ),
  633. (
  634. 'Serial',
  635. (
  636. (TYPE_T1, 'T1 (1.544 Mbps)'),
  637. (TYPE_E1, 'E1 (2.048 Mbps)'),
  638. (TYPE_T3, 'T3 (45 Mbps)'),
  639. (TYPE_E3, 'E3 (34 Mbps)'),
  640. )
  641. ),
  642. (
  643. 'Stacking',
  644. (
  645. (TYPE_STACKWISE, 'Cisco StackWise'),
  646. (TYPE_STACKWISE_PLUS, 'Cisco StackWise Plus'),
  647. (TYPE_FLEXSTACK, 'Cisco FlexStack'),
  648. (TYPE_FLEXSTACK_PLUS, 'Cisco FlexStack Plus'),
  649. (TYPE_JUNIPER_VCP, 'Juniper VCP'),
  650. (TYPE_SUMMITSTACK, 'Extreme SummitStack'),
  651. (TYPE_SUMMITSTACK128, 'Extreme SummitStack-128'),
  652. (TYPE_SUMMITSTACK256, 'Extreme SummitStack-256'),
  653. (TYPE_SUMMITSTACK512, 'Extreme SummitStack-512'),
  654. )
  655. ),
  656. (
  657. 'Other',
  658. (
  659. (TYPE_OTHER, 'Other'),
  660. )
  661. ),
  662. )
  663. LEGACY_MAP = {
  664. TYPE_VIRTUAL: 0,
  665. TYPE_LAG: 200,
  666. TYPE_100ME_FIXED: 800,
  667. TYPE_1GE_FIXED: 1000,
  668. TYPE_1GE_GBIC: 1050,
  669. TYPE_1GE_SFP: 1100,
  670. TYPE_2GE_FIXED: 1120,
  671. TYPE_5GE_FIXED: 1130,
  672. TYPE_10GE_FIXED: 1150,
  673. TYPE_10GE_CX4: 1170,
  674. TYPE_10GE_SFP_PLUS: 1200,
  675. TYPE_10GE_XFP: 1300,
  676. TYPE_10GE_XENPAK: 1310,
  677. TYPE_10GE_X2: 1320,
  678. TYPE_25GE_SFP28: 1350,
  679. TYPE_40GE_QSFP_PLUS: 1400,
  680. TYPE_50GE_QSFP28: 1420,
  681. TYPE_100GE_CFP: 1500,
  682. TYPE_100GE_CFP2: 1510,
  683. TYPE_100GE_CFP4: 1520,
  684. TYPE_100GE_CPAK: 1550,
  685. TYPE_100GE_QSFP28: 1600,
  686. TYPE_200GE_CFP2: 1650,
  687. TYPE_200GE_QSFP56: 1700,
  688. TYPE_400GE_QSFP_DD: 1750,
  689. TYPE_400GE_OSFP: 1800,
  690. TYPE_80211A: 2600,
  691. TYPE_80211G: 2610,
  692. TYPE_80211N: 2620,
  693. TYPE_80211AC: 2630,
  694. TYPE_80211AD: 2640,
  695. TYPE_GSM: 2810,
  696. TYPE_CDMA: 2820,
  697. TYPE_LTE: 2830,
  698. TYPE_SONET_OC3: 6100,
  699. TYPE_SONET_OC12: 6200,
  700. TYPE_SONET_OC48: 6300,
  701. TYPE_SONET_OC192: 6400,
  702. TYPE_SONET_OC768: 6500,
  703. TYPE_SONET_OC1920: 6600,
  704. TYPE_SONET_OC3840: 6700,
  705. TYPE_1GFC_SFP: 3010,
  706. TYPE_2GFC_SFP: 3020,
  707. TYPE_4GFC_SFP: 3040,
  708. TYPE_8GFC_SFP_PLUS: 3080,
  709. TYPE_16GFC_SFP_PLUS: 3160,
  710. TYPE_32GFC_SFP28: 3320,
  711. TYPE_128GFC_QSFP28: 3400,
  712. TYPE_INFINIBAND_SDR: 7010,
  713. TYPE_INFINIBAND_DDR: 7020,
  714. TYPE_INFINIBAND_QDR: 7030,
  715. TYPE_INFINIBAND_FDR10: 7040,
  716. TYPE_INFINIBAND_FDR: 7050,
  717. TYPE_INFINIBAND_EDR: 7060,
  718. TYPE_INFINIBAND_HDR: 7070,
  719. TYPE_INFINIBAND_NDR: 7080,
  720. TYPE_INFINIBAND_XDR: 7090,
  721. TYPE_T1: 4000,
  722. TYPE_E1: 4010,
  723. TYPE_T3: 4040,
  724. TYPE_E3: 4050,
  725. TYPE_STACKWISE: 5000,
  726. TYPE_STACKWISE_PLUS: 5050,
  727. TYPE_FLEXSTACK: 5100,
  728. TYPE_FLEXSTACK_PLUS: 5150,
  729. TYPE_JUNIPER_VCP: 5200,
  730. TYPE_SUMMITSTACK: 5300,
  731. TYPE_SUMMITSTACK128: 5310,
  732. TYPE_SUMMITSTACK256: 5320,
  733. TYPE_SUMMITSTACK512: 5330,
  734. TYPE_OTHER: 32767,
  735. }
  736. class InterfaceModeChoices(ChoiceSet):
  737. MODE_ACCESS = 'access'
  738. MODE_TAGGED = 'tagged'
  739. MODE_TAGGED_ALL = 'tagged-all'
  740. CHOICES = (
  741. (MODE_ACCESS, 'Access'),
  742. (MODE_TAGGED, 'Tagged'),
  743. (MODE_TAGGED_ALL, 'Tagged (All)'),
  744. )
  745. LEGACY_MAP = {
  746. MODE_ACCESS: 100,
  747. MODE_TAGGED: 200,
  748. MODE_TAGGED_ALL: 300,
  749. }
  750. #
  751. # FrontPorts/RearPorts
  752. #
  753. class PortTypeChoices(ChoiceSet):
  754. TYPE_8P8C = '8p8c'
  755. TYPE_110_PUNCH = '110-punch'
  756. TYPE_BNC = 'bnc'
  757. TYPE_MRJ21 = 'mrj21'
  758. TYPE_ST = 'st'
  759. TYPE_SC = 'sc'
  760. TYPE_SC_APC = 'sc-apc'
  761. TYPE_FC = 'fc'
  762. TYPE_LC = 'lc'
  763. TYPE_LC_APC = 'lc-apc'
  764. TYPE_MTRJ = 'mtrj'
  765. TYPE_MPO = 'mpo'
  766. TYPE_LSH = 'lsh'
  767. TYPE_LSH_APC = 'lsh-apc'
  768. CHOICES = (
  769. (
  770. 'Copper',
  771. (
  772. (TYPE_8P8C, '8P8C'),
  773. (TYPE_110_PUNCH, '110 Punch'),
  774. (TYPE_BNC, 'BNC'),
  775. (TYPE_MRJ21, 'MRJ21'),
  776. ),
  777. ),
  778. (
  779. 'Fiber Optic',
  780. (
  781. (TYPE_FC, 'FC'),
  782. (TYPE_LC, 'LC'),
  783. (TYPE_LC_APC, 'LC/APC'),
  784. (TYPE_LSH, 'LSH'),
  785. (TYPE_LSH_APC, 'LSH/APC'),
  786. (TYPE_MPO, 'MPO'),
  787. (TYPE_MTRJ, 'MTRJ'),
  788. (TYPE_SC, 'SC'),
  789. (TYPE_SC_APC, 'SC/APC'),
  790. (TYPE_ST, 'ST'),
  791. )
  792. )
  793. )
  794. LEGACY_MAP = {
  795. TYPE_8P8C: 1000,
  796. TYPE_110_PUNCH: 1100,
  797. TYPE_BNC: 1200,
  798. TYPE_ST: 2000,
  799. TYPE_SC: 2100,
  800. TYPE_SC_APC: 2110,
  801. TYPE_FC: 2200,
  802. TYPE_LC: 2300,
  803. TYPE_LC_APC: 2310,
  804. TYPE_MTRJ: 2400,
  805. TYPE_MPO: 2500,
  806. TYPE_LSH: 2600,
  807. TYPE_LSH_APC: 2610,
  808. }
  809. #
  810. # Cables
  811. #
  812. class CableTypeChoices(ChoiceSet):
  813. TYPE_CAT3 = 'cat3'
  814. TYPE_CAT5 = 'cat5'
  815. TYPE_CAT5E = 'cat5e'
  816. TYPE_CAT6 = 'cat6'
  817. TYPE_CAT6A = 'cat6a'
  818. TYPE_CAT7 = 'cat7'
  819. TYPE_DAC_ACTIVE = 'dac-active'
  820. TYPE_DAC_PASSIVE = 'dac-passive'
  821. TYPE_MRJ21_TRUNK = 'mrj21-trunk'
  822. TYPE_COAXIAL = 'coaxial'
  823. TYPE_MMF = 'mmf'
  824. TYPE_MMF_OM1 = 'mmf-om1'
  825. TYPE_MMF_OM2 = 'mmf-om2'
  826. TYPE_MMF_OM3 = 'mmf-om3'
  827. TYPE_MMF_OM4 = 'mmf-om4'
  828. TYPE_SMF = 'smf'
  829. TYPE_SMF_OS1 = 'smf-os1'
  830. TYPE_SMF_OS2 = 'smf-os2'
  831. TYPE_AOC = 'aoc'
  832. TYPE_POWER = 'power'
  833. CHOICES = (
  834. (
  835. 'Copper', (
  836. (TYPE_CAT3, 'CAT3'),
  837. (TYPE_CAT5, 'CAT5'),
  838. (TYPE_CAT5E, 'CAT5e'),
  839. (TYPE_CAT6, 'CAT6'),
  840. (TYPE_CAT6A, 'CAT6a'),
  841. (TYPE_CAT7, 'CAT7'),
  842. (TYPE_DAC_ACTIVE, 'Direct Attach Copper (Active)'),
  843. (TYPE_DAC_PASSIVE, 'Direct Attach Copper (Passive)'),
  844. (TYPE_MRJ21_TRUNK, 'MRJ21 Trunk'),
  845. (TYPE_COAXIAL, 'Coaxial'),
  846. ),
  847. ),
  848. (
  849. 'Fiber', (
  850. (TYPE_MMF, 'Multimode Fiber'),
  851. (TYPE_MMF_OM1, 'Multimode Fiber (OM1)'),
  852. (TYPE_MMF_OM2, 'Multimode Fiber (OM2)'),
  853. (TYPE_MMF_OM3, 'Multimode Fiber (OM3)'),
  854. (TYPE_MMF_OM4, 'Multimode Fiber (OM4)'),
  855. (TYPE_SMF, 'Singlemode Fiber'),
  856. (TYPE_SMF_OS1, 'Singlemode Fiber (OS1)'),
  857. (TYPE_SMF_OS2, 'Singlemode Fiber (OS2)'),
  858. (TYPE_AOC, 'Active Optical Cabling (AOC)'),
  859. ),
  860. ),
  861. (TYPE_POWER, 'Power'),
  862. )
  863. LEGACY_MAP = {
  864. TYPE_CAT3: 1300,
  865. TYPE_CAT5: 1500,
  866. TYPE_CAT5E: 1510,
  867. TYPE_CAT6: 1600,
  868. TYPE_CAT6A: 1610,
  869. TYPE_CAT7: 1700,
  870. TYPE_DAC_ACTIVE: 1800,
  871. TYPE_DAC_PASSIVE: 1810,
  872. TYPE_COAXIAL: 1900,
  873. TYPE_MMF: 3000,
  874. TYPE_MMF_OM1: 3010,
  875. TYPE_MMF_OM2: 3020,
  876. TYPE_MMF_OM3: 3030,
  877. TYPE_MMF_OM4: 3040,
  878. TYPE_SMF: 3500,
  879. TYPE_SMF_OS1: 3510,
  880. TYPE_SMF_OS2: 3520,
  881. TYPE_AOC: 3800,
  882. TYPE_POWER: 5000,
  883. }
  884. class CableStatusChoices(ChoiceSet):
  885. STATUS_CONNECTED = 'connected'
  886. STATUS_PLANNED = 'planned'
  887. STATUS_DECOMMISSIONING = 'decommissioning'
  888. CHOICES = (
  889. (STATUS_CONNECTED, 'Connected'),
  890. (STATUS_PLANNED, 'Planned'),
  891. (STATUS_DECOMMISSIONING, 'Decommissioning'),
  892. )
  893. LEGACY_MAP = {
  894. STATUS_CONNECTED: True,
  895. STATUS_PLANNED: False,
  896. }
  897. class CableLengthUnitChoices(ChoiceSet):
  898. UNIT_METER = 'm'
  899. UNIT_CENTIMETER = 'cm'
  900. UNIT_FOOT = 'ft'
  901. UNIT_INCH = 'in'
  902. CHOICES = (
  903. (UNIT_METER, 'Meters'),
  904. (UNIT_CENTIMETER, 'Centimeters'),
  905. (UNIT_FOOT, 'Feet'),
  906. (UNIT_INCH, 'Inches'),
  907. )
  908. LEGACY_MAP = {
  909. UNIT_METER: 1200,
  910. UNIT_CENTIMETER: 1100,
  911. UNIT_FOOT: 2100,
  912. UNIT_INCH: 2000,
  913. }
  914. #
  915. # PowerFeeds
  916. #
  917. class PowerFeedStatusChoices(ChoiceSet):
  918. STATUS_OFFLINE = 'offline'
  919. STATUS_ACTIVE = 'active'
  920. STATUS_PLANNED = 'planned'
  921. STATUS_FAILED = 'failed'
  922. CHOICES = (
  923. (STATUS_OFFLINE, 'Offline'),
  924. (STATUS_ACTIVE, 'Active'),
  925. (STATUS_PLANNED, 'Planned'),
  926. (STATUS_FAILED, 'Failed'),
  927. )
  928. LEGACY_MAP = {
  929. STATUS_OFFLINE: 0,
  930. STATUS_ACTIVE: 1,
  931. STATUS_PLANNED: 2,
  932. STATUS_FAILED: 4,
  933. }
  934. class PowerFeedTypeChoices(ChoiceSet):
  935. TYPE_PRIMARY = 'primary'
  936. TYPE_REDUNDANT = 'redundant'
  937. CHOICES = (
  938. (TYPE_PRIMARY, 'Primary'),
  939. (TYPE_REDUNDANT, 'Redundant'),
  940. )
  941. LEGACY_MAP = {
  942. TYPE_PRIMARY: 1,
  943. TYPE_REDUNDANT: 2,
  944. }
  945. class PowerFeedSupplyChoices(ChoiceSet):
  946. SUPPLY_AC = 'ac'
  947. SUPPLY_DC = 'dc'
  948. CHOICES = (
  949. (SUPPLY_AC, 'AC'),
  950. (SUPPLY_DC, 'DC'),
  951. )
  952. LEGACY_MAP = {
  953. SUPPLY_AC: 1,
  954. SUPPLY_DC: 2,
  955. }
  956. class PowerFeedPhaseChoices(ChoiceSet):
  957. PHASE_SINGLE = 'single-phase'
  958. PHASE_3PHASE = 'three-phase'
  959. CHOICES = (
  960. (PHASE_SINGLE, 'Single phase'),
  961. (PHASE_3PHASE, 'Three-phase'),
  962. )
  963. LEGACY_MAP = {
  964. PHASE_SINGLE: 1,
  965. PHASE_3PHASE: 3,
  966. }