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