From 36dc8cd0d91736b9c3da19c37a138b7216d08ef7 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 19 Feb 2025 11:19:23 -0500 Subject: [PATCH] Generate Strawberry filter enums from ChoiceSets (#18676) * Add as_num() method to ChoiceSet * Update circuits enums * Update DCIM enums * Update extras enums * Update IPAM enums * Add tenancy enums * Update virtualization enums * Update VPN enums * Update wireless enums * Update netbox enums * Permit TenantType.group to be null --- netbox/circuits/graphql/enums.py | 86 +-- netbox/dcim/graphql/enums.py | 921 ++----------------------- netbox/extras/graphql/enums.py | 200 +----- netbox/extras/graphql/filters.py | 4 +- netbox/ipam/graphql/enums.py | 138 +--- netbox/netbox/graphql/enums.py | 113 +-- netbox/tenancy/graphql/enums.py | 9 + netbox/tenancy/graphql/filters.py | 5 +- netbox/tenancy/graphql/types.py | 2 +- netbox/utilities/choices.py | 19 + netbox/virtualization/graphql/enums.py | 36 +- netbox/vpn/graphql/enums.py | 178 +---- netbox/wireless/graphql/enums.py | 256 +------ 13 files changed, 213 insertions(+), 1754 deletions(-) create mode 100644 netbox/tenancy/graphql/enums.py diff --git a/netbox/circuits/graphql/enums.py b/netbox/circuits/graphql/enums.py index 9fd3b8b09..609e4435b 100644 --- a/netbox/circuits/graphql/enums.py +++ b/netbox/circuits/graphql/enums.py @@ -1,86 +1,20 @@ -from enum import Enum import strawberry -__all__ = [ +from circuits.choices import * + +__all__ = ( 'CircuitStatusEnum', 'CircuitCommitRateEnum', 'CircuitTerminationSideEnum', 'CircuitTerminationPortSpeedEnum', 'CircuitPriorityEnum', 'VirtualCircuitTerminationRoleEnum', -] - -# -# Circuits -# +) -@strawberry.enum -class CircuitStatusEnum(Enum): - STATUS_DEPROVISIONING = 'deprovisioning' - STATUS_ACTIVE = 'active' - STATUS_PLANNED = 'planned' - STATUS_PROVISIONING = 'provisioning' - STATUS_OFFLINE = 'offline' - STATUS_DECOMMISSIONED = 'decommissioned' - - -@strawberry.enum -class CircuitCommitRateEnum(Enum): - TEN_MBPS = 10000 - HUNDRED_MBPS = 100000 - ONE_GBPS = 1000000 - TEN_GBPS = 10000000 - TWENTY_FIVE_GBPS = 25000000 - FORTY_GBPS = 40000000 - HUNDRED_GBPS = 100000000 - TWO_HUNDRED_GBPS = 200000000 - FOUR_HUNDRED_GBPS = 400000000 - T1 = 1544 - E1 = 2048 - - -# -# CircuitTerminations -# - - -@strawberry.enum -class CircuitTerminationSideEnum(Enum): - SIDE_A = 'A' - SIDE_Z = 'Z' - - -@strawberry.enum -class CircuitTerminationPortSpeedEnum(Enum): - TEN_MBPS = 10000 - HUNDRED_MBPS = 100000 - ONE_GBPS = 1000000 - TEN_GBPS = 10000000 - TWENTY_FIVE_GBPS = 25000000 - FORTY_GBPS = 40000000 - HUNDRED_GBPS = 100000000 - TWO_HUNDRED_GBPS = 200000000 - FOUR_HUNDRED_GBPS = 400000000 - T1 = 1544 - E1 = 2048 - - -@strawberry.enum -class CircuitPriorityEnum(Enum): - PRIORITY_PRIMARY = 'primary' - PRIORITY_SECONDARY = 'secondary' - PRIORITY_TERTIARY = 'tertiary' - PRIORITY_INACTIVE = 'inactive' - - -# -# Virtual circuits -# - - -@strawberry.enum -class VirtualCircuitTerminationRoleEnum(Enum): - ROLE_PEER = 'peer' - ROLE_HUB = 'hub' - ROLE_SPOKE = 'spoke' +CircuitCommitRateEnum = strawberry.enum(CircuitCommitRateChoices.as_enum()) +CircuitPriorityEnum = strawberry.enum(CircuitPriorityChoices.as_enum()) +CircuitStatusEnum = strawberry.enum(CircuitStatusChoices.as_enum()) +CircuitTerminationSideEnum = strawberry.enum(CircuitTerminationSideChoices.as_enum()) +CircuitTerminationPortSpeedEnum = strawberry.enum(CircuitTerminationPortSpeedChoices.as_enum()) +VirtualCircuitTerminationRoleEnum = strawberry.enum(VirtualCircuitTerminationRoleChoices.as_enum()) diff --git a/netbox/dcim/graphql/enums.py b/netbox/dcim/graphql/enums.py index 0b3441d52..a60c0df14 100644 --- a/netbox/dcim/graphql/enums.py +++ b/netbox/dcim/graphql/enums.py @@ -1,848 +1,77 @@ -from enum import Enum import strawberry - -# -# Sites -# - -@strawberry.enum -class SiteStatusEnum(Enum): - STATUS_PLANNED = 'planned' - STATUS_STAGING = 'staging' - STATUS_ACTIVE = 'active' - STATUS_DECOMMISSIONING = 'decommissioning' - STATUS_RETIRED = 'retired' - - -# -# Locations -# - -@strawberry.enum -class LocationStatusEnum(Enum): - STATUS_PLANNED = 'planned' - STATUS_STAGING = 'staging' - STATUS_ACTIVE = 'active' - STATUS_DECOMMISSIONING = 'decommissioning' - STATUS_RETIRED = 'retired' - - -# -# Racks -# - -@strawberry.enum -class RackFormFactorEnum(Enum): - TYPE_2POST = '2-post-frame' - TYPE_4POST = '4-post-frame' - TYPE_CABINET = '4-post-cabinet' - TYPE_WALLFRAME = 'wall-frame' - TYPE_WALLFRAME_VERTICAL = 'wall-frame-vertical' - TYPE_WALLCABINET = 'wall-cabinet' - TYPE_WALLCABINET_VERTICAL = 'wall-cabinet-vertical' - - -@strawberry.enum -class RackWidthEnum(Enum): - - WIDTH_10IN = 10 - WIDTH_19IN = 19 - WIDTH_21IN = 21 - WIDTH_23IN = 23 - - -@strawberry.enum -class RackStatusEnum(Enum): - STATUS_RESERVED = 'reserved' - STATUS_AVAILABLE = 'available' - STATUS_PLANNED = 'planned' - STATUS_ACTIVE = 'active' - STATUS_DEPRECATED = 'deprecated' - - -@strawberry.enum -class RackDimensionUnitEnum(Enum): - UNIT_MILLIMETER = 'mm' - UNIT_INCH = 'in' - - -@strawberry.enum -class RackElevationDetailRenderEnum(Enum): - RENDER_JSON = 'json' - RENDER_SVG = 'svg' - - -@strawberry.enum -class RackAirflowEnum(Enum): - FRONT_TO_REAR = 'front-to-rear' - REAR_TO_FRONT = 'rear-to-front' - - -# -# DeviceTypes -# - -@strawberry.enum -class SubdeviceRoleEnum(Enum): - ROLE_PARENT = 'parent' - ROLE_CHILD = 'child' - - -# -# Devices -# - -@strawberry.enum -class DeviceFaceEnum(Enum): - FACE_FRONT = 'front' - FACE_REAR = 'rear' - - -@strawberry.enum -class DeviceStatusEnum(Enum): - STATUS_OFFLINE = 'offline' - STATUS_ACTIVE = 'active' - STATUS_PLANNED = 'planned' - STATUS_STAGED = 'staged' - STATUS_FAILED = 'failed' - STATUS_INVENTORY = 'inventory' - STATUS_DECOMMISSIONING = 'decommissioning' - - -@strawberry.enum -class DeviceAirflowEnum(Enum): - - AIRFLOW_FRONT_TO_REAR = 'front-to-rear' - AIRFLOW_REAR_TO_FRONT = 'rear-to-front' - AIRFLOW_LEFT_TO_RIGHT = 'left-to-right' - AIRFLOW_RIGHT_TO_LEFT = 'right-to-left' - AIRFLOW_SIDE_TO_REAR = 'side-to-rear' - AIRFLOW_REAR_TO_SIDE = 'rear-to-side' - AIRFLOW_BOTTOM_TO_TOP = 'bottom-to-top' - AIRFLOW_TOP_TO_BOTTOM = 'top-to-bottom' - AIRFLOW_PASSIVE = 'passive' - AIRFLOW_MIXED = 'mixed' - - -# -# Modules -# - -@strawberry.enum -class ModuleStatusEnum(Enum): - STATUS_OFFLINE = 'offline' - STATUS_ACTIVE = 'active' - STATUS_PLANNED = 'planned' - STATUS_STAGED = 'staged' - STATUS_FAILED = 'failed' - STATUS_DECOMMISSIONING = 'decommissioning' - - -@strawberry.enum -class ModuleAirflowEnum(Enum): - - FRONT_TO_REAR = 'front-to-rear' - REAR_TO_FRONT = 'rear-to-front' - LEFT_TO_RIGHT = 'left-to-right' - RIGHT_TO_LEFT = 'right-to-left' - SIDE_TO_REAR = 'side-to-rear' - PASSIVE = 'passive' - - -# -# ConsolePorts -# - -@strawberry.enum -class ConsolePortTypeEnum(Enum): - - TYPE_DE9 = 'de-9' - TYPE_DB25 = 'db-25' - TYPE_RJ11 = 'rj-11' - TYPE_RJ12 = 'rj-12' - TYPE_RJ45 = 'rj-45' - TYPE_MINI_DIN_8 = 'mini-din-8' - TYPE_USB_A = 'usb-a' - TYPE_USB_B = 'usb-b' - TYPE_USB_C = 'usb-c' - TYPE_USB_MINI_A = 'usb-mini-a' - TYPE_USB_MINI_B = 'usb-mini-b' - TYPE_USB_MICRO_A = 'usb-micro-a' - TYPE_USB_MICRO_B = 'usb-micro-b' - TYPE_USB_MICRO_AB = 'usb-micro-ab' - TYPE_OTHER = 'other' - - -@strawberry.enum -class ConsolePortSpeedEnum(Enum): - - SPEED_1200 = 1200 - SPEED_2400 = 2400 - SPEED_4800 = 4800 - SPEED_9600 = 9600 - SPEED_19200 = 19200 - SPEED_38400 = 38400 - SPEED_57600 = 57600 - SPEED_115200 = 115200 - - -# -# PowerPorts -# - -@strawberry.enum -class PowerPortTypeEnum(Enum): - - # IEC 60320 - TYPE_IEC_C6 = 'iec-60320-c6' - TYPE_IEC_C8 = 'iec-60320-c8' - TYPE_IEC_C14 = 'iec-60320-c14' - TYPE_IEC_C16 = 'iec-60320-c16' - TYPE_IEC_C20 = 'iec-60320-c20' - TYPE_IEC_C22 = 'iec-60320-c22' - # IEC 60309 - TYPE_IEC_PNE4H = 'iec-60309-p-n-e-4h' - TYPE_IEC_PNE6H = 'iec-60309-p-n-e-6h' - TYPE_IEC_PNE9H = 'iec-60309-p-n-e-9h' - TYPE_IEC_2PE4H = 'iec-60309-2p-e-4h' - TYPE_IEC_2PE6H = 'iec-60309-2p-e-6h' - TYPE_IEC_2PE9H = 'iec-60309-2p-e-9h' - TYPE_IEC_3PE4H = 'iec-60309-3p-e-4h' - TYPE_IEC_3PE6H = 'iec-60309-3p-e-6h' - TYPE_IEC_3PE9H = 'iec-60309-3p-e-9h' - TYPE_IEC_3PNE4H = 'iec-60309-3p-n-e-4h' - TYPE_IEC_3PNE6H = 'iec-60309-3p-n-e-6h' - TYPE_IEC_3PNE9H = 'iec-60309-3p-n-e-9h' - # IEC 60906-1 - TYPE_IEC_60906_1 = 'iec-60906-1' - TYPE_NBR_14136_10A = 'nbr-14136-10a' - TYPE_NBR_14136_20A = 'nbr-14136-20a' - # NEMA non-locking - TYPE_NEMA_115P = 'nema-1-15p' - TYPE_NEMA_515P = 'nema-5-15p' - TYPE_NEMA_520P = 'nema-5-20p' - TYPE_NEMA_530P = 'nema-5-30p' - TYPE_NEMA_550P = 'nema-5-50p' - TYPE_NEMA_615P = 'nema-6-15p' - TYPE_NEMA_620P = 'nema-6-20p' - TYPE_NEMA_630P = 'nema-6-30p' - TYPE_NEMA_650P = 'nema-6-50p' - TYPE_NEMA_1030P = 'nema-10-30p' - TYPE_NEMA_1050P = 'nema-10-50p' - TYPE_NEMA_1420P = 'nema-14-20p' - TYPE_NEMA_1430P = 'nema-14-30p' - TYPE_NEMA_1450P = 'nema-14-50p' - TYPE_NEMA_1460P = 'nema-14-60p' - TYPE_NEMA_1515P = 'nema-15-15p' - TYPE_NEMA_1520P = 'nema-15-20p' - TYPE_NEMA_1530P = 'nema-15-30p' - TYPE_NEMA_1550P = 'nema-15-50p' - TYPE_NEMA_1560P = 'nema-15-60p' - # NEMA locking - TYPE_NEMA_L115P = 'nema-l1-15p' - TYPE_NEMA_L515P = 'nema-l5-15p' - TYPE_NEMA_L520P = 'nema-l5-20p' - TYPE_NEMA_L530P = 'nema-l5-30p' - TYPE_NEMA_L550P = 'nema-l5-50p' - TYPE_NEMA_L615P = 'nema-l6-15p' - TYPE_NEMA_L620P = 'nema-l6-20p' - TYPE_NEMA_L630P = 'nema-l6-30p' - TYPE_NEMA_L650P = 'nema-l6-50p' - TYPE_NEMA_L1030P = 'nema-l10-30p' - TYPE_NEMA_L1420P = 'nema-l14-20p' - TYPE_NEMA_L1430P = 'nema-l14-30p' - TYPE_NEMA_L1450P = 'nema-l14-50p' - TYPE_NEMA_L1460P = 'nema-l14-60p' - TYPE_NEMA_L1520P = 'nema-l15-20p' - TYPE_NEMA_L1530P = 'nema-l15-30p' - TYPE_NEMA_L1550P = 'nema-l15-50p' - TYPE_NEMA_L1560P = 'nema-l15-60p' - TYPE_NEMA_L2120P = 'nema-l21-20p' - TYPE_NEMA_L2130P = 'nema-l21-30p' - TYPE_NEMA_L2220P = 'nema-l22-20p' - TYPE_NEMA_L2230P = 'nema-l22-30p' - # California style - TYPE_CS6361C = 'cs6361c' - TYPE_CS6365C = 'cs6365c' - TYPE_CS8165C = 'cs8165c' - TYPE_CS8265C = 'cs8265c' - TYPE_CS8365C = 'cs8365c' - TYPE_CS8465C = 'cs8465c' - # ITA/international - TYPE_ITA_C = 'ita-c' - TYPE_ITA_E = 'ita-e' - TYPE_ITA_F = 'ita-f' - TYPE_ITA_EF = 'ita-ef' - TYPE_ITA_G = 'ita-g' - TYPE_ITA_H = 'ita-h' - TYPE_ITA_I = 'ita-i' - TYPE_ITA_J = 'ita-j' - TYPE_ITA_K = 'ita-k' - TYPE_ITA_L = 'ita-l' - TYPE_ITA_M = 'ita-m' - TYPE_ITA_N = 'ita-n' - TYPE_ITA_O = 'ita-o' - # USB - TYPE_USB_A = 'usb-a' - TYPE_USB_B = 'usb-b' - TYPE_USB_C = 'usb-c' - TYPE_USB_MINI_A = 'usb-mini-a' - TYPE_USB_MINI_B = 'usb-mini-b' - TYPE_USB_MICRO_A = 'usb-micro-a' - TYPE_USB_MICRO_B = 'usb-micro-b' - TYPE_USB_MICRO_AB = 'usb-micro-ab' - TYPE_USB_3_B = 'usb-3-b' - TYPE_USB_3_MICROB = 'usb-3-micro-b' - # Molex - TYPE_MOLEX_MICRO_FIT_1X2 = 'molex-micro-fit-1x2' - TYPE_MOLEX_MICRO_FIT_2X2 = 'molex-micro-fit-2x2' - TYPE_MOLEX_MICRO_FIT_2X4 = 'molex-micro-fit-2x4' - # Direct current (DC) - TYPE_DC = 'dc-terminal' - # Proprietary - TYPE_SAF_D_GRID = 'saf-d-grid' - TYPE_NEUTRIK_POWERCON_20A = 'neutrik-powercon-20' - TYPE_NEUTRIK_POWERCON_32A = 'neutrik-powercon-32' - TYPE_NEUTRIK_POWERCON_TRUE1 = 'neutrik-powercon-true1' - TYPE_NEUTRIK_POWERCON_TRUE1_TOP = 'neutrik-powercon-true1-top' - TYPE_UBIQUITI_SMARTPOWER = 'ubiquiti-smartpower' - # Other - TYPE_HARDWIRED = 'hardwired' - TYPE_OTHER = 'other' - - -# -# PowerOutlets -# - -@strawberry.enum -class PowerOutletTypeEnum(Enum): - - # IEC 60320 - TYPE_IEC_C5 = 'iec-60320-c5' - TYPE_IEC_C7 = 'iec-60320-c7' - TYPE_IEC_C13 = 'iec-60320-c13' - TYPE_IEC_C15 = 'iec-60320-c15' - TYPE_IEC_C19 = 'iec-60320-c19' - TYPE_IEC_C21 = 'iec-60320-c21' - # IEC 60309 - TYPE_IEC_PNE4H = 'iec-60309-p-n-e-4h' - TYPE_IEC_PNE6H = 'iec-60309-p-n-e-6h' - TYPE_IEC_PNE9H = 'iec-60309-p-n-e-9h' - TYPE_IEC_2PE4H = 'iec-60309-2p-e-4h' - TYPE_IEC_2PE6H = 'iec-60309-2p-e-6h' - TYPE_IEC_2PE9H = 'iec-60309-2p-e-9h' - TYPE_IEC_3PE4H = 'iec-60309-3p-e-4h' - TYPE_IEC_3PE6H = 'iec-60309-3p-e-6h' - TYPE_IEC_3PE9H = 'iec-60309-3p-e-9h' - TYPE_IEC_3PNE4H = 'iec-60309-3p-n-e-4h' - TYPE_IEC_3PNE6H = 'iec-60309-3p-n-e-6h' - TYPE_IEC_3PNE9H = 'iec-60309-3p-n-e-9h' - # IEC 60906-1 - TYPE_IEC_60906_1 = 'iec-60906-1' - TYPE_NBR_14136_10A = 'nbr-14136-10a' - TYPE_NBR_14136_20A = 'nbr-14136-20a' - # NEMA non-locking - TYPE_NEMA_115R = 'nema-1-15r' - TYPE_NEMA_515R = 'nema-5-15r' - TYPE_NEMA_520R = 'nema-5-20r' - TYPE_NEMA_530R = 'nema-5-30r' - TYPE_NEMA_550R = 'nema-5-50r' - TYPE_NEMA_615R = 'nema-6-15r' - TYPE_NEMA_620R = 'nema-6-20r' - TYPE_NEMA_630R = 'nema-6-30r' - TYPE_NEMA_650R = 'nema-6-50r' - TYPE_NEMA_1030R = 'nema-10-30r' - TYPE_NEMA_1050R = 'nema-10-50r' - TYPE_NEMA_1420R = 'nema-14-20r' - TYPE_NEMA_1430R = 'nema-14-30r' - TYPE_NEMA_1450R = 'nema-14-50r' - TYPE_NEMA_1460R = 'nema-14-60r' - TYPE_NEMA_1515R = 'nema-15-15r' - TYPE_NEMA_1520R = 'nema-15-20r' - TYPE_NEMA_1530R = 'nema-15-30r' - TYPE_NEMA_1550R = 'nema-15-50r' - TYPE_NEMA_1560R = 'nema-15-60r' - # NEMA locking - TYPE_NEMA_L115R = 'nema-l1-15r' - TYPE_NEMA_L515R = 'nema-l5-15r' - TYPE_NEMA_L520R = 'nema-l5-20r' - TYPE_NEMA_L530R = 'nema-l5-30r' - TYPE_NEMA_L550R = 'nema-l5-50r' - TYPE_NEMA_L615R = 'nema-l6-15r' - TYPE_NEMA_L620R = 'nema-l6-20r' - TYPE_NEMA_L630R = 'nema-l6-30r' - TYPE_NEMA_L650R = 'nema-l6-50r' - TYPE_NEMA_L1030R = 'nema-l10-30r' - TYPE_NEMA_L1420R = 'nema-l14-20r' - TYPE_NEMA_L1430R = 'nema-l14-30r' - TYPE_NEMA_L1450R = 'nema-l14-50r' - TYPE_NEMA_L1460R = 'nema-l14-60r' - TYPE_NEMA_L1520R = 'nema-l15-20r' - TYPE_NEMA_L1530R = 'nema-l15-30r' - TYPE_NEMA_L1550R = 'nema-l15-50r' - TYPE_NEMA_L1560R = 'nema-l15-60r' - TYPE_NEMA_L2120R = 'nema-l21-20r' - TYPE_NEMA_L2130R = 'nema-l21-30r' - TYPE_NEMA_L2220R = 'nema-l22-20r' - TYPE_NEMA_L2230R = 'nema-l22-30r' - # California style - TYPE_CS6360C = 'CS6360C' - TYPE_CS6364C = 'CS6364C' - TYPE_CS8164C = 'CS8164C' - TYPE_CS8264C = 'CS8264C' - TYPE_CS8364C = 'CS8364C' - TYPE_CS8464C = 'CS8464C' - # ITA/international - TYPE_ITA_E = 'ita-e' - TYPE_ITA_F = 'ita-f' - TYPE_ITA_G = 'ita-g' - TYPE_ITA_H = 'ita-h' - TYPE_ITA_I = 'ita-i' - TYPE_ITA_J = 'ita-j' - TYPE_ITA_K = 'ita-k' - TYPE_ITA_L = 'ita-l' - TYPE_ITA_M = 'ita-m' - TYPE_ITA_N = 'ita-n' - TYPE_ITA_O = 'ita-o' - TYPE_ITA_MULTISTANDARD = 'ita-multistandard' - # USB - TYPE_USB_A = 'usb-a' - TYPE_USB_MICROB = 'usb-micro-b' - TYPE_USB_C = 'usb-c' - # Molex - TYPE_MOLEX_MICRO_FIT_1X2 = 'molex-micro-fit-1x2' - TYPE_MOLEX_MICRO_FIT_2X2 = 'molex-micro-fit-2x2' - TYPE_MOLEX_MICRO_FIT_2X4 = 'molex-micro-fit-2x4' - # Direct current (DC) - TYPE_DC = 'dc-terminal' - # Proprietary - TYPE_EATON_C39 = 'eaton-c39' - TYPE_HDOT_CX = 'hdot-cx' - TYPE_SAF_D_GRID = 'saf-d-grid' - TYPE_NEUTRIK_POWERCON_20A = 'neutrik-powercon-20a' - TYPE_NEUTRIK_POWERCON_32A = 'neutrik-powercon-32a' - TYPE_NEUTRIK_POWERCON_TRUE1 = 'neutrik-powercon-true1' - TYPE_NEUTRIK_POWERCON_TRUE1_TOP = 'neutrik-powercon-true1-top' - TYPE_UBIQUITI_SMARTPOWER = 'ubiquiti-smartpower' - # Other - TYPE_HARDWIRED = 'hardwired' - TYPE_OTHER = 'other' - - -@strawberry.enum -class PowerOutletFeedLegEnum(Enum): - - FEED_LEG_A = 'A' - FEED_LEG_B = 'B' - FEED_LEG_C = 'C' - - -# -# Interfaces -# - -@strawberry.enum -class InterfaceKindEnum(Enum): - KIND_PHYSICAL = 'physical' - KIND_VIRTUAL = 'virtual' - KIND_WIRELESS = 'wireless' - - -@strawberry.enum -class InterfaceTypeEnum(Enum): - - # Virtual - TYPE_VIRTUAL = 'virtual' - TYPE_BRIDGE = 'bridge' - TYPE_LAG = 'lag' - - # Ethernet - TYPE_100ME_FX = '100base-fx' - TYPE_100ME_LFX = '100base-lfx' - TYPE_100ME_FIXED = '100base-tx' - TYPE_100ME_T1 = '100base-t1' - TYPE_100ME_SFP = '100base-x-sfp' - TYPE_1GE_FIXED = '1000base-t' - TYPE_1GE_LX_FIXED = '1000base-lx' - TYPE_1GE_TX_FIXED = '1000base-tx' - TYPE_1GE_GBIC = '1000base-x-gbic' - TYPE_1GE_SFP = '1000base-x-sfp' - TYPE_2GE_FIXED = '2.5gbase-t' - TYPE_5GE_FIXED = '5gbase-t' - TYPE_10GE_FIXED = '10gbase-t' - TYPE_10GE_CX4 = '10gbase-cx4' - TYPE_10GE_SFP_PLUS = '10gbase-x-sfpp' - TYPE_10GE_XFP = '10gbase-x-xfp' - TYPE_10GE_XENPAK = '10gbase-x-xenpak' - TYPE_10GE_X2 = '10gbase-x-x2' - TYPE_25GE_SFP28 = '25gbase-x-sfp28' - TYPE_50GE_SFP56 = '50gbase-x-sfp56' - TYPE_40GE_QSFP_PLUS = '40gbase-x-qsfpp' - TYPE_50GE_QSFP28 = '50gbase-x-sfp28' - TYPE_100GE_CFP = '100gbase-x-cfp' - TYPE_100GE_CFP2 = '100gbase-x-cfp2' - TYPE_100GE_CFP4 = '100gbase-x-cfp4' - TYPE_100GE_CXP = '100gbase-x-cxp' - TYPE_100GE_CPAK = '100gbase-x-cpak' - TYPE_100GE_DSFP = '100gbase-x-dsfp' - TYPE_100GE_SFP_DD = '100gbase-x-sfpdd' - TYPE_100GE_QSFP28 = '100gbase-x-qsfp28' - TYPE_100GE_QSFP_DD = '100gbase-x-qsfpdd' - TYPE_200GE_CFP2 = '200gbase-x-cfp2' - TYPE_200GE_QSFP56 = '200gbase-x-qsfp56' - TYPE_200GE_QSFP_DD = '200gbase-x-qsfpdd' - TYPE_400GE_CFP2 = '400gbase-x-cfp2' - TYPE_400GE_QSFP112 = '400gbase-x-qsfp112' - TYPE_400GE_QSFP_DD = '400gbase-x-qsfpdd' - TYPE_400GE_OSFP = '400gbase-x-osfp' - TYPE_400GE_OSFP_RHS = '400gbase-x-osfp-rhs' - TYPE_400GE_CDFP = '400gbase-x-cdfp' - TYPE_400GE_CFP8 = '400gbase-x-cfp8' - TYPE_800GE_QSFP_DD = '800gbase-x-qsfpdd' - TYPE_800GE_OSFP = '800gbase-x-osfp' - - # Ethernet Backplane - TYPE_1GE_KX = '1000base-kx' - TYPE_2GE_KX = '2.5gbase-kx' - TYPE_5GE_KR = '5gbase-kr' - TYPE_10GE_KR = '10gbase-kr' - TYPE_10GE_KX4 = '10gbase-kx4' - TYPE_25GE_KR = '25gbase-kr' - TYPE_40GE_KR4 = '40gbase-kr4' - TYPE_50GE_KR = '50gbase-kr' - TYPE_100GE_KP4 = '100gbase-kp4' - TYPE_100GE_KR2 = '100gbase-kr2' - TYPE_100GE_KR4 = '100gbase-kr4' - - # Wireless - TYPE_80211A = 'ieee802.11a' - TYPE_80211G = 'ieee802.11g' - TYPE_80211N = 'ieee802.11n' - TYPE_80211AC = 'ieee802.11ac' - TYPE_80211AD = 'ieee802.11ad' - TYPE_80211AX = 'ieee802.11ax' - TYPE_80211AY = 'ieee802.11ay' - TYPE_80211BE = 'ieee802.11be' - TYPE_802151 = 'ieee802.15.1' - TYPE_802154 = 'ieee802.15.4' - TYPE_OTHER_WIRELESS = 'other-wireless' - - # Cellular - TYPE_GSM = 'gsm' - TYPE_CDMA = 'cdma' - TYPE_LTE = 'lte' - TYPE_4G = '4g' - TYPE_5G = '5g' - - # SONET - TYPE_SONET_OC3 = 'sonet-oc3' - TYPE_SONET_OC12 = 'sonet-oc12' - TYPE_SONET_OC48 = 'sonet-oc48' - TYPE_SONET_OC192 = 'sonet-oc192' - TYPE_SONET_OC768 = 'sonet-oc768' - TYPE_SONET_OC1920 = 'sonet-oc1920' - TYPE_SONET_OC3840 = 'sonet-oc3840' - - # Fibrechannel - TYPE_1GFC_SFP = '1gfc-sfp' - TYPE_2GFC_SFP = '2gfc-sfp' - TYPE_4GFC_SFP = '4gfc-sfp' - TYPE_8GFC_SFP_PLUS = '8gfc-sfpp' - TYPE_16GFC_SFP_PLUS = '16gfc-sfpp' - TYPE_32GFC_SFP28 = '32gfc-sfp28' - TYPE_32GFC_SFP_PLUS = '32gfc-sfpp' - TYPE_64GFC_QSFP_PLUS = '64gfc-qsfpp' - TYPE_64GFC_SFP_DD = '64gfc-sfpdd' - TYPE_64GFC_SFP_PLUS = '64gfc-sfpp' - TYPE_128GFC_QSFP28 = '128gfc-qsfp28' - - # InfiniBand - TYPE_INFINIBAND_SDR = 'infiniband-sdr' - TYPE_INFINIBAND_DDR = 'infiniband-ddr' - TYPE_INFINIBAND_QDR = 'infiniband-qdr' - TYPE_INFINIBAND_FDR10 = 'infiniband-fdr10' - TYPE_INFINIBAND_FDR = 'infiniband-fdr' - TYPE_INFINIBAND_EDR = 'infiniband-edr' - TYPE_INFINIBAND_HDR = 'infiniband-hdr' - TYPE_INFINIBAND_NDR = 'infiniband-ndr' - TYPE_INFINIBAND_XDR = 'infiniband-xdr' - - # Serial - TYPE_T1 = 't1' - TYPE_E1 = 'e1' - TYPE_T3 = 't3' - TYPE_E3 = 'e3' - - # ATM/DSL - TYPE_XDSL = 'xdsl' - - # Coaxial - TYPE_DOCSIS = 'docsis' - - # PON - TYPE_BPON = 'bpon' - TYPE_EPON = 'epon' - TYPE_10G_EPON = '10g-epon' - TYPE_GPON = 'gpon' - TYPE_XG_PON = 'xg-pon' - TYPE_XGS_PON = 'xgs-pon' - TYPE_NG_PON2 = 'ng-pon2' - TYPE_25G_PON = '25g-pon' - TYPE_50G_PON = '50g-pon' - - # Stacking - TYPE_STACKWISE = 'cisco-stackwise' - TYPE_STACKWISE_PLUS = 'cisco-stackwise-plus' - TYPE_FLEXSTACK = 'cisco-flexstack' - TYPE_FLEXSTACK_PLUS = 'cisco-flexstack-plus' - TYPE_STACKWISE80 = 'cisco-stackwise-80' - TYPE_STACKWISE160 = 'cisco-stackwise-160' - TYPE_STACKWISE320 = 'cisco-stackwise-320' - TYPE_STACKWISE480 = 'cisco-stackwise-480' - TYPE_STACKWISE1T = 'cisco-stackwise-1t' - TYPE_JUNIPER_VCP = 'juniper-vcp' - TYPE_SUMMITSTACK = 'extreme-summitstack' - TYPE_SUMMITSTACK128 = 'extreme-summitstack-128' - TYPE_SUMMITSTACK256 = 'extreme-summitstack-256' - TYPE_SUMMITSTACK512 = 'extreme-summitstack-512' - - # Other - TYPE_OTHER = 'other' - - -@strawberry.enum -class InterfaceSpeedEnum(Enum): - SPEED_10MBPS = 10000 - SPEED_100MBPS = 100000 - SPEED_1GBPS = 1000000 - SPEED_10GBPS = 10000000 - SPEED_25GBPS = 25000000 - SPEED_40GBPS = 40000000 - SPEED_100GBPS = 100000000 - SPEED_200GBPS = 200000000 - SPEED_400GBPS = 400000000 - - -@strawberry.enum -class InterfaceDuplexEnum(Enum): - - DUPLEX_HALF = 'half' - DUPLEX_FULL = 'full' - DUPLEX_AUTO = 'auto' - - -@strawberry.enum -class InterfaceModeEnum(Enum): - - MODE_ACCESS = 'access' - MODE_TAGGED = 'tagged' - MODE_TAGGED_ALL = 'tagged-all' - MODE_Q_IN_Q = 'q-in-q' - - -@strawberry.enum -class InterfacePoEModeEnum(Enum): - - MODE_PD = 'pd' - MODE_PSE = 'pse' - - -@strawberry.enum -class InterfacePoETypeEnum(Enum): - - TYPE_1_8023AF = 'type1-ieee802.3af' - TYPE_2_8023AT = 'type2-ieee802.3at' - TYPE_3_8023BT = 'type3-ieee802.3bt' - TYPE_4_8023BT = 'type4-ieee802.3bt' - - PASSIVE_24V_2PAIR = 'passive-24v-2pair' - PASSIVE_24V_4PAIR = 'passive-24v-4pair' - PASSIVE_48V_2PAIR = 'passive-48v-2pair' - PASSIVE_48V_4PAIR = 'passive-48v-4pair' - - -# -# FrontPorts/RearPorts -# - -@strawberry.enum -class PortTypeEnum(Enum): - - TYPE_8P8C = '8p8c' - TYPE_8P6C = '8p6c' - TYPE_8P4C = '8p4c' - TYPE_8P2C = '8p2c' - TYPE_6P6C = '6p6c' - TYPE_6P4C = '6p4c' - TYPE_6P2C = '6p2c' - TYPE_4P4C = '4p4c' - TYPE_4P2C = '4p2c' - TYPE_GG45 = 'gg45' - TYPE_TERA4P = 'tera-4p' - TYPE_TERA2P = 'tera-2p' - TYPE_TERA1P = 'tera-1p' - TYPE_110_PUNCH = '110-punch' - TYPE_BNC = 'bnc' - TYPE_F = 'f' - TYPE_N = 'n' - TYPE_MRJ21 = 'mrj21' - TYPE_ST = 'st' - TYPE_SC = 'sc' - TYPE_SC_PC = 'sc-pc' - TYPE_SC_UPC = 'sc-upc' - TYPE_SC_APC = 'sc-apc' - TYPE_FC = 'fc' - TYPE_LC = 'lc' - TYPE_LC_PC = 'lc-pc' - TYPE_LC_UPC = 'lc-upc' - TYPE_LC_APC = 'lc-apc' - TYPE_MTRJ = 'mtrj' - TYPE_MPO = 'mpo' - TYPE_LSH = 'lsh' - TYPE_LSH_PC = 'lsh-pc' - TYPE_LSH_UPC = 'lsh-upc' - TYPE_LSH_APC = 'lsh-apc' - TYPE_LX5 = 'lx5' - TYPE_LX5_PC = 'lx5-pc' - TYPE_LX5_UPC = 'lx5-upc' - TYPE_LX5_APC = 'lx5-apc' - TYPE_SPLICE = 'splice' - TYPE_CS = 'cs' - TYPE_SN = 'sn' - TYPE_SMA_905 = 'sma-905' - TYPE_SMA_906 = 'sma-906' - TYPE_URM_P2 = 'urm-p2' - TYPE_URM_P4 = 'urm-p4' - TYPE_URM_P8 = 'urm-p8' - TYPE_USB_A = 'usb-a' - TYPE_USB_B = 'usb-b' - TYPE_USB_C = 'usb-c' - TYPE_USB_MINI_A = 'usb-mini-a' - TYPE_USB_MINI_B = 'usb-mini-b' - TYPE_USB_MICRO_A = 'usb-micro-a' - TYPE_USB_MICRO_B = 'usb-micro-b' - TYPE_USB_MICRO_AB = 'usb-micro-ab' - TYPE_OTHER = 'other' - - -# -# Cables/links -# - -@strawberry.enum -class CableTypeEnum(Enum): - - TYPE_CAT3 = 'cat3' - TYPE_CAT5 = 'cat5' - TYPE_CAT5E = 'cat5e' - TYPE_CAT6 = 'cat6' - TYPE_CAT6A = 'cat6a' - TYPE_CAT7 = 'cat7' - TYPE_CAT7A = 'cat7a' - TYPE_CAT8 = 'cat8' - TYPE_DAC_ACTIVE = 'dac-active' - TYPE_DAC_PASSIVE = 'dac-passive' - TYPE_MRJ21_TRUNK = 'mrj21-trunk' - TYPE_COAXIAL = 'coaxial' - TYPE_MMF = 'mmf' - TYPE_MMF_OM1 = 'mmf-om1' - TYPE_MMF_OM2 = 'mmf-om2' - TYPE_MMF_OM3 = 'mmf-om3' - TYPE_MMF_OM4 = 'mmf-om4' - TYPE_MMF_OM5 = 'mmf-om5' - TYPE_SMF = 'smf' - TYPE_SMF_OS1 = 'smf-os1' - TYPE_SMF_OS2 = 'smf-os2' - TYPE_AOC = 'aoc' - TYPE_POWER = 'power' - TYPE_USB = 'usb' - - -@strawberry.enum -class LinkStatusEnum(Enum): - - STATUS_CONNECTED = 'connected' - STATUS_PLANNED = 'planned' - STATUS_DECOMMISSIONING = 'decommissioning' - - -@strawberry.enum -class CableLengthUnitEnum(Enum): - - # Metric - UNIT_KILOMETER = 'km' - UNIT_METER = 'm' - UNIT_CENTIMETER = 'cm' - - # Imperial - UNIT_MILE = 'mi' - UNIT_FOOT = 'ft' - UNIT_INCH = 'in' - - -# -# CableTerminations -# - -@strawberry.enum -class CableEndEnum(Enum): - SIDE_A = 'A' - SIDE_B = 'B' - - -# -# PowerFeeds -# - -@strawberry.enum -class PowerFeedStatusEnum(Enum): - STATUS_OFFLINE = 'offline' - STATUS_ACTIVE = 'active' - STATUS_PLANNED = 'planned' - STATUS_FAILED = 'failed' - - -@strawberry.enum -class PowerFeedTypeEnum(Enum): - TYPE_PRIMARY = 'primary' - TYPE_REDUNDANT = 'redundant' - - -@strawberry.enum -class PowerFeedSupplyEnum(Enum): - - SUPPLY_AC = 'ac' - SUPPLY_DC = 'dc' - - -@strawberry.enum -class PowerFeedPhaseEnum(Enum): - - PHASE_SINGLE = 'single-phase' - PHASE_3PHASE = 'three-phase' - - -# -# VDC -# -@strawberry.enum -class VirtualDeviceContextStatusEnum(Enum): - STATUS_ACTIVE = 'active' - STATUS_PLANNED = 'planned' - STATUS_OFFLINE = 'offline' - - -# -# InventoryItem -# - -@strawberry.enum -class InventoryItemStatusEnum(Enum): - STATUS_OFFLINE = 'offline' - STATUS_ACTIVE = 'active' - STATUS_PLANNED = 'planned' - STATUS_STAGED = 'staged' - STATUS_FAILED = 'failed' - STATUS_DECOMMISSIONING = 'decommissioning' +from dcim.choices import * + +__all__ = ( + 'CableEndEnum', + 'CableLengthUnitEnum', + 'CableTypeEnum', + 'ConsolePortSpeedEnum', + 'ConsolePortTypeEnum', + 'DeviceAirflowEnum', + 'DeviceFaceEnum', + 'DeviceStatusEnum', + 'InterfaceDuplexEnum', + 'InterfaceModeEnum', + 'InterfacePoEModeEnum', + 'InterfacePoETypeEnum', + 'InterfaceSpeedEnum', + 'InterfaceTypeEnum', + 'InventoryItemStatusEnum', + 'LinkStatusEnum', + 'LocationStatusEnum', + 'ModuleAirflowEnum', + 'ModuleStatusEnum', + 'PortTypeEnum', + 'PowerFeedPhaseEnum', + 'PowerFeedStatusEnum', + 'PowerFeedSupplyEnum', + 'PowerFeedTypeEnum', + 'PowerOutletFeedLegEnum', + 'PowerOutletTypeEnum', + 'PowerPortTypeEnum', + 'RackAirflowEnum', + 'RackDimensionUnitEnum', + 'RackFormFactorEnum', + 'RackStatusEnum', + 'RackWidthEnum', + 'SiteStatusEnum', + 'SubdeviceRoleEnum', + 'VirtualDeviceContextStatusEnum', +) + +CableEndEnum = strawberry.enum(CableEndChoices.as_enum()) +CableLengthUnitEnum = strawberry.enum(CableLengthUnitChoices.as_enum()) +CableTypeEnum = strawberry.enum(CableTypeChoices.as_enum()) +ConsolePortSpeedEnum = strawberry.enum(ConsolePortSpeedChoices.as_enum()) +ConsolePortTypeEnum = strawberry.enum(ConsolePortTypeChoices.as_enum()) +DeviceAirflowEnum = strawberry.enum(DeviceAirflowChoices.as_enum()) +DeviceFaceEnum = strawberry.enum(DeviceFaceChoices.as_enum()) +DeviceStatusEnum = strawberry.enum(DeviceStatusChoices.as_enum()) +InterfaceDuplexEnum = strawberry.enum(InterfaceDuplexChoices.as_enum()) +InterfaceModeEnum = strawberry.enum(InterfaceModeChoices.as_enum()) +InterfacePoEModeEnum = strawberry.enum(InterfacePoEModeChoices.as_enum()) +InterfacePoETypeEnum = strawberry.enum(InterfacePoETypeChoices.as_enum()) +InterfaceSpeedEnum = strawberry.enum(InterfaceSpeedChoices.as_enum()) +InterfaceTypeEnum = strawberry.enum(InterfaceTypeChoices.as_enum()) +InventoryItemStatusEnum = strawberry.enum(InventoryItemStatusChoices.as_enum()) +LinkStatusEnum = strawberry.enum(LinkStatusChoices.as_enum()) +LocationStatusEnum = strawberry.enum(LocationStatusChoices.as_enum()) +ModuleAirflowEnum = strawberry.enum(ModuleAirflowChoices.as_enum()) +ModuleStatusEnum = strawberry.enum(ModuleStatusChoices.as_enum()) +PortTypeEnum = strawberry.enum(PortTypeChoices.as_enum()) +PowerFeedPhaseEnum = strawberry.enum(PowerFeedPhaseChoices.as_enum()) +PowerFeedStatusEnum = strawberry.enum(PowerFeedStatusChoices.as_enum()) +PowerFeedSupplyEnum = strawberry.enum(PowerFeedSupplyChoices.as_enum()) +PowerFeedTypeEnum = strawberry.enum(PowerFeedTypeChoices.as_enum()) +PowerOutletFeedLegEnum = strawberry.enum(PowerOutletFeedLegChoices.as_enum()) +PowerOutletTypeEnum = strawberry.enum(PowerOutletTypeChoices.as_enum()) +PowerPortTypeEnum = strawberry.enum(PowerPortTypeChoices.as_enum()) +RackAirflowEnum = strawberry.enum(RackAirflowChoices.as_enum()) +RackDimensionUnitEnum = strawberry.enum(RackDimensionUnitChoices.as_enum()) +RackFormFactorEnum = strawberry.enum(RackFormFactorChoices.as_enum()) +RackStatusEnum = strawberry.enum(RackStatusChoices.as_enum()) +RackWidthEnum = strawberry.enum(RackWidthChoices.as_enum()) +SiteStatusEnum = strawberry.enum(SiteStatusChoices.as_enum()) +SubdeviceRoleEnum = strawberry.enum(SubdeviceRoleChoices.as_enum()) +VirtualDeviceContextStatusEnum = strawberry.enum(VirtualDeviceContextStatusChoices.as_enum()) diff --git a/netbox/extras/graphql/enums.py b/netbox/extras/graphql/enums.py index 1e44e9191..0d352b835 100644 --- a/netbox/extras/graphql/enums.py +++ b/netbox/extras/graphql/enums.py @@ -1,188 +1,26 @@ -from enum import Enum import strawberry -__all__ = [ - 'CustomFieldTypeEnum', - 'CustomFieldFilterLogicEnum', - 'CustomFieldUIVisibleEnum', - 'CustomFieldUIEditableEnum', +from extras.choices import * + +__all__ = ( 'CustomFieldChoiceSetBaseEnum', + 'CustomFieldFilterLogicEnum', + 'CustomFieldTypeEnum', + 'CustomFieldUIEditableEnum', + 'CustomFieldUIVisibleEnum', 'CustomLinkButtonClassEnum', - 'BookmarkOrderingEnum', - 'JournalEntryKindEnum', - 'LogLevelEnum', - 'DurationEnum', - 'WebhookHttpMethodEnum', - 'ChangeActionEnum', - 'DashboardWidgetColorEnum', 'EventRuleActionEnum', -] - -# -# CustomFields -# + 'JournalEntryKindEnum', + 'WebhookHttpMethodEnum', +) -@strawberry.enum -class CustomFieldTypeEnum(Enum): - TYPE_TEXT = 'text' - TYPE_LONGTEXT = 'longtext' - TYPE_INTEGER = 'integer' - TYPE_DECIMAL = 'decimal' - TYPE_BOOLEAN = 'boolean' - TYPE_DATE = 'date' - TYPE_DATETIME = 'datetime' - TYPE_URL = 'url' - TYPE_JSON = 'json' - TYPE_SELECT = 'select' - TYPE_MULTISELECT = 'multiselect' - TYPE_OBJECT = 'object' - TYPE_MULTIOBJECT = 'multiobject' - - -@strawberry.enum -class CustomFieldFilterLogicEnum(Enum): - FILTER_DISABLED = 'disabled' - FILTER_LOOSE = 'loose' - FILTER_EXACT = 'exact' - - -@strawberry.enum -class CustomFieldUIVisibleEnum(Enum): - ALWAYS = 'always' - IF_SET = 'if-set' - HIDDEN = 'hidden' - - -@strawberry.enum -class CustomFieldUIEditableEnum(Enum): - YES = 'yes' - NO = 'no' - HIDDEN = 'hidden' - - -@strawberry.enum -class CustomFieldChoiceSetBaseEnum(Enum): - IATA = 'IATA' - ISO_3166 = 'ISO_3166' - UN_LOCODE = 'UN_LOCODE' - - -# -# CustomLinks -# - - -@strawberry.enum -class CustomLinkButtonClassEnum(Enum): - LINK = 'ghost-dark' - - -# -# Bookmarks -# - - -@strawberry.enum -class BookmarkOrderingEnum(Enum): - ORDERING_NEWEST = '-created' - ORDERING_OLDEST = 'created' - ORDERING_ALPHABETICAL_AZ = 'name' - ORDERING_ALPHABETICAL_ZA = '-name' - - -# -# Journal entries -# - - -@strawberry.enum -class JournalEntryKindEnum(Enum): - KIND_INFO = 'info' - KIND_SUCCESS = 'success' - KIND_WARNING = 'warning' - KIND_DANGER = 'danger' - - -# -# Reports and Scripts -# - - -@strawberry.enum -class LogLevelEnum(Enum): - LOG_DEBUG = 'debug' - LOG_DEFAULT = 'default' - LOG_INFO = 'info' - LOG_SUCCESS = 'success' - LOG_WARNING = 'warning' - LOG_FAILURE = 'failure' - - -@strawberry.enum -class DurationEnum(Enum): - HOURLY = 60 - TWELVE_HOURS = 720 - DAILY = 1440 - WEEKLY = 10080 - THIRTY_DAYS = 43200 - - -# -# Webhooks -# - - -@strawberry.enum -class WebhookHttpMethodEnum(Enum): - METHOD_GET = 'GET' - METHOD_POST = 'POST' - METHOD_PUT = 'PUT' - METHOD_PATCH = 'PATCH' - METHOD_DELETE = 'DELETE' - - -# -# Staging -# - - -@strawberry.enum -class ChangeActionEnum(Enum): - ACTION_CREATE = 'create' - ACTION_UPDATE = 'update' - ACTION_DELETE = 'delete' - - -# -# Dashboard widgets -# - - -@strawberry.enum -class DashboardWidgetColorEnum(Enum): - BLUE = 'blue' - INDIGO = 'indigo' - PURPLE = 'purple' - PINK = 'pink' - RED = 'red' - ORANGE = 'orange' - YELLOW = 'yellow' - GREEN = 'green' - TEAL = 'teal' - CYAN = 'cyan' - GRAY = 'gray' - BLACK = 'black' - WHITE = 'white' - - -# -# Event Rules -# - - -@strawberry.enum -class EventRuleActionEnum(Enum): - WEBHOOK = 'webhook' - SCRIPT = 'script' - NOTIFICATION = 'notification' +CustomFieldChoiceSetBaseEnum = strawberry.enum(CustomFieldChoiceSetBaseChoices.as_enum()) +CustomFieldFilterLogicEnum = strawberry.enum(CustomFieldFilterLogicChoices.as_enum()) +CustomFieldTypeEnum = strawberry.enum(CustomFieldTypeChoices.as_enum()) +CustomFieldUIEditableEnum = strawberry.enum(CustomFieldUIEditableChoices.as_enum()) +CustomFieldUIVisibleEnum = strawberry.enum(CustomFieldUIVisibleChoices.as_enum()) +CustomLinkButtonClassEnum = strawberry.enum(CustomLinkButtonClassChoices.as_enum()) +EventRuleActionEnum = strawberry.enum(EventRuleActionChoices.as_enum()) +JournalEntryKindEnum = strawberry.enum(JournalEntryKindChoices.as_enum()) +WebhookHttpMethodEnum = strawberry.enum(WebhookHttpMethodChoices.as_enum()) diff --git a/netbox/extras/graphql/filters.py b/netbox/extras/graphql/filters.py index 7fc390b54..733fb6423 100644 --- a/netbox/extras/graphql/filters.py +++ b/netbox/extras/graphql/filters.py @@ -184,7 +184,9 @@ class CustomLinkFilter(BaseObjectTypeFilterMixin, ChangeLogFilterMixin): strawberry_django.filter_field() ) group_name: FilterLookup[str] | None = strawberry_django.filter_field() - button_class: FilterLookup[str] | None = strawberry_django.filter_field() + button_class: Annotated['CustomLinkButtonClassEnum', strawberry.lazy('extras.graphql.enums')] | None = ( + strawberry_django.filter_field() + ) new_window: FilterLookup[bool] | None = strawberry_django.filter_field() diff --git a/netbox/ipam/graphql/enums.py b/netbox/ipam/graphql/enums.py index b81254880..34fb1a6fd 100644 --- a/netbox/ipam/graphql/enums.py +++ b/netbox/ipam/graphql/enums.py @@ -1,123 +1,27 @@ -from enum import Enum import strawberry -__all__ = [ - 'IPAddressFamilyEnum', - 'PrefixStatusEnum', - 'IPRangeStatusEnum', - 'IPAddressStatusEnum', - 'IPAddressRoleEnum', - 'FHRPGroupProtocolEnum', +from ipam.choices import * + +__all__ = ( 'FHRPGroupAuthTypeEnum', + 'FHRPGroupProtocolEnum', + 'IPAddressFamilyEnum', + 'IPAddressRoleEnum', + 'IPAddressStatusEnum', + 'IPRangeStatusEnum', + 'PrefixStatusEnum', + 'ServiceProtocolEnum', 'VLANStatusEnum', 'VLANQinQRoleEnum', - 'ServiceProtocolEnum', -] +) - -@strawberry.enum -class IPAddressFamilyEnum(Enum): - FAMILY_4 = 4 - FAMILY_6 = 6 - - -# -# Prefixes -# - - -@strawberry.enum -class PrefixStatusEnum(Enum): - STATUS_CONTAINER = 'container' - STATUS_ACTIVE = 'active' - STATUS_RESERVED = 'reserved' - STATUS_DEPRECATED = 'deprecated' - - -# -# IP Ranges -# - - -@strawberry.enum -class IPRangeStatusEnum(Enum): - STATUS_ACTIVE = 'active' - STATUS_RESERVED = 'reserved' - STATUS_DEPRECATED = 'deprecated' - - -# -# IP Addresses -# - - -@strawberry.enum -class IPAddressStatusEnum(Enum): - STATUS_ACTIVE = 'active' - STATUS_RESERVED = 'reserved' - STATUS_DEPRECATED = 'deprecated' - STATUS_DHCP = 'dhcp' - STATUS_SLAAC = 'slaac' - - -@strawberry.enum -class IPAddressRoleEnum(Enum): - ROLE_LOOPBACK = 'loopback' - ROLE_SECONDARY = 'secondary' - ROLE_ANYCAST = 'anycast' - ROLE_VIP = 'vip' - ROLE_VRRP = 'vrrp' - ROLE_HSRP = 'hsrp' - ROLE_GLBP = 'glbp' - ROLE_CARP = 'carp' - - -# -# FHRP -# - - -@strawberry.enum -class FHRPGroupProtocolEnum(Enum): - PROTOCOL_VRRP2 = 'vrrp2' - PROTOCOL_VRRP3 = 'vrrp3' - PROTOCOL_HSRP = 'hsrp' - PROTOCOL_GLBP = 'glbp' - PROTOCOL_CARP = 'carp' - PROTOCOL_CLUSTERXL = 'clusterxl' - PROTOCOL_OTHER = 'other' - - -@strawberry.enum -class FHRPGroupAuthTypeEnum(Enum): - AUTHENTICATION_PLAINTEXT = 'plaintext' - AUTHENTICATION_MD5 = 'md5' - - -# -# VLANs -# - - -@strawberry.enum -class VLANStatusEnum(Enum): - STATUS_ACTIVE = 'active' - STATUS_RESERVED = 'reserved' - STATUS_DEPRECATED = 'deprecated' - - -@strawberry.enum -class VLANQinQRoleEnum(Enum): - ROLE_SERVICE = 'svlan' - ROLE_CUSTOMER = 'cvlan' - -# -# Services -# - - -@strawberry.enum -class ServiceProtocolEnum(Enum): - PROTOCOL_TCP = 'tcp' - PROTOCOL_UDP = 'udp' - PROTOCOL_SCTP = 'sctp' +FHRPGroupAuthTypeEnum = strawberry.enum(FHRPGroupAuthTypeChoices.as_enum()) +FHRPGroupProtocolEnum = strawberry.enum(FHRPGroupProtocolChoices.as_enum()) +IPAddressFamilyEnum = strawberry.enum(IPAddressFamilyChoices.as_enum()) +IPAddressRoleEnum = strawberry.enum(IPAddressRoleChoices.as_enum()) +IPAddressStatusEnum = strawberry.enum(IPAddressStatusChoices.as_enum()) +IPRangeStatusEnum = strawberry.enum(IPRangeStatusChoices.as_enum()) +PrefixStatusEnum = strawberry.enum(PrefixStatusChoices.as_enum()) +ServiceProtocolEnum = strawberry.enum(ServiceProtocolChoices.as_enum()) +VLANStatusEnum = strawberry.enum(VLANStatusChoices.as_enum()) +VLANQinQRoleEnum = strawberry.enum(VLANQinQRoleChoices.as_enum()) diff --git a/netbox/netbox/graphql/enums.py b/netbox/netbox/graphql/enums.py index d92f9df14..df62f8b3d 100644 --- a/netbox/netbox/graphql/enums.py +++ b/netbox/netbox/graphql/enums.py @@ -1,112 +1,13 @@ -from enum import Enum import strawberry -__all__ = [ +from netbox.choices import * + +__all__ = ( 'ColorEnum', - 'ButtonColorEnum', - 'ImportMethodEnumEnum', - 'ImportFormatEnum', 'DistanceUnitEnum', 'WeightUnitEnum', -] +) -# -# Generic color choices -# - - -@strawberry.enum -class ColorEnum(Enum): - COLOR_DARK_RED = 'aa1409' - COLOR_RED = 'f44336' - COLOR_PINK = 'e91e63' - COLOR_ROSE = 'ffe4e1' - COLOR_FUCHSIA = 'ff66ff' - COLOR_PURPLE = '9c27b0' - COLOR_DARK_PURPLE = '673ab7' - COLOR_INDIGO = '3f51b5' - COLOR_BLUE = '2196f3' - COLOR_LIGHT_BLUE = '03a9f4' - COLOR_CYAN = '00bcd4' - COLOR_TEAL = '009688' - COLOR_AQUA = '00ffff' - COLOR_DARK_GREEN = '2f6a31' - COLOR_GREEN = '4caf50' - COLOR_LIGHT_GREEN = '8bc34a' - COLOR_LIME = 'cddc39' - COLOR_YELLOW = 'ffeb3b' - COLOR_AMBER = 'ffc107' - COLOR_ORANGE = 'ff9800' - COLOR_DARK_ORANGE = 'ff5722' - COLOR_BROWN = '795548' - COLOR_LIGHT_GREY = 'c0c0c0' - COLOR_GREY = '9e9e9e' - COLOR_DARK_GREY = '607d8b' - COLOR_BLACK = '111111' - COLOR_WHITE = 'ffffff' - - -# -# Button color choices -# - - -@strawberry.enum -class ButtonColorEnum(Enum): - DEFAULT = 'default' - BLUE = 'blue' - INDIGO = 'indigo' - PURPLE = 'purple' - PINK = 'pink' - RED = 'red' - ORANGE = 'orange' - YELLOW = 'yellow' - GREEN = 'green' - TEAL = 'teal' - CYAN = 'cyan' - GRAY = 'gray' - GREY = 'gray' # Backward compatability for <3.2 - BLACK = 'black' - WHITE = 'white' - - -# -# Import -# - - -@strawberry.enum -class ImportMethodEnumEnum(Enum): - DIRECT = 'direct' - UPLOAD = 'upload' - DATA_FILE = 'datafile' - - -@strawberry.enum -class ImportFormatEnum(Enum): - AUTO = 'auto' - CSV = 'csv' - JSON = 'json' - YAML = 'yaml' - - -@strawberry.enum -class DistanceUnitEnum(Enum): - # Metric - UNIT_KILOMETER = 'km' - UNIT_METER = 'm' - - # Imperial - UNIT_MILE = 'mi' - UNIT_FOOT = 'ft' - - -@strawberry.enum -class WeightUnitEnum(Enum): - # Metric - UNIT_KILOGRAM = 'kg' - UNIT_GRAM = 'g' - - # Imperial - UNIT_POUND = 'lb' - UNIT_OUNCE = 'oz' +ColorEnum = strawberry.enum(ColorChoices.as_enum()) +DistanceUnitEnum = strawberry.enum(DistanceUnitChoices.as_enum()) +WeightUnitEnum = strawberry.enum(WeightUnitChoices.as_enum()) diff --git a/netbox/tenancy/graphql/enums.py b/netbox/tenancy/graphql/enums.py new file mode 100644 index 000000000..90fc30483 --- /dev/null +++ b/netbox/tenancy/graphql/enums.py @@ -0,0 +1,9 @@ +import strawberry + +from tenancy.choices import * + +__all__ = ( + 'ContactPriorityEnum', +) + +ContactPriorityEnum = strawberry.enum(ContactPriorityChoices.as_enum()) diff --git a/netbox/tenancy/graphql/filters.py b/netbox/tenancy/graphql/filters.py index 06af3f8b9..a63f8da60 100644 --- a/netbox/tenancy/graphql/filters.py +++ b/netbox/tenancy/graphql/filters.py @@ -16,6 +16,7 @@ from tenancy import models from .filter_mixins import ContactFilterMixin if TYPE_CHECKING: + from .enums import * from netbox.graphql.filter_lookups import TreeNodeFilter from circuits.graphql.filters import * from dcim.graphql.filters import * @@ -158,4 +159,6 @@ class ContactAssignmentFilter(CustomFieldsFilterMixin, TagsFilterMixin, ChangeLo strawberry_django.filter_field() ) role_id: ID | None = strawberry_django.filter_field() - priority: FilterLookup[str] | None = strawberry_django.filter_field() + priority: Annotated['ContactPriorityEnum', strawberry.lazy('tenancy.graphql.enums')] | None = ( + strawberry_django.filter_field() + ) diff --git a/netbox/tenancy/graphql/types.py b/netbox/tenancy/graphql/types.py index 9d537a05c..a8b338578 100644 --- a/netbox/tenancy/graphql/types.py +++ b/netbox/tenancy/graphql/types.py @@ -34,7 +34,7 @@ __all__ = ( @strawberry_django.type(models.Tenant, fields='__all__', filters=TenantFilter) class TenantType(NetBoxObjectType): - group: Annotated['TenantGroupType', strawberry.lazy('tenancy.graphql.types')] + group: Annotated['TenantGroupType', strawberry.lazy('tenancy.graphql.types')] | None contacts: List[Annotated['ContactType', strawberry.lazy('tenancy.graphql.types')]] asns: List[Annotated['ASNType', strawberry.lazy('ipam.graphql.types')]] circuits: List[Annotated['CircuitType', strawberry.lazy('circuits.graphql.types')]] diff --git a/netbox/utilities/choices.py b/netbox/utilities/choices.py index 25d055942..7b3648afa 100644 --- a/netbox/utilities/choices.py +++ b/netbox/utilities/choices.py @@ -1,3 +1,5 @@ +import enum + from django.conf import settings from django.utils.translation import gettext_lazy as _ @@ -65,6 +67,23 @@ class ChoiceSet(metaclass=ChoiceSetMeta): def values(cls): return [c[0] for c in unpack_grouped_choices(cls._choices)] + @classmethod + def as_enum(cls, name=None): + """ + Return the ChoiceSet as an Enum. If no name is provided, "Choices" will be stripped from the class name (if + present) and "Enum" will be appended. For example, "CircuitStatusChoices" will become "CircuitStatusEnum". + """ + name = name or f"{cls.__name__.split('Choices')[0]}Enum" + data = {} + choices = cls.values() + + for attr in dir(cls): + value = getattr(cls, attr) + if attr.isupper() and value in choices: + data[attr] = value + + return enum.Enum(name, data) + def unpack_grouped_choices(choices): """ diff --git a/netbox/virtualization/graphql/enums.py b/netbox/virtualization/graphql/enums.py index 081669f1f..5b1c54e0c 100644 --- a/netbox/virtualization/graphql/enums.py +++ b/netbox/virtualization/graphql/enums.py @@ -1,33 +1,11 @@ -from enum import Enum import strawberry -__all__ = ['ClusterStatusEnum', 'VirtualMachineStatusEnum'] +from virtualization.choices import * +__all__ = ( + 'ClusterStatusEnum', + 'VirtualMachineStatusEnum', +) -# -# Clusters -# - -@strawberry.enum -class ClusterStatusEnum(Enum): - - STATUS_PLANNED = 'planned' - STATUS_STAGING = 'staging' - STATUS_ACTIVE = 'active' - STATUS_DECOMMISSIONING = 'decommissioning' - STATUS_OFFLINE = 'offline' - - -# -# VirtualMachines -# - -@strawberry.enum -class VirtualMachineStatusEnum(Enum): - - STATUS_OFFLINE = 'offline' - STATUS_ACTIVE = 'active' - STATUS_PLANNED = 'planned' - STATUS_STAGED = 'staged' - STATUS_FAILED = 'failed' - STATUS_DECOMMISSIONING = 'decommissioning' +ClusterStatusEnum = strawberry.enum(ClusterStatusChoices.as_enum()) +VirtualMachineStatusEnum = strawberry.enum(VirtualMachineStatusChoices.as_enum()) diff --git a/netbox/vpn/graphql/enums.py b/netbox/vpn/graphql/enums.py index 9dc6bdac4..053932ade 100644 --- a/netbox/vpn/graphql/enums.py +++ b/netbox/vpn/graphql/enums.py @@ -1,159 +1,31 @@ -from enum import Enum import strawberry -__all__ = [ - 'TunnelStatusEnum', - 'TunnelEncapsulationEnum', - 'TunnelTerminationTypeEnum', - 'TunnelTerminationRoleEnum', - 'IKEVersionEnum', - 'IKEModeEnum', - 'AuthenticationMethodEnum', - 'IPSecModeEnum', - 'EncryptionAlgorithmEnum', +from vpn.choices import * + +__all__ = ( 'AuthenticationAlgorithmEnum', + 'AuthenticationMethodEnum', 'DHGroupEnum', + 'EncryptionAlgorithmEnum', + 'IKEModeEnum', + 'IKEVersionEnum', + 'IPSecModeEnum', 'L2VPNTypeEnum', -] + 'TunnelEncapsulationEnum', + 'TunnelStatusEnum', + 'TunnelTerminationRoleEnum', + 'TunnelTerminationTypeEnum', +) -# -# Tunnels -# - - -@strawberry.enum -class TunnelStatusEnum(Enum): - STATUS_PLANNED = 'planned' - STATUS_ACTIVE = 'active' - STATUS_DISABLED = 'disabled' - - -@strawberry.enum -class TunnelEncapsulationEnum(Enum): - ENCAP_GRE = 'gre' - ENCAP_IPSEC_TRANSPORT = 'ipsec-transport' - ENCAP_IPSEC_TUNNEL = 'ipsec-tunnel' - ENCAP_IP_IP = 'ip-ip' - ENCAP_L2TP = 'l2tp' - ENCAP_OPENVPN = 'openvpn' - ENCAP_PPTP = 'pptp' - ENCAP_WIREGUARD = 'wireguard' - - -@strawberry.enum -class TunnelTerminationTypeEnum(Enum): - # For TunnelCreateForm - TYPE_DEVICE = 'dcim.device' - TYPE_VIRTUALMACHINE = 'virtualization.virtualmachine' - - -@strawberry.enum -class TunnelTerminationRoleEnum(Enum): - ROLE_PEER = 'peer' - ROLE_HUB = 'hub' - ROLE_SPOKE = 'spoke' - - -# -# Crypto -# - - -@strawberry.enum -class IKEVersionEnum(Enum): - VERSION_1 = 1 - VERSION_2 = 2 - - -@strawberry.enum -class IKEModeEnum(Enum): - AGGRESSIVE = 'aggressive' - MAIN = 'main' - - -@strawberry.enum -class AuthenticationMethodEnum(Enum): - PRESHARED_KEYS = 'preshared-keys' - CERTIFICATES = 'certificates' - RSA_SIGNATURES = 'rsa-signatures' - DSA_SIGNATURES = 'dsa-signatures' - - -@strawberry.enum -class IPSecModeEnum(Enum): - ESP = 'esp' - AH = 'ah' - - -@strawberry.enum -class EncryptionAlgorithmEnum(Enum): - ENCRYPTION_AES128_CBC = 'aes-128-cbc' - ENCRYPTION_AES128_GCM = 'aes-128-gcm' - ENCRYPTION_AES192_CBC = 'aes-192-cbc' - ENCRYPTION_AES192_GCM = 'aes-192-gcm' - ENCRYPTION_AES256_CBC = 'aes-256-cbc' - ENCRYPTION_AES256_GCM = 'aes-256-gcm' - ENCRYPTION_3DES = '3des-cbc' - ENCRYPTION_DES = 'des-cbc' - - -@strawberry.enum -class AuthenticationAlgorithmEnum(Enum): - AUTH_HMAC_SHA1 = 'hmac-sha1' - AUTH_HMAC_SHA256 = 'hmac-sha256' - AUTH_HMAC_SHA384 = 'hmac-sha384' - AUTH_HMAC_SHA512 = 'hmac-sha512' - AUTH_HMAC_MD5 = 'hmac-md5' - - -@strawberry.enum -class DHGroupEnum(Enum): - # https://www.iana.org/assignments/ikev2-parameters/ikev2-parameters.xhtml#ikev2-parameters-8 - GROUP_1 = 1 # 768-bit MODP - GROUP_2 = 2 # 1024-but MODP - # Groups 3-4 reserved - GROUP_5 = 5 # 1536-bit MODP - # Groups 6-13 unassigned - GROUP_14 = 14 # 2048-bit MODP - GROUP_15 = 15 # 3072-bit MODP - GROUP_16 = 16 # 4096-bit MODP - GROUP_17 = 17 # 6144-bit MODP - GROUP_18 = 18 # 8192-bit MODP - GROUP_19 = 19 # 256-bit random ECP - GROUP_20 = 20 # 384-bit random ECP - GROUP_21 = 21 # 521-bit random ECP (521 is not a typo) - GROUP_22 = 22 # 1024-bit MODP w/160-bit prime - GROUP_23 = 23 # 2048-bit MODP w/224-bit prime - GROUP_24 = 24 # 2048-bit MODP w/256-bit prime - GROUP_25 = 25 # 192-bit ECP - GROUP_26 = 26 # 224-bit ECP - GROUP_27 = 27 # brainpoolP224r1 - GROUP_28 = 28 # brainpoolP256r1 - GROUP_29 = 29 # brainpoolP384r1 - GROUP_30 = 30 # brainpoolP512r1 - GROUP_31 = 31 # Curve25519 - GROUP_32 = 32 # Curve448 - GROUP_33 = 33 # GOST3410_2012_256 - GROUP_34 = 34 # GOST3410_2012_512 - - -# -# L2VPN -# - - -@strawberry.enum -class L2VPNTypeEnum(Enum): - TYPE_VPLS = 'vpls' - TYPE_VPWS = 'vpws' - TYPE_EPL = 'epl' - TYPE_EVPL = 'evpl' - TYPE_EPLAN = 'ep-lan' - TYPE_EVPLAN = 'evp-lan' - TYPE_EPTREE = 'ep-tree' - TYPE_EVPTREE = 'evp-tree' - TYPE_VXLAN = 'vxlan' - TYPE_VXLAN_EVPN = 'vxlan-evpn' - TYPE_MPLS_EVPN = 'mpls-evpn' - TYPE_PBB_EVPN = 'pbb-evpn' - TYPE_EVPN_VPWS = 'evpn-vpws' +AuthenticationAlgorithmEnum = strawberry.enum(AuthenticationAlgorithmChoices.as_enum()) +AuthenticationMethodEnum = strawberry.enum(AuthenticationMethodChoices.as_enum()) +DHGroupEnum = strawberry.enum(DHGroupChoices.as_enum()) +EncryptionAlgorithmEnum = strawberry.enum(EncryptionAlgorithmChoices.as_enum()) +IKEModeEnum = strawberry.enum(IKEModeChoices.as_enum()) +IKEVersionEnum = strawberry.enum(IKEVersionChoices.as_enum()) +IPSecModeEnum = strawberry.enum(IPSecModeChoices.as_enum()) +L2VPNTypeEnum = strawberry.enum(L2VPNTypeChoices.as_enum()) +TunnelEncapsulationEnum = strawberry.enum(TunnelEncapsulationChoices.as_enum()) +TunnelStatusEnum = strawberry.enum(TunnelStatusChoices.as_enum()) +TunnelTerminationRoleEnum = strawberry.enum(TunnelTerminationRoleChoices.as_enum()) +TunnelTerminationTypeEnum = strawberry.enum(TunnelTerminationTypeChoices.as_enum()) diff --git a/netbox/wireless/graphql/enums.py b/netbox/wireless/graphql/enums.py index da8368cde..d3c6ad21a 100644 --- a/netbox/wireless/graphql/enums.py +++ b/netbox/wireless/graphql/enums.py @@ -1,247 +1,17 @@ -from enum import Enum import strawberry -__all__ = [ - 'WirelessRoleEnum', - 'WirelessLANStatusEnum', - 'WirelessChannelEnum', - 'WirelessAuthTypeEnum', +from wireless.choices import * + +__all__ = ( 'WirelessAuthCipherEnum', -] + 'WirelessAuthTypeEnum', + 'WirelessChannelEnum', + 'WirelessLANStatusEnum', + 'WirelessRoleEnum', +) - -@strawberry.enum -class WirelessRoleEnum(Enum): - ROLE_AP = 'ap' - ROLE_STATION = 'station' - - -@strawberry.enum -class WirelessLANStatusEnum(Enum): - STATUS_ACTIVE = 'active' - STATUS_RESERVED = 'reserved' - STATUS_DISABLED = 'disabled' - STATUS_DEPRECATED = 'deprecated' - - -@strawberry.enum -class WirelessChannelEnum(Enum): - # 2.4 GHz - CHANNEL_24G_1 = '2.4g-1-2412-22' - CHANNEL_24G_2 = '2.4g-2-2417-22' - CHANNEL_24G_3 = '2.4g-3-2422-22' - CHANNEL_24G_4 = '2.4g-4-2427-22' - CHANNEL_24G_5 = '2.4g-5-2432-22' - CHANNEL_24G_6 = '2.4g-6-2437-22' - CHANNEL_24G_7 = '2.4g-7-2442-22' - CHANNEL_24G_8 = '2.4g-8-2447-22' - CHANNEL_24G_9 = '2.4g-9-2452-22' - CHANNEL_24G_10 = '2.4g-10-2457-22' - CHANNEL_24G_11 = '2.4g-11-2462-22' - CHANNEL_24G_12 = '2.4g-12-2467-22' - CHANNEL_24G_13 = '2.4g-13-2472-22' - - # 5 GHz - CHANNEL_5G_32 = '5g-32-5160-20' - CHANNEL_5G_34 = '5g-34-5170-40' - CHANNEL_5G_36 = '5g-36-5180-20' - CHANNEL_5G_38 = '5g-38-5190-40' - CHANNEL_5G_40 = '5g-40-5200-20' - CHANNEL_5G_42 = '5g-42-5210-80' - CHANNEL_5G_44 = '5g-44-5220-20' - CHANNEL_5G_46 = '5g-46-5230-40' - CHANNEL_5G_48 = '5g-48-5240-20' - CHANNEL_5G_50 = '5g-50-5250-160' - CHANNEL_5G_52 = '5g-52-5260-20' - CHANNEL_5G_54 = '5g-54-5270-40' - CHANNEL_5G_56 = '5g-56-5280-20' - CHANNEL_5G_58 = '5g-58-5290-80' - CHANNEL_5G_60 = '5g-60-5300-20' - CHANNEL_5G_62 = '5g-62-5310-40' - CHANNEL_5G_64 = '5g-64-5320-20' - CHANNEL_5G_100 = '5g-100-5500-20' - CHANNEL_5G_102 = '5g-102-5510-40' - CHANNEL_5G_104 = '5g-104-5520-20' - CHANNEL_5G_106 = '5g-106-5530-80' - CHANNEL_5G_108 = '5g-108-5540-20' - CHANNEL_5G_110 = '5g-110-5550-40' - CHANNEL_5G_112 = '5g-112-5560-20' - CHANNEL_5G_114 = '5g-114-5570-160' - CHANNEL_5G_116 = '5g-116-5580-20' - CHANNEL_5G_118 = '5g-118-5590-40' - CHANNEL_5G_120 = '5g-120-5600-20' - CHANNEL_5G_122 = '5g-122-5610-80' - CHANNEL_5G_124 = '5g-124-5620-20' - CHANNEL_5G_126 = '5g-126-5630-40' - CHANNEL_5G_128 = '5g-128-5640-20' - CHANNEL_5G_132 = '5g-132-5660-20' - CHANNEL_5G_134 = '5g-134-5670-40' - CHANNEL_5G_136 = '5g-136-5680-20' - CHANNEL_5G_138 = '5g-138-5690-80' - CHANNEL_5G_140 = '5g-140-5700-20' - CHANNEL_5G_142 = '5g-142-5710-40' - CHANNEL_5G_144 = '5g-144-5720-20' - CHANNEL_5G_149 = '5g-149-5745-20' - CHANNEL_5G_151 = '5g-151-5755-40' - CHANNEL_5G_153 = '5g-153-5765-20' - CHANNEL_5G_155 = '5g-155-5775-80' - CHANNEL_5G_157 = '5g-157-5785-20' - CHANNEL_5G_159 = '5g-159-5795-40' - CHANNEL_5G_161 = '5g-161-5805-20' - CHANNEL_5G_163 = '5g-163-5815-160' - CHANNEL_5G_165 = '5g-165-5825-20' - CHANNEL_5G_167 = '5g-167-5835-40' - CHANNEL_5G_169 = '5g-169-5845-20' - CHANNEL_5G_171 = '5g-171-5855-80' - CHANNEL_5G_173 = '5g-173-5865-20' - CHANNEL_5G_175 = '5g-175-5875-40' - CHANNEL_5G_177 = '5g-177-5885-20' - - # 6 GHz - CHANNEL_6G_1 = '6g-1-5955-20' - CHANNEL_6G_3 = '6g-3-5965-40' - CHANNEL_6G_5 = '6g-5-5975-20' - CHANNEL_6G_7 = '6g-7-5985-80' - CHANNEL_6G_9 = '6g-9-5995-20' - CHANNEL_6G_11 = '6g-11-6005-40' - CHANNEL_6G_13 = '6g-13-6015-20' - CHANNEL_6G_15 = '6g-15-6025-160' - CHANNEL_6G_17 = '6g-17-6035-20' - CHANNEL_6G_19 = '6g-19-6045-40' - CHANNEL_6G_21 = '6g-21-6055-20' - CHANNEL_6G_23 = '6g-23-6065-80' - CHANNEL_6G_25 = '6g-25-6075-20' - CHANNEL_6G_27 = '6g-27-6085-40' - CHANNEL_6G_29 = '6g-29-6095-20' - CHANNEL_6G_31 = '6g-31-6105-320' - CHANNEL_6G_33 = '6g-33-6115-20' - CHANNEL_6G_35 = '6g-35-6125-40' - CHANNEL_6G_37 = '6g-37-6135-20' - CHANNEL_6G_39 = '6g-39-6145-80' - CHANNEL_6G_41 = '6g-41-6155-20' - CHANNEL_6G_43 = '6g-43-6165-40' - CHANNEL_6G_45 = '6g-45-6175-20' - CHANNEL_6G_47 = '6g-47-6185-160' - CHANNEL_6G_49 = '6g-49-6195-20' - CHANNEL_6G_51 = '6g-51-6205-40' - CHANNEL_6G_53 = '6g-53-6215-20' - CHANNEL_6G_55 = '6g-55-6225-80' - CHANNEL_6G_57 = '6g-57-6235-20' - CHANNEL_6G_59 = '6g-59-6245-40' - CHANNEL_6G_61 = '6g-61-6255-20' - CHANNEL_6G_65 = '6g-65-6275-20' - CHANNEL_6G_67 = '6g-67-6285-40' - CHANNEL_6G_69 = '6g-69-6295-20' - CHANNEL_6G_71 = '6g-71-6305-80' - CHANNEL_6G_73 = '6g-73-6315-20' - CHANNEL_6G_75 = '6g-75-6325-40' - CHANNEL_6G_77 = '6g-77-6335-20' - CHANNEL_6G_79 = '6g-79-6345-160' - CHANNEL_6G_81 = '6g-81-6355-20' - CHANNEL_6G_83 = '6g-83-6365-40' - CHANNEL_6G_85 = '6g-85-6375-20' - CHANNEL_6G_87 = '6g-87-6385-80' - CHANNEL_6G_89 = '6g-89-6395-20' - CHANNEL_6G_91 = '6g-91-6405-40' - CHANNEL_6G_93 = '6g-93-6415-20' - CHANNEL_6G_95 = '6g-95-6425-320' - CHANNEL_6G_97 = '6g-97-6435-20' - CHANNEL_6G_99 = '6g-99-6445-40' - CHANNEL_6G_101 = '6g-101-6455-20' - CHANNEL_6G_103 = '6g-103-6465-80' - CHANNEL_6G_105 = '6g-105-6475-20' - CHANNEL_6G_107 = '6g-107-6485-40' - CHANNEL_6G_109 = '6g-109-6495-20' - CHANNEL_6G_111 = '6g-111-6505-160' - CHANNEL_6G_113 = '6g-113-6515-20' - CHANNEL_6G_115 = '6g-115-6525-40' - CHANNEL_6G_117 = '6g-117-6535-20' - CHANNEL_6G_119 = '6g-119-6545-80' - CHANNEL_6G_121 = '6g-121-6555-20' - CHANNEL_6G_123 = '6g-123-6565-40' - CHANNEL_6G_125 = '6g-125-6575-20' - CHANNEL_6G_129 = '6g-129-6595-20' - CHANNEL_6G_131 = '6g-131-6605-40' - CHANNEL_6G_133 = '6g-133-6615-20' - CHANNEL_6G_135 = '6g-135-6625-80' - CHANNEL_6G_137 = '6g-137-6635-20' - CHANNEL_6G_139 = '6g-139-6645-40' - CHANNEL_6G_141 = '6g-141-6655-20' - CHANNEL_6G_143 = '6g-143-6665-160' - CHANNEL_6G_145 = '6g-145-6675-20' - CHANNEL_6G_147 = '6g-147-6685-40' - CHANNEL_6G_149 = '6g-149-6695-20' - CHANNEL_6G_151 = '6g-151-6705-80' - CHANNEL_6G_153 = '6g-153-6715-20' - CHANNEL_6G_155 = '6g-155-6725-40' - CHANNEL_6G_157 = '6g-157-6735-20' - CHANNEL_6G_159 = '6g-159-6745-320' - CHANNEL_6G_161 = '6g-161-6755-20' - CHANNEL_6G_163 = '6g-163-6765-40' - CHANNEL_6G_165 = '6g-165-6775-20' - CHANNEL_6G_167 = '6g-167-6785-80' - CHANNEL_6G_169 = '6g-169-6795-20' - CHANNEL_6G_171 = '6g-171-6805-40' - CHANNEL_6G_173 = '6g-173-6815-20' - CHANNEL_6G_175 = '6g-175-6825-160' - CHANNEL_6G_177 = '6g-177-6835-20' - CHANNEL_6G_179 = '6g-179-6845-40' - CHANNEL_6G_181 = '6g-181-6855-20' - CHANNEL_6G_183 = '6g-183-6865-80' - CHANNEL_6G_185 = '6g-185-6875-20' - CHANNEL_6G_187 = '6g-187-6885-40' - CHANNEL_6G_189 = '6g-189-6895-20' - CHANNEL_6G_193 = '6g-193-6915-20' - CHANNEL_6G_195 = '6g-195-6925-40' - CHANNEL_6G_197 = '6g-197-6935-20' - CHANNEL_6G_199 = '6g-199-6945-80' - CHANNEL_6G_201 = '6g-201-6955-20' - CHANNEL_6G_203 = '6g-203-6965-40' - CHANNEL_6G_205 = '6g-205-6975-20' - CHANNEL_6G_207 = '6g-207-6985-160' - CHANNEL_6G_209 = '6g-209-6995-20' - CHANNEL_6G_211 = '6g-211-7005-40' - CHANNEL_6G_213 = '6g-213-7015-20' - CHANNEL_6G_215 = '6g-215-7025-80' - CHANNEL_6G_217 = '6g-217-7035-20' - CHANNEL_6G_219 = '6g-219-7045-40' - CHANNEL_6G_221 = '6g-221-7055-20' - CHANNEL_6G_225 = '6g-225-7075-20' - CHANNEL_6G_227 = '6g-227-7085-40' - CHANNEL_6G_229 = '6g-229-7095-20' - CHANNEL_6G_233 = '6g-233-7115-20' - - # 60 GHz - CHANNEL_60G_1 = '60g-1-58320-2160' - CHANNEL_60G_2 = '60g-2-60480-2160' - CHANNEL_60G_3 = '60g-3-62640-2160' - CHANNEL_60G_4 = '60g-4-64800-2160' - CHANNEL_60G_5 = '60g-5-66960-2160' - CHANNEL_60G_6 = '60g-6-69120-2160' - CHANNEL_60G_9 = '60g-9-59400-4320' - CHANNEL_60G_10 = '60g-10-61560-4320' - CHANNEL_60G_11 = '60g-11-63720-4320' - CHANNEL_60G_12 = '60g-12-65880-4320' - CHANNEL_60G_13 = '60g-13-68040-4320' - CHANNEL_60G_17 = '60g-17-60480-6480' - CHANNEL_60G_18 = '60g-18-62640-6480' - CHANNEL_60G_19 = '60g-19-64800-6480' - CHANNEL_60G_20 = '60g-20-66960-6480' - CHANNEL_60G_25 = '60g-25-61560-6480' - CHANNEL_60G_26 = '60g-26-63720-6480' - CHANNEL_60G_27 = '60g-27-65880-6480' - - -@strawberry.enum -class WirelessAuthTypeEnum(Enum): - TYPE_OPEN = 'open' - TYPE_WEP = 'wep' - TYPE_WPA_PERSONAL = 'wpa-personal' - TYPE_WPA_ENTERPRISE = 'wpa-enterprise' - - -@strawberry.enum -class WirelessAuthCipherEnum(Enum): - CIPHER_AUTO = 'auto' - CIPHER_TKIP = 'tkip' - CIPHER_AES = 'aes' +WirelessAuthCipherEnum = strawberry.enum(WirelessAuthCipherChoices.as_enum()) +WirelessAuthTypeEnum = strawberry.enum(WirelessAuthTypeChoices.as_enum()) +WirelessChannelEnum = strawberry.enum(WirelessChannelChoices.as_enum()) +WirelessLANStatusEnum = strawberry.enum(WirelessLANStatusChoices.as_enum()) +WirelessRoleEnum = strawberry.enum(WirelessRoleChoices.as_enum())