jeremystretch il y a 4 ans
Parent
commit
5193fa6483

+ 2 - 1
netbox/dcim/tests/test_api.py

@@ -1206,6 +1206,7 @@ class InterfaceTest(Mixins.ComponentTraceMixin, APIViewTestCases.APIViewTestCase
                 'name': 'Interface 5',
                 'name': 'Interface 5',
                 'type': '1000base-t',
                 'type': '1000base-t',
                 'mode': InterfaceModeChoices.MODE_TAGGED,
                 'mode': InterfaceModeChoices.MODE_TAGGED,
+                'bridge': interfaces[0].pk,
                 'tagged_vlans': [vlans[0].pk, vlans[1].pk],
                 'tagged_vlans': [vlans[0].pk, vlans[1].pk],
                 'untagged_vlan': vlans[2].pk,
                 'untagged_vlan': vlans[2].pk,
             },
             },
@@ -1214,7 +1215,7 @@ class InterfaceTest(Mixins.ComponentTraceMixin, APIViewTestCases.APIViewTestCase
                 'name': 'Interface 6',
                 'name': 'Interface 6',
                 'type': 'virtual',
                 'type': 'virtual',
                 'mode': InterfaceModeChoices.MODE_TAGGED,
                 'mode': InterfaceModeChoices.MODE_TAGGED,
-                'parent': interfaces[0].pk,
+                'parent': interfaces[1].pk,
                 'tagged_vlans': [vlans[0].pk, vlans[1].pk],
                 'tagged_vlans': [vlans[0].pk, vlans[1].pk],
                 'untagged_vlan': vlans[2].pk,
                 'untagged_vlan': vlans[2].pk,
             },
             },

+ 13 - 0
netbox/dcim/tests/test_filtersets.py

@@ -2125,6 +2125,19 @@ class InterfaceTestCase(TestCase, ChangeLoggedFilterSetTests):
         params = {'parent_id': [parent_interface.pk]}
         params = {'parent_id': [parent_interface.pk]}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3)
 
 
+    def test_bridge(self):
+        # Create bridged interfaces
+        bridge_interface = Interface.objects.first()
+        bridged_interfaces = (
+            Interface(device=bridge_interface.device, name='Bridged 1', bridge=bridge_interface, type=InterfaceTypeChoices.TYPE_1GE_FIXED),
+            Interface(device=bridge_interface.device, name='Bridged 2', bridge=bridge_interface, type=InterfaceTypeChoices.TYPE_1GE_FIXED),
+            Interface(device=bridge_interface.device, name='Bridged 3', bridge=bridge_interface, type=InterfaceTypeChoices.TYPE_1GE_FIXED),
+        )
+        Interface.objects.bulk_create(bridged_interfaces)
+
+        params = {'bridge_id': [bridge_interface.pk]}
+        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3)
+
     def test_lag(self):
     def test_lag(self):
         # Create LAG members
         # Create LAG members
         device = Device.objects.first()
         device = Device.objects.first()

+ 3 - 1
netbox/dcim/tests/test_views.py

@@ -1581,6 +1581,7 @@ class InterfaceTestCase(ViewTestCases.DeviceComponentViewTestCase):
             Interface(device=device, name='Interface 2'),
             Interface(device=device, name='Interface 2'),
             Interface(device=device, name='Interface 3'),
             Interface(device=device, name='Interface 3'),
             Interface(device=device, name='LAG', type=InterfaceTypeChoices.TYPE_LAG),
             Interface(device=device, name='LAG', type=InterfaceTypeChoices.TYPE_LAG),
+            Interface(device=device, name='_BRIDGE', type=InterfaceTypeChoices.TYPE_VIRTUAL),  # Must be ordered last
         )
         )
         Interface.objects.bulk_create(interfaces)
         Interface.objects.bulk_create(interfaces)
 
 
@@ -1596,10 +1597,10 @@ class InterfaceTestCase(ViewTestCases.DeviceComponentViewTestCase):
 
 
         cls.form_data = {
         cls.form_data = {
             'device': device.pk,
             'device': device.pk,
-            'virtual_machine': None,
             'name': 'Interface X',
             'name': 'Interface X',
             'type': InterfaceTypeChoices.TYPE_1GE_GBIC,
             'type': InterfaceTypeChoices.TYPE_1GE_GBIC,
             'enabled': False,
             'enabled': False,
+            'bridge': interfaces[4].pk,
             'lag': interfaces[3].pk,
             'lag': interfaces[3].pk,
             'mac_address': EUI('01:02:03:04:05:06'),
             'mac_address': EUI('01:02:03:04:05:06'),
             'wwn': EUI('01:02:03:04:05:06:07:08', version=64),
             'wwn': EUI('01:02:03:04:05:06:07:08', version=64),
@@ -1617,6 +1618,7 @@ class InterfaceTestCase(ViewTestCases.DeviceComponentViewTestCase):
             'name_pattern': 'Interface [4-6]',
             'name_pattern': 'Interface [4-6]',
             'type': InterfaceTypeChoices.TYPE_1GE_GBIC,
             'type': InterfaceTypeChoices.TYPE_1GE_GBIC,
             'enabled': False,
             'enabled': False,
+            'bridge': interfaces[4].pk,
             'lag': interfaces[3].pk,
             'lag': interfaces[3].pk,
             'mac_address': EUI('01:02:03:04:05:06'),
             'mac_address': EUI('01:02:03:04:05:06'),
             'wwn': EUI('01:02:03:04:05:06:07:08', version=64),
             'wwn': EUI('01:02:03:04:05:06:07:08', version=64),

+ 2 - 1
netbox/virtualization/tests/test_api.py

@@ -246,14 +246,15 @@ class VMInterfaceTest(APIViewTestCases.APIViewTestCase):
                 'virtual_machine': virtualmachine.pk,
                 'virtual_machine': virtualmachine.pk,
                 'name': 'Interface 5',
                 'name': 'Interface 5',
                 'mode': InterfaceModeChoices.MODE_TAGGED,
                 'mode': InterfaceModeChoices.MODE_TAGGED,
+                'bridge': interfaces[0].pk,
                 'tagged_vlans': [vlans[0].pk, vlans[1].pk],
                 'tagged_vlans': [vlans[0].pk, vlans[1].pk],
                 'untagged_vlan': vlans[2].pk,
                 'untagged_vlan': vlans[2].pk,
             },
             },
             {
             {
                 'virtual_machine': virtualmachine.pk,
                 'virtual_machine': virtualmachine.pk,
                 'name': 'Interface 6',
                 'name': 'Interface 6',
-                'parent': interfaces[0].pk,
                 'mode': InterfaceModeChoices.MODE_TAGGED,
                 'mode': InterfaceModeChoices.MODE_TAGGED,
+                'parent': interfaces[1].pk,
                 'tagged_vlans': [vlans[0].pk, vlans[1].pk],
                 'tagged_vlans': [vlans[0].pk, vlans[1].pk],
                 'untagged_vlan': vlans[2].pk,
                 'untagged_vlan': vlans[2].pk,
             },
             },

+ 13 - 0
netbox/virtualization/tests/test_filtersets.py

@@ -452,6 +452,19 @@ class VMInterfaceTestCase(TestCase, ChangeLoggedFilterSetTests):
         params = {'parent_id': [parent_interface.pk]}
         params = {'parent_id': [parent_interface.pk]}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3)
 
 
+    def test_bridge(self):
+        # Create bridged interfaces
+        bridge_interface = VMInterface.objects.first()
+        bridged_interfaces = (
+            VMInterface(virtual_machine=bridge_interface.virtual_machine, name='Bridged 1', bridge=bridge_interface),
+            VMInterface(virtual_machine=bridge_interface.virtual_machine, name='Bridged 2', bridge=bridge_interface),
+            VMInterface(virtual_machine=bridge_interface.virtual_machine, name='Bridged 3', bridge=bridge_interface),
+        )
+        VMInterface.objects.bulk_create(bridged_interfaces)
+
+        params = {'bridge_id': [bridge_interface.pk]}
+        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3)
+
     def test_mtu(self):
     def test_mtu(self):
         params = {'mtu': [100, 200]}
         params = {'mtu': [100, 200]}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)

+ 4 - 1
netbox/virtualization/tests/test_views.py

@@ -248,10 +248,11 @@ class VMInterfaceTestCase(ViewTestCases.DeviceComponentViewTestCase):
         )
         )
         VirtualMachine.objects.bulk_create(virtualmachines)
         VirtualMachine.objects.bulk_create(virtualmachines)
 
 
-        VMInterface.objects.bulk_create([
+        interfaces = VMInterface.objects.bulk_create([
             VMInterface(virtual_machine=virtualmachines[0], name='Interface 1'),
             VMInterface(virtual_machine=virtualmachines[0], name='Interface 1'),
             VMInterface(virtual_machine=virtualmachines[0], name='Interface 2'),
             VMInterface(virtual_machine=virtualmachines[0], name='Interface 2'),
             VMInterface(virtual_machine=virtualmachines[0], name='Interface 3'),
             VMInterface(virtual_machine=virtualmachines[0], name='Interface 3'),
+            VMInterface(virtual_machine=virtualmachines[1], name='BRIDGE'),
         ])
         ])
 
 
         vlans = (
         vlans = (
@@ -268,6 +269,7 @@ class VMInterfaceTestCase(ViewTestCases.DeviceComponentViewTestCase):
             'virtual_machine': virtualmachines[1].pk,
             'virtual_machine': virtualmachines[1].pk,
             'name': 'Interface X',
             'name': 'Interface X',
             'enabled': False,
             'enabled': False,
+            'bridge': interfaces[3].pk,
             'mac_address': EUI('01-02-03-04-05-06'),
             'mac_address': EUI('01-02-03-04-05-06'),
             'mtu': 65000,
             'mtu': 65000,
             'description': 'New description',
             'description': 'New description',
@@ -281,6 +283,7 @@ class VMInterfaceTestCase(ViewTestCases.DeviceComponentViewTestCase):
             'virtual_machine': virtualmachines[1].pk,
             'virtual_machine': virtualmachines[1].pk,
             'name_pattern': 'Interface [4-6]',
             'name_pattern': 'Interface [4-6]',
             'enabled': False,
             'enabled': False,
+            'bridge': interfaces[3].pk,
             'mac_address': EUI('01-02-03-04-05-06'),
             'mac_address': EUI('01-02-03-04-05-06'),
             'mtu': 2000,
             'mtu': 2000,
             'description': 'New description',
             'description': 'New description',