Browse Source

Moved constant definitions from models.py to constants.py

Jeremy Stretch 7 years ago
parent
commit
ceb8fee0cc

+ 10 - 0
netbox/circuits/constants.py

@@ -0,0 +1,10 @@
+from __future__ import unicode_literals
+
+
+# CircuitTermination sides
+TERM_SIDE_A = 'A'
+TERM_SIDE_Z = 'Z'
+TERM_SIDE_CHOICES = (
+    (TERM_SIDE_A, 'A'),
+    (TERM_SIDE_Z, 'Z'),
+)

+ 1 - 8
netbox/circuits/models.py

@@ -10,14 +10,7 @@ from extras.models import CustomFieldModel, CustomFieldValue
 from tenancy.models import Tenant
 from utilities.utils import csv_format
 from utilities.models import CreatedUpdatedModel
-
-
-TERM_SIDE_A = 'A'
-TERM_SIDE_Z = 'Z'
-TERM_SIDE_CHOICES = (
-    (TERM_SIDE_A, 'A'),
-    (TERM_SIDE_Z, 'Z'),
-)
+from .constants import *
 
 
 def humanize_speed(speed):

+ 205 - 0
netbox/dcim/constants.py

@@ -0,0 +1,205 @@
+from __future__ import unicode_literals
+
+
+# Rack types
+RACK_TYPE_2POST = 100
+RACK_TYPE_4POST = 200
+RACK_TYPE_CABINET = 300
+RACK_TYPE_WALLFRAME = 1000
+RACK_TYPE_WALLCABINET = 1100
+RACK_TYPE_CHOICES = (
+    (RACK_TYPE_2POST, '2-post frame'),
+    (RACK_TYPE_4POST, '4-post frame'),
+    (RACK_TYPE_CABINET, '4-post cabinet'),
+    (RACK_TYPE_WALLFRAME, 'Wall-mounted frame'),
+    (RACK_TYPE_WALLCABINET, 'Wall-mounted cabinet'),
+)
+
+# Rack widths
+RACK_WIDTH_19IN = 19
+RACK_WIDTH_23IN = 23
+RACK_WIDTH_CHOICES = (
+    (RACK_WIDTH_19IN, '19 inches'),
+    (RACK_WIDTH_23IN, '23 inches'),
+)
+
+# Rack faces
+RACK_FACE_FRONT = 0
+RACK_FACE_REAR = 1
+RACK_FACE_CHOICES = [
+    [RACK_FACE_FRONT, 'Front'],
+    [RACK_FACE_REAR, 'Rear'],
+]
+
+# Parent/child device roles
+SUBDEVICE_ROLE_PARENT = True
+SUBDEVICE_ROLE_CHILD = False
+SUBDEVICE_ROLE_CHOICES = (
+    (None, 'None'),
+    (SUBDEVICE_ROLE_PARENT, 'Parent'),
+    (SUBDEVICE_ROLE_CHILD, 'Child'),
+)
+
+# Interface ordering schemes (for device types)
+IFACE_ORDERING_POSITION = 1
+IFACE_ORDERING_NAME = 2
+IFACE_ORDERING_CHOICES = [
+    [IFACE_ORDERING_POSITION, 'Slot/position'],
+    [IFACE_ORDERING_NAME, 'Name (alphabetically)']
+]
+
+# Interface form factors
+# Virtual
+IFACE_FF_VIRTUAL = 0
+IFACE_FF_LAG = 200
+# Ethernet
+IFACE_FF_100ME_FIXED = 800
+IFACE_FF_1GE_FIXED = 1000
+IFACE_FF_1GE_GBIC = 1050
+IFACE_FF_1GE_SFP = 1100
+IFACE_FF_10GE_FIXED = 1150
+IFACE_FF_10GE_SFP_PLUS = 1200
+IFACE_FF_10GE_XFP = 1300
+IFACE_FF_10GE_XENPAK = 1310
+IFACE_FF_10GE_X2 = 1320
+IFACE_FF_25GE_SFP28 = 1350
+IFACE_FF_40GE_QSFP_PLUS = 1400
+IFACE_FF_100GE_CFP = 1500
+IFACE_FF_100GE_QSFP28 = 1600
+# Fibrechannel
+IFACE_FF_1GFC_SFP = 3010
+IFACE_FF_2GFC_SFP = 3020
+IFACE_FF_4GFC_SFP = 3040
+IFACE_FF_8GFC_SFP_PLUS = 3080
+IFACE_FF_16GFC_SFP_PLUS = 3160
+# Serial
+IFACE_FF_T1 = 4000
+IFACE_FF_E1 = 4010
+IFACE_FF_T3 = 4040
+IFACE_FF_E3 = 4050
+# Stacking
+IFACE_FF_STACKWISE = 5000
+IFACE_FF_STACKWISE_PLUS = 5050
+IFACE_FF_FLEXSTACK = 5100
+IFACE_FF_FLEXSTACK_PLUS = 5150
+IFACE_FF_JUNIPER_VCP = 5200
+# Other
+IFACE_FF_OTHER = 32767
+
+IFACE_FF_CHOICES = [
+    [
+        'Virtual interfaces',
+        [
+            [IFACE_FF_VIRTUAL, 'Virtual'],
+            [IFACE_FF_LAG, 'Link Aggregation Group (LAG)'],
+        ]
+    ],
+    [
+        'Ethernet (fixed)',
+        [
+            [IFACE_FF_100ME_FIXED, '100BASE-TX (10/100ME)'],
+            [IFACE_FF_1GE_FIXED, '1000BASE-T (1GE)'],
+            [IFACE_FF_10GE_FIXED, '10GBASE-T (10GE)'],
+        ]
+    ],
+    [
+        'Ethernet (modular)',
+        [
+            [IFACE_FF_1GE_GBIC, 'GBIC (1GE)'],
+            [IFACE_FF_1GE_SFP, 'SFP (1GE)'],
+            [IFACE_FF_10GE_SFP_PLUS, 'SFP+ (10GE)'],
+            [IFACE_FF_10GE_XFP, 'XFP (10GE)'],
+            [IFACE_FF_10GE_XENPAK, 'XENPAK (10GE)'],
+            [IFACE_FF_10GE_X2, 'X2 (10GE)'],
+            [IFACE_FF_25GE_SFP28, 'SFP28 (25GE)'],
+            [IFACE_FF_40GE_QSFP_PLUS, 'QSFP+ (40GE)'],
+            [IFACE_FF_100GE_CFP, 'CFP (100GE)'],
+            [IFACE_FF_100GE_QSFP28, 'QSFP28 (100GE)'],
+        ]
+    ],
+    [
+        'FibreChannel',
+        [
+            [IFACE_FF_1GFC_SFP, 'SFP (1GFC)'],
+            [IFACE_FF_2GFC_SFP, 'SFP (2GFC)'],
+            [IFACE_FF_4GFC_SFP, 'SFP (4GFC)'],
+            [IFACE_FF_8GFC_SFP_PLUS, 'SFP+ (8GFC)'],
+            [IFACE_FF_16GFC_SFP_PLUS, 'SFP+ (16GFC)'],
+        ]
+    ],
+    [
+        'Serial',
+        [
+            [IFACE_FF_T1, 'T1 (1.544 Mbps)'],
+            [IFACE_FF_E1, 'E1 (2.048 Mbps)'],
+            [IFACE_FF_T3, 'T3 (45 Mbps)'],
+            [IFACE_FF_E3, 'E3 (34 Mbps)'],
+            [IFACE_FF_E3, 'E3 (34 Mbps)'],
+        ]
+    ],
+    [
+        'Stacking',
+        [
+            [IFACE_FF_STACKWISE, 'Cisco StackWise'],
+            [IFACE_FF_STACKWISE_PLUS, 'Cisco StackWise Plus'],
+            [IFACE_FF_FLEXSTACK, 'Cisco FlexStack'],
+            [IFACE_FF_FLEXSTACK_PLUS, 'Cisco FlexStack Plus'],
+            [IFACE_FF_JUNIPER_VCP, 'Juniper VCP'],
+        ]
+    ],
+    [
+        'Other',
+        [
+            [IFACE_FF_OTHER, 'Other'],
+        ]
+    ],
+]
+
+VIRTUAL_IFACE_TYPES = [
+    IFACE_FF_VIRTUAL,
+    IFACE_FF_LAG,
+]
+
+# Device statuses
+STATUS_OFFLINE = 0
+STATUS_ACTIVE = 1
+STATUS_PLANNED = 2
+STATUS_STAGED = 3
+STATUS_FAILED = 4
+STATUS_INVENTORY = 5
+STATUS_CHOICES = [
+    [STATUS_ACTIVE, 'Active'],
+    [STATUS_OFFLINE, 'Offline'],
+    [STATUS_PLANNED, 'Planned'],
+    [STATUS_STAGED, 'Staged'],
+    [STATUS_FAILED, 'Failed'],
+    [STATUS_INVENTORY, 'Inventory'],
+]
+
+# Bootstrap CSS classes for device stasuses
+DEVICE_STATUS_CLASSES = {
+    0: 'warning',
+    1: 'success',
+    2: 'info',
+    3: 'primary',
+    4: 'danger',
+    5: 'default',
+}
+
+# Console/power/interface connection statuses
+CONNECTION_STATUS_PLANNED = False
+CONNECTION_STATUS_CONNECTED = True
+CONNECTION_STATUS_CHOICES = [
+    [CONNECTION_STATUS_PLANNED, 'Planned'],
+    [CONNECTION_STATUS_CONNECTED, 'Connected'],
+]
+
+# Platform -> RPC client mappings
+RPC_CLIENT_JUNIPER_JUNOS = 'juniper-junos'
+RPC_CLIENT_CISCO_IOS = 'cisco-ios'
+RPC_CLIENT_OPENGEAR = 'opengear'
+RPC_CLIENT_CHOICES = [
+    [RPC_CLIENT_JUNIPER_JUNOS, 'Juniper Junos (NETCONF)'],
+    [RPC_CLIENT_CISCO_IOS, 'Cisco IOS (SSH)'],
+    [RPC_CLIENT_OPENGEAR, 'Opengear (SSH)'],
+]

+ 1 - 195
netbox/dcim/models.py

@@ -24,204 +24,10 @@ from utilities.fields import ColorField, NullableCharField
 from utilities.managers import NaturalOrderByManager
 from utilities.models import CreatedUpdatedModel
 from utilities.utils import csv_format
+from .constants import *
 from .fields import ASNField, MACAddressField
 
 
-RACK_TYPE_2POST = 100
-RACK_TYPE_4POST = 200
-RACK_TYPE_CABINET = 300
-RACK_TYPE_WALLFRAME = 1000
-RACK_TYPE_WALLCABINET = 1100
-RACK_TYPE_CHOICES = (
-    (RACK_TYPE_2POST, '2-post frame'),
-    (RACK_TYPE_4POST, '4-post frame'),
-    (RACK_TYPE_CABINET, '4-post cabinet'),
-    (RACK_TYPE_WALLFRAME, 'Wall-mounted frame'),
-    (RACK_TYPE_WALLCABINET, 'Wall-mounted cabinet'),
-)
-
-RACK_WIDTH_19IN = 19
-RACK_WIDTH_23IN = 23
-RACK_WIDTH_CHOICES = (
-    (RACK_WIDTH_19IN, '19 inches'),
-    (RACK_WIDTH_23IN, '23 inches'),
-)
-
-RACK_FACE_FRONT = 0
-RACK_FACE_REAR = 1
-RACK_FACE_CHOICES = [
-    [RACK_FACE_FRONT, 'Front'],
-    [RACK_FACE_REAR, 'Rear'],
-]
-
-SUBDEVICE_ROLE_PARENT = True
-SUBDEVICE_ROLE_CHILD = False
-SUBDEVICE_ROLE_CHOICES = (
-    (None, 'None'),
-    (SUBDEVICE_ROLE_PARENT, 'Parent'),
-    (SUBDEVICE_ROLE_CHILD, 'Child'),
-)
-
-IFACE_ORDERING_POSITION = 1
-IFACE_ORDERING_NAME = 2
-IFACE_ORDERING_CHOICES = [
-    [IFACE_ORDERING_POSITION, 'Slot/position'],
-    [IFACE_ORDERING_NAME, 'Name (alphabetically)']
-]
-
-# Virtual
-IFACE_FF_VIRTUAL = 0
-IFACE_FF_LAG = 200
-# Ethernet
-IFACE_FF_100ME_FIXED = 800
-IFACE_FF_1GE_FIXED = 1000
-IFACE_FF_1GE_GBIC = 1050
-IFACE_FF_1GE_SFP = 1100
-IFACE_FF_10GE_FIXED = 1150
-IFACE_FF_10GE_SFP_PLUS = 1200
-IFACE_FF_10GE_XFP = 1300
-IFACE_FF_10GE_XENPAK = 1310
-IFACE_FF_10GE_X2 = 1320
-IFACE_FF_25GE_SFP28 = 1350
-IFACE_FF_40GE_QSFP_PLUS = 1400
-IFACE_FF_100GE_CFP = 1500
-IFACE_FF_100GE_QSFP28 = 1600
-# Fibrechannel
-IFACE_FF_1GFC_SFP = 3010
-IFACE_FF_2GFC_SFP = 3020
-IFACE_FF_4GFC_SFP = 3040
-IFACE_FF_8GFC_SFP_PLUS = 3080
-IFACE_FF_16GFC_SFP_PLUS = 3160
-# Serial
-IFACE_FF_T1 = 4000
-IFACE_FF_E1 = 4010
-IFACE_FF_T3 = 4040
-IFACE_FF_E3 = 4050
-# Stacking
-IFACE_FF_STACKWISE = 5000
-IFACE_FF_STACKWISE_PLUS = 5050
-IFACE_FF_FLEXSTACK = 5100
-IFACE_FF_FLEXSTACK_PLUS = 5150
-IFACE_FF_JUNIPER_VCP = 5200
-# Other
-IFACE_FF_OTHER = 32767
-
-IFACE_FF_CHOICES = [
-    [
-        'Virtual interfaces',
-        [
-            [IFACE_FF_VIRTUAL, 'Virtual'],
-            [IFACE_FF_LAG, 'Link Aggregation Group (LAG)'],
-        ]
-    ],
-    [
-        'Ethernet (fixed)',
-        [
-            [IFACE_FF_100ME_FIXED, '100BASE-TX (10/100ME)'],
-            [IFACE_FF_1GE_FIXED, '1000BASE-T (1GE)'],
-            [IFACE_FF_10GE_FIXED, '10GBASE-T (10GE)'],
-        ]
-    ],
-    [
-        'Ethernet (modular)',
-        [
-            [IFACE_FF_1GE_GBIC, 'GBIC (1GE)'],
-            [IFACE_FF_1GE_SFP, 'SFP (1GE)'],
-            [IFACE_FF_10GE_SFP_PLUS, 'SFP+ (10GE)'],
-            [IFACE_FF_10GE_XFP, 'XFP (10GE)'],
-            [IFACE_FF_10GE_XENPAK, 'XENPAK (10GE)'],
-            [IFACE_FF_10GE_X2, 'X2 (10GE)'],
-            [IFACE_FF_25GE_SFP28, 'SFP28 (25GE)'],
-            [IFACE_FF_40GE_QSFP_PLUS, 'QSFP+ (40GE)'],
-            [IFACE_FF_100GE_CFP, 'CFP (100GE)'],
-            [IFACE_FF_100GE_QSFP28, 'QSFP28 (100GE)'],
-        ]
-    ],
-    [
-        'FibreChannel',
-        [
-            [IFACE_FF_1GFC_SFP, 'SFP (1GFC)'],
-            [IFACE_FF_2GFC_SFP, 'SFP (2GFC)'],
-            [IFACE_FF_4GFC_SFP, 'SFP (4GFC)'],
-            [IFACE_FF_8GFC_SFP_PLUS, 'SFP+ (8GFC)'],
-            [IFACE_FF_16GFC_SFP_PLUS, 'SFP+ (16GFC)'],
-        ]
-    ],
-    [
-        'Serial',
-        [
-            [IFACE_FF_T1, 'T1 (1.544 Mbps)'],
-            [IFACE_FF_E1, 'E1 (2.048 Mbps)'],
-            [IFACE_FF_T3, 'T3 (45 Mbps)'],
-            [IFACE_FF_E3, 'E3 (34 Mbps)'],
-            [IFACE_FF_E3, 'E3 (34 Mbps)'],
-        ]
-    ],
-    [
-        'Stacking',
-        [
-            [IFACE_FF_STACKWISE, 'Cisco StackWise'],
-            [IFACE_FF_STACKWISE_PLUS, 'Cisco StackWise Plus'],
-            [IFACE_FF_FLEXSTACK, 'Cisco FlexStack'],
-            [IFACE_FF_FLEXSTACK_PLUS, 'Cisco FlexStack Plus'],
-            [IFACE_FF_JUNIPER_VCP, 'Juniper VCP'],
-        ]
-    ],
-    [
-        'Other',
-        [
-            [IFACE_FF_OTHER, 'Other'],
-        ]
-    ],
-]
-
-VIRTUAL_IFACE_TYPES = [
-    IFACE_FF_VIRTUAL,
-    IFACE_FF_LAG,
-]
-
-STATUS_OFFLINE = 0
-STATUS_ACTIVE = 1
-STATUS_PLANNED = 2
-STATUS_STAGED = 3
-STATUS_FAILED = 4
-STATUS_INVENTORY = 5
-STATUS_CHOICES = [
-    [STATUS_ACTIVE, 'Active'],
-    [STATUS_OFFLINE, 'Offline'],
-    [STATUS_PLANNED, 'Planned'],
-    [STATUS_STAGED, 'Staged'],
-    [STATUS_FAILED, 'Failed'],
-    [STATUS_INVENTORY, 'Inventory'],
-]
-
-DEVICE_STATUS_CLASSES = {
-    0: 'warning',
-    1: 'success',
-    2: 'info',
-    3: 'primary',
-    4: 'danger',
-    5: 'default',
-}
-
-CONNECTION_STATUS_PLANNED = False
-CONNECTION_STATUS_CONNECTED = True
-CONNECTION_STATUS_CHOICES = [
-    [CONNECTION_STATUS_PLANNED, 'Planned'],
-    [CONNECTION_STATUS_CONNECTED, 'Connected'],
-]
-
-# For mapping platform -> NC client
-RPC_CLIENT_JUNIPER_JUNOS = 'juniper-junos'
-RPC_CLIENT_CISCO_IOS = 'cisco-ios'
-RPC_CLIENT_OPENGEAR = 'opengear'
-RPC_CLIENT_CHOICES = [
-    [RPC_CLIENT_JUNIPER_JUNOS, 'Juniper Junos (NETCONF)'],
-    [RPC_CLIENT_CISCO_IOS, 'Cisco IOS (SSH)'],
-    [RPC_CLIENT_OPENGEAR, 'Opengear (SSH)'],
-]
-
-
 #
 # Regions
 #

+ 62 - 0
netbox/extras/constants.py

@@ -0,0 +1,62 @@
+from __future__ import unicode_literals
+
+
+# Models which support custom fields
+CUSTOMFIELD_MODELS = (
+    'site', 'rack', 'devicetype', 'device',                 # DCIM
+    'aggregate', 'prefix', 'ipaddress', 'vlan', 'vrf',      # IPAM
+    'provider', 'circuit',                                  # Circuits
+    'tenant',                                               # Tenants
+)
+
+# Custom field types
+CF_TYPE_TEXT = 100
+CF_TYPE_INTEGER = 200
+CF_TYPE_BOOLEAN = 300
+CF_TYPE_DATE = 400
+CF_TYPE_URL = 500
+CF_TYPE_SELECT = 600
+CUSTOMFIELD_TYPE_CHOICES = (
+    (CF_TYPE_TEXT, 'Text'),
+    (CF_TYPE_INTEGER, 'Integer'),
+    (CF_TYPE_BOOLEAN, 'Boolean (true/false)'),
+    (CF_TYPE_DATE, 'Date'),
+    (CF_TYPE_URL, 'URL'),
+    (CF_TYPE_SELECT, 'Selection'),
+)
+
+# Graph types
+GRAPH_TYPE_INTERFACE = 100
+GRAPH_TYPE_PROVIDER = 200
+GRAPH_TYPE_SITE = 300
+GRAPH_TYPE_CHOICES = (
+    (GRAPH_TYPE_INTERFACE, 'Interface'),
+    (GRAPH_TYPE_PROVIDER, 'Provider'),
+    (GRAPH_TYPE_SITE, 'Site'),
+)
+
+# Models which support export templates
+EXPORTTEMPLATE_MODELS = [
+    'site', 'rack', 'device', 'consoleport', 'powerport', 'interfaceconnection',    # DCIM
+    'aggregate', 'prefix', 'ipaddress', 'vlan',                                     # IPAM
+    'provider', 'circuit',                                                          # Circuits
+    'tenant',                                                                       # Tenants
+]
+
+# User action types
+ACTION_CREATE = 1
+ACTION_IMPORT = 2
+ACTION_EDIT = 3
+ACTION_BULK_EDIT = 4
+ACTION_DELETE = 5
+ACTION_BULK_DELETE = 6
+ACTION_BULK_CREATE = 7
+ACTION_CHOICES = (
+    (ACTION_CREATE, 'created'),
+    (ACTION_BULK_CREATE, 'bulk created'),
+    (ACTION_IMPORT, 'imported'),
+    (ACTION_EDIT, 'modified'),
+    (ACTION_BULK_EDIT, 'bulk edited'),
+    (ACTION_DELETE, 'deleted'),
+    (ACTION_BULK_DELETE, 'bulk deleted'),
+)

+ 1 - 56
netbox/extras/models.py

@@ -15,62 +15,7 @@ from django.utils.encoding import python_2_unicode_compatible
 from django.utils.safestring import mark_safe
 
 from utilities.utils import foreground_color
-
-
-CUSTOMFIELD_MODELS = (
-    'site', 'rack', 'devicetype', 'device',                 # DCIM
-    'aggregate', 'prefix', 'ipaddress', 'vlan', 'vrf',      # IPAM
-    'provider', 'circuit',                                  # Circuits
-    'tenant',                                               # Tenants
-)
-
-CF_TYPE_TEXT = 100
-CF_TYPE_INTEGER = 200
-CF_TYPE_BOOLEAN = 300
-CF_TYPE_DATE = 400
-CF_TYPE_URL = 500
-CF_TYPE_SELECT = 600
-CUSTOMFIELD_TYPE_CHOICES = (
-    (CF_TYPE_TEXT, 'Text'),
-    (CF_TYPE_INTEGER, 'Integer'),
-    (CF_TYPE_BOOLEAN, 'Boolean (true/false)'),
-    (CF_TYPE_DATE, 'Date'),
-    (CF_TYPE_URL, 'URL'),
-    (CF_TYPE_SELECT, 'Selection'),
-)
-
-GRAPH_TYPE_INTERFACE = 100
-GRAPH_TYPE_PROVIDER = 200
-GRAPH_TYPE_SITE = 300
-GRAPH_TYPE_CHOICES = (
-    (GRAPH_TYPE_INTERFACE, 'Interface'),
-    (GRAPH_TYPE_PROVIDER, 'Provider'),
-    (GRAPH_TYPE_SITE, 'Site'),
-)
-
-EXPORTTEMPLATE_MODELS = [
-    'site', 'rack', 'device', 'consoleport', 'powerport', 'interfaceconnection',    # DCIM
-    'aggregate', 'prefix', 'ipaddress', 'vlan',                                     # IPAM
-    'provider', 'circuit',                                                          # Circuits
-    'tenant',                                                                       # Tenants
-]
-
-ACTION_CREATE = 1
-ACTION_IMPORT = 2
-ACTION_EDIT = 3
-ACTION_BULK_EDIT = 4
-ACTION_DELETE = 5
-ACTION_BULK_DELETE = 6
-ACTION_BULK_CREATE = 7
-ACTION_CHOICES = (
-    (ACTION_CREATE, 'created'),
-    (ACTION_BULK_CREATE, 'bulk created'),
-    (ACTION_IMPORT, 'imported'),
-    (ACTION_EDIT, 'modified'),
-    (ACTION_BULK_EDIT, 'bulk edited'),
-    (ACTION_DELETE, 'deleted'),
-    (ACTION_BULK_DELETE, 'bulk deleted'),
-)
+from .constants import *
 
 
 #

+ 78 - 0
netbox/ipam/constants.py

@@ -0,0 +1,78 @@
+from __future__ import unicode_literals
+
+
+# IP address families
+AF_CHOICES = (
+    (4, 'IPv4'),
+    (6, 'IPv6'),
+)
+
+# Prefix statuses
+PREFIX_STATUS_CONTAINER = 0
+PREFIX_STATUS_ACTIVE = 1
+PREFIX_STATUS_RESERVED = 2
+PREFIX_STATUS_DEPRECATED = 3
+PREFIX_STATUS_CHOICES = (
+    (PREFIX_STATUS_CONTAINER, 'Container'),
+    (PREFIX_STATUS_ACTIVE, 'Active'),
+    (PREFIX_STATUS_RESERVED, 'Reserved'),
+    (PREFIX_STATUS_DEPRECATED, 'Deprecated')
+)
+
+# IP address statuses
+IPADDRESS_STATUS_ACTIVE = 1
+IPADDRESS_STATUS_RESERVED = 2
+IPADDRESS_STATUS_DEPRECATED = 3
+IPADDRESS_STATUS_DHCP = 5
+IPADDRESS_STATUS_CHOICES = (
+    (IPADDRESS_STATUS_ACTIVE, 'Active'),
+    (IPADDRESS_STATUS_RESERVED, 'Reserved'),
+    (IPADDRESS_STATUS_DEPRECATED, 'Deprecated'),
+    (IPADDRESS_STATUS_DHCP, 'DHCP')
+)
+
+# IP address roles
+IPADDRESS_ROLE_LOOPBACK = 10
+IPADDRESS_ROLE_SECONDARY = 20
+IPADDRESS_ROLE_ANYCAST = 30
+IPADDRESS_ROLE_VIP = 40
+IPADDRESS_ROLE_VRRP = 41
+IPADDRESS_ROLE_HSRP = 42
+IPADDRESS_ROLE_GLBP = 43
+IPADDRESS_ROLE_CHOICES = (
+    (IPADDRESS_ROLE_LOOPBACK, 'Loopback'),
+    (IPADDRESS_ROLE_SECONDARY, 'Secondary'),
+    (IPADDRESS_ROLE_ANYCAST, 'Anycast'),
+    (IPADDRESS_ROLE_VIP, 'VIP'),
+    (IPADDRESS_ROLE_VRRP, 'VRRP'),
+    (IPADDRESS_ROLE_HSRP, 'HSRP'),
+    (IPADDRESS_ROLE_GLBP, 'GLBP'),
+)
+
+# VLAN statuses
+VLAN_STATUS_ACTIVE = 1
+VLAN_STATUS_RESERVED = 2
+VLAN_STATUS_DEPRECATED = 3
+VLAN_STATUS_CHOICES = (
+    (VLAN_STATUS_ACTIVE, 'Active'),
+    (VLAN_STATUS_RESERVED, 'Reserved'),
+    (VLAN_STATUS_DEPRECATED, 'Deprecated')
+)
+
+# Bootstrap CSS classes for various statuses
+STATUS_CHOICE_CLASSES = {
+    0: 'default',
+    1: 'primary',
+    2: 'info',
+    3: 'danger',
+    4: 'warning',
+    5: 'success',
+}
+
+# IP protocols (for services)
+IP_PROTOCOL_TCP = 6
+IP_PROTOCOL_UDP = 17
+IP_PROTOCOL_CHOICES = (
+    (IP_PROTOCOL_TCP, 'TCP'),
+    (IP_PROTOCOL_UDP, 'UDP'),
+)

+ 1 - 70
netbox/ipam/models.py

@@ -17,79 +17,10 @@ from tenancy.models import Tenant
 from utilities.models import CreatedUpdatedModel
 from utilities.sql import NullsFirstQuerySet
 from utilities.utils import csv_format
+from .constants import *
 from .fields import IPNetworkField, IPAddressField
 
 
-AF_CHOICES = (
-    (4, 'IPv4'),
-    (6, 'IPv6'),
-)
-
-PREFIX_STATUS_CONTAINER = 0
-PREFIX_STATUS_ACTIVE = 1
-PREFIX_STATUS_RESERVED = 2
-PREFIX_STATUS_DEPRECATED = 3
-PREFIX_STATUS_CHOICES = (
-    (PREFIX_STATUS_CONTAINER, 'Container'),
-    (PREFIX_STATUS_ACTIVE, 'Active'),
-    (PREFIX_STATUS_RESERVED, 'Reserved'),
-    (PREFIX_STATUS_DEPRECATED, 'Deprecated')
-)
-
-IPADDRESS_STATUS_ACTIVE = 1
-IPADDRESS_STATUS_RESERVED = 2
-IPADDRESS_STATUS_DEPRECATED = 3
-IPADDRESS_STATUS_DHCP = 5
-IPADDRESS_STATUS_CHOICES = (
-    (IPADDRESS_STATUS_ACTIVE, 'Active'),
-    (IPADDRESS_STATUS_RESERVED, 'Reserved'),
-    (IPADDRESS_STATUS_DEPRECATED, 'Deprecated'),
-    (IPADDRESS_STATUS_DHCP, 'DHCP')
-)
-
-IPADDRESS_ROLE_LOOPBACK = 10
-IPADDRESS_ROLE_SECONDARY = 20
-IPADDRESS_ROLE_ANYCAST = 30
-IPADDRESS_ROLE_VIP = 40
-IPADDRESS_ROLE_VRRP = 41
-IPADDRESS_ROLE_HSRP = 42
-IPADDRESS_ROLE_GLBP = 43
-IPADDRESS_ROLE_CHOICES = (
-    (IPADDRESS_ROLE_LOOPBACK, 'Loopback'),
-    (IPADDRESS_ROLE_SECONDARY, 'Secondary'),
-    (IPADDRESS_ROLE_ANYCAST, 'Anycast'),
-    (IPADDRESS_ROLE_VIP, 'VIP'),
-    (IPADDRESS_ROLE_VRRP, 'VRRP'),
-    (IPADDRESS_ROLE_HSRP, 'HSRP'),
-    (IPADDRESS_ROLE_GLBP, 'GLBP'),
-)
-
-VLAN_STATUS_ACTIVE = 1
-VLAN_STATUS_RESERVED = 2
-VLAN_STATUS_DEPRECATED = 3
-VLAN_STATUS_CHOICES = (
-    (VLAN_STATUS_ACTIVE, 'Active'),
-    (VLAN_STATUS_RESERVED, 'Reserved'),
-    (VLAN_STATUS_DEPRECATED, 'Deprecated')
-)
-
-STATUS_CHOICE_CLASSES = {
-    0: 'default',
-    1: 'primary',
-    2: 'info',
-    3: 'danger',
-    4: 'warning',
-    5: 'success',
-}
-
-IP_PROTOCOL_TCP = 6
-IP_PROTOCOL_UDP = 17
-IP_PROTOCOL_CHOICES = (
-    (IP_PROTOCOL_TCP, 'TCP'),
-    (IP_PROTOCOL_UDP, 'UDP'),
-)
-
-
 @python_2_unicode_compatible
 class VRF(CreatedUpdatedModel, CustomFieldModel):
     """