diff --git a/netbox/dcim/tests/test_filtersets.py b/netbox/dcim/tests/test_filtersets.py index 7e6f5cadf..dd5ff7bc2 100644 --- a/netbox/dcim/tests/test_filtersets.py +++ b/netbox/dcim/tests/test_filtersets.py @@ -2828,38 +2828,50 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil devices = ( Device( - name='Device 1', + name='Device 1A', device_type=device_types[0], - role=roles[0], site=sites[0], + role=roles[0], + site=sites[0], location=locations[0], rack=racks[0], virtual_chassis=virtual_chassis, vc_position=1, vc_priority=1 ), + Device( + name='Device 1B', + device_type=device_types[2], + role=roles[2], + site=sites[2], + location=locations[2], + rack=racks[2], + virtual_chassis=virtual_chassis, + vc_position=2, + vc_priority=1 + ), Device( name='Device 2', device_type=device_types[1], - role=roles[1], site=sites[1], + role=roles[1], + site=sites[1], location=locations[1], rack=racks[1] ), Device( name='Device 3', device_type=device_types[2], - role=roles[2], site=sites[2], + role=roles[2], + site=sites[2], location=locations[2], rack=racks[2] ), + # For cable connections Device( name=None, device_type=device_types[2], role=roles[2], - site=sites[3], - virtual_chassis=virtual_chassis, - vc_position=2, - vc_priority=1 - ), # For cable connections + site=sites[3] + ), ) Device.objects.bulk_create(devices) @@ -2867,6 +2879,7 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil ModuleBay(device=devices[0], name='Module Bay 1'), ModuleBay(device=devices[1], name='Module Bay 2'), ModuleBay(device=devices[2], name='Module Bay 3'), + ModuleBay(device=devices[3], name='Module Bay 4'), ) ModuleBay.objects.bulk_create(module_bays) @@ -2874,6 +2887,7 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil Module(device=devices[0], module_bay=module_bays[0], module_type=module_type), Module(device=devices[1], module_bay=module_bays[1], module_type=module_type), Module(device=devices[2], module_bay=module_bays[2], module_type=module_type), + Module(device=devices[3], module_bay=module_bays[3], module_type=module_type), ) Module.objects.bulk_create(modules) @@ -2886,8 +2900,8 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil # Virtual Device Context Creation vdcs = ( - VirtualDeviceContext(device=devices[3], name='VDC 1', identifier=1, status=VirtualDeviceContextStatusChoices.STATUS_ACTIVE), - VirtualDeviceContext(device=devices[3], name='VDC 2', identifier=2, status=VirtualDeviceContextStatusChoices.STATUS_PLANNED), + VirtualDeviceContext(device=devices[4], name='VDC 1', identifier=1, status=VirtualDeviceContextStatusChoices.STATUS_ACTIVE), + VirtualDeviceContext(device=devices[4], name='VDC 2', identifier=2, status=VirtualDeviceContextStatusChoices.STATUS_PLANNED), ) VirtualDeviceContext.objects.bulk_create(vdcs) @@ -2913,6 +2927,13 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil Interface( device=devices[1], module=modules[1], + name='VC Chassis Interface', + type=InterfaceTypeChoices.TYPE_1GE_SFP, + enabled=True + ), + Interface( + device=devices[2], + module=modules[2], name='Interface 2', label='B', type=InterfaceTypeChoices.TYPE_1GE_GBIC, @@ -2929,8 +2950,8 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil poe_type=InterfacePoETypeChoices.TYPE_1_8023AF ), Interface( - device=devices[2], - module=modules[2], + device=devices[3], + module=modules[3], name='Interface 3', label='C', type=InterfaceTypeChoices.TYPE_1GE_FIXED, @@ -2947,7 +2968,7 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil poe_type=InterfacePoETypeChoices.TYPE_2_8023AT ), Interface( - device=devices[3], + device=devices[4], name='Interface 4', label='D', type=InterfaceTypeChoices.TYPE_OTHER, @@ -2960,7 +2981,7 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil poe_type=InterfacePoETypeChoices.TYPE_2_8023AT ), Interface( - device=devices[3], + device=devices[4], name='Interface 5', label='E', type=InterfaceTypeChoices.TYPE_OTHER, @@ -2969,7 +2990,7 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil tx_power=40 ), Interface( - device=devices[3], + device=devices[4], name='Interface 6', label='F', type=InterfaceTypeChoices.TYPE_OTHER, @@ -2978,7 +2999,7 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil tx_power=40 ), Interface( - device=devices[3], + device=devices[4], name='Interface 7', type=InterfaceTypeChoices.TYPE_80211AC, rf_role=WirelessRoleChoices.ROLE_AP, @@ -2987,7 +3008,7 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil rf_channel_width=22 ), Interface( - device=devices[3], + device=devices[4], name='Interface 8', type=InterfaceTypeChoices.TYPE_80211AC, rf_role=WirelessRoleChoices.ROLE_STATION, @@ -3005,8 +3026,8 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil interfaces[7].vdcs.set([vdcs[1]]) # Cables - Cable(a_terminations=[interfaces[0]], b_terminations=[interfaces[3]]).save() - Cable(a_terminations=[interfaces[1]], b_terminations=[interfaces[4]]).save() + Cable(a_terminations=[interfaces[0]], b_terminations=[interfaces[5]]).save() + Cable(a_terminations=[interfaces[1]], b_terminations=[interfaces[6]]).save() # Third pair is not connected def test_name(self): @@ -3019,7 +3040,7 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil def test_enabled(self): params = {'enabled': 'true'} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 6) + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 7) params = {'enabled': 'false'} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -3039,7 +3060,7 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil params = {'mgmt_only': 'true'} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) params = {'mgmt_only': 'false'} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 5) def test_poe_mode(self): params = {'poe_mode': [InterfacePoEModeChoices.MODE_PD, InterfacePoEModeChoices.MODE_PSE]} @@ -3135,7 +3156,7 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil def test_virtual_chassis_id(self): params = {'virtual_chassis_id': [VirtualChassis.objects.first().pk]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 6) + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) def test_device(self): devices = Device.objects.all()[:2] @@ -3145,13 +3166,12 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) def test_virtual_chassis_member(self): - # Device 1 & 3 have 1 management interface, Device "None" has 5 interfaces, 2 of which are management and - # will not be visible - devices = Device.objects.filter(name__in=['Device 1', 'Device 3']) + # Device 1A & 3 have 1 management interface, Device 1B has 1 interfaces + devices = Device.objects.filter(name__in=['Device 1A', 'Device 3']) params = {'virtual_chassis_member_id': [devices[0].pk, devices[1].pk]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 5) + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3) params = {'virtual_chassis_member': [devices[0].name, devices[1].name]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 5) + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3) def test_module(self): modules = Module.objects.all()[:2] @@ -3162,23 +3182,23 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil params = {'cabled': True} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) params = {'cabled': False} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 5) def test_occupied(self): params = {'occupied': True} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) params = {'occupied': False} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 5) def test_connected(self): params = {'connected': True} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) params = {'connected': False} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 5) def test_kind(self): params = {'kind': 'physical'} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 6) + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 7) params = {'kind': 'virtual'} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 0)