diff --git a/netbox/dcim/migrations/0019_new_iface_form_factors.py b/netbox/dcim/migrations/0019_new_iface_form_factors.py new file mode 100644 index 00000000000..13ae1b84266 --- /dev/null +++ b/netbox/dcim/migrations/0019_new_iface_form_factors.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10 on 2016-09-13 01:34 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('dcim', '0018_device_add_asset_tag'), + ] + + operations = [ + migrations.AlterField( + model_name='interface', + name='form_factor', + field=models.PositiveSmallIntegerField(choices=[[b'Virtual interfaces', [[0, b'Virtual']]], [b'Ethernet (fixed)', [[800, b'100BASE-TX (10/100ME)'], [1000, b'1000BASE-T (1GE)'], [1150, b'10GBASE-T (10GE)']]], [b'Ethernet (modular)', [[1050, b'GBIC (1GE)'], [1100, b'SFP (1GE)'], [1200, b'SFP+ (10GE)'], [1300, b'XFP (10GE)'], [1310, b'XENPAK (10GE)'], [1320, b'X2 (10GE)'], [1350, b'SFP28 (25GE)'], [1400, b'QSFP+ (40GE)'], [1500, b'CFP (100GE)'], [1600, b'QSFP28 (100GE)']]], [b'FibreChannel', [[3010, b'SFP (1GFC)'], [3020, b'SFP (2GFC)'], [3040, b'SFP (4GFC)'], [3080, b'SFP+ (8GFC)'], [3081, b'XFP (8GFC)'], [3100, b'SFP+ (10GFC)'], [3101, b'XFP (10GFC)'], [3160, b'SFP+ (16GFC)'], [3161, b'XFP (16GFC)']]], [b'Serial', [[4000, b'T1 (1.544 Mbps)'], [4010, b'E1 (2.048 Mbps)'], [4040, b'T3 (45 Mbps)'], [4050, b'E3 (34 Mbps)']]], [b'Stacking', [[5000, b'Cisco StackWise'], [5050, b'Cisco StackWise Plus']]], [b'Other', [[32767, b'Other']]]], default=1200), + ), + migrations.AlterField( + model_name='interfacetemplate', + name='form_factor', + field=models.PositiveSmallIntegerField(choices=[[b'Virtual interfaces', [[0, b'Virtual']]], [b'Ethernet (fixed)', [[800, b'100BASE-TX (10/100ME)'], [1000, b'1000BASE-T (1GE)'], [1150, b'10GBASE-T (10GE)']]], [b'Ethernet (modular)', [[1050, b'GBIC (1GE)'], [1100, b'SFP (1GE)'], [1200, b'SFP+ (10GE)'], [1300, b'XFP (10GE)'], [1310, b'XENPAK (10GE)'], [1320, b'X2 (10GE)'], [1350, b'SFP28 (25GE)'], [1400, b'QSFP+ (40GE)'], [1500, b'CFP (100GE)'], [1600, b'QSFP28 (100GE)']]], [b'FibreChannel', [[3010, b'SFP (1GFC)'], [3020, b'SFP (2GFC)'], [3040, b'SFP (4GFC)'], [3080, b'SFP+ (8GFC)'], [3081, b'XFP (8GFC)'], [3100, b'SFP+ (10GFC)'], [3101, b'XFP (10GFC)'], [3160, b'SFP+ (16GFC)'], [3161, b'XFP (16GFC)']]], [b'Serial', [[4000, b'T1 (1.544 Mbps)'], [4010, b'E1 (2.048 Mbps)'], [4040, b'T3 (45 Mbps)'], [4050, b'E3 (34 Mbps)']]], [b'Stacking', [[5000, b'Cisco StackWise'], [5050, b'Cisco StackWise Plus']]], [b'Other', [[32767, b'Other']]]], default=1200), + ), + ] diff --git a/netbox/dcim/models.py b/netbox/dcim/models.py index b8185881f7b..8ebc47f5a97 100644 --- a/netbox/dcim/models.py +++ b/netbox/dcim/models.py @@ -77,23 +77,43 @@ [COLOR_GRAY3, 'Dark Gray'], ] +# Virtual IFACE_FF_VIRTUAL = 0 -IFACE_FF_100M_COPPER = 800 -IFACE_FF_1GE_COPPER = 1000 -IFACE_FF_GBIC = 1050 -IFACE_FF_SFP = 1100 -IFACE_FF_10GE_COPPER = 1150 -IFACE_FF_SFP_PLUS = 1200 -IFACE_FF_XFP = 1300 -IFACE_FF_QSFP_PLUS = 1400 -IFACE_FF_CFP = 1500 -IFACE_FF_QSFP28 = 1600 +# 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_8GFC_XFP = 3081 +IFACE_FF_10GFC_SFP_PLUS = 3100 +IFACE_FF_10GFC_XFP = 3101 +IFACE_FF_16GFC_SFP_PLUS = 3160 +IFACE_FF_16GFC_XFP = 3161 +# 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 +# Other +IFACE_FF_OTHER = 32767 + IFACE_FF_CHOICES = [ [ 'Virtual interfaces', @@ -102,23 +122,40 @@ ] ], [ - 'Ethernet', + '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_100M_COPPER, '100BASE-TX (10/100M)'], - [IFACE_FF_1GE_COPPER, '1000BASE-T (1GE)'], - [IFACE_FF_10GE_COPPER, '10GBASE-T (10GE)'], + [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)'], ] ], [ - 'Modular', + 'FibreChannel', [ - [IFACE_FF_GBIC, 'GBIC (1GE)'], - [IFACE_FF_SFP, 'SFP (1GE)'], - [IFACE_FF_XFP, 'XFP (10GE)'], - [IFACE_FF_SFP_PLUS, 'SFP+ (10GE)'], - [IFACE_FF_QSFP_PLUS, 'QSFP+ (40GE)'], - [IFACE_FF_CFP, 'CFP (100GE)'], - [IFACE_FF_QSFP28, 'QSFP28 (100GE)'], + [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_8GFC_XFP, 'XFP (8GFC)'], + [IFACE_FF_10GFC_SFP_PLUS, 'SFP+ (10GFC)'], + [IFACE_FF_10GFC_XFP, 'XFP (10GFC)'], + [IFACE_FF_16GFC_SFP_PLUS, 'SFP+ (16GFC)'], + [IFACE_FF_16GFC_XFP, 'XFP (16GFC)'], ] ], [ @@ -137,6 +174,12 @@ [IFACE_FF_STACKWISE_PLUS, 'Cisco StackWise Plus'], ] ], + [ + 'Other', + [ + [IFACE_FF_OTHER, 'Other'], + ] + ], ] STATUS_ACTIVE = True @@ -647,7 +690,7 @@ class InterfaceTemplate(models.Model): """ device_type = models.ForeignKey('DeviceType', related_name='interface_templates', on_delete=models.CASCADE) name = models.CharField(max_length=30) - form_factor = models.PositiveSmallIntegerField(choices=IFACE_FF_CHOICES, default=IFACE_FF_SFP_PLUS) + form_factor = models.PositiveSmallIntegerField(choices=IFACE_FF_CHOICES, default=IFACE_FF_10GE_SFP_PLUS) mgmt_only = models.BooleanField(default=False, verbose_name='Management only') objects = InterfaceTemplateManager() @@ -1023,7 +1066,7 @@ class Interface(models.Model): """ device = models.ForeignKey('Device', related_name='interfaces', on_delete=models.CASCADE) name = models.CharField(max_length=30) - form_factor = models.PositiveSmallIntegerField(choices=IFACE_FF_CHOICES, default=IFACE_FF_SFP_PLUS) + form_factor = models.PositiveSmallIntegerField(choices=IFACE_FF_CHOICES, default=IFACE_FF_10GE_SFP_PLUS) mac_address = MACAddressField(null=True, blank=True, verbose_name='MAC Address') mgmt_only = models.BooleanField(default=False, verbose_name='OOB Management', help_text="This interface is used only for out-of-band management")