Add tenant filter on device components.

This commit is contained in:
Etienne.BRUNEL 2025-12-05 23:41:54 +01:00
parent 6efb258b9f
commit 433df098b3
3 changed files with 131 additions and 11 deletions

View File

@ -1626,6 +1626,17 @@ class DeviceComponentFilterSet(django_filters.FilterSet):
choices=DeviceStatusChoices, choices=DeviceStatusChoices,
field_name='device__status', field_name='device__status',
) )
tenant_id = django_filters.ModelMultipleChoiceFilter(
field_name='device__tenant',
queryset=Tenant.objects.all(),
label=_('Tenant (ID)'),
)
tenant = django_filters.ModelMultipleChoiceFilter(
field_name='device__tenant__slug',
queryset=Tenant.objects.all(),
to_field_name='slug',
label=_('Tenant (slug)'),
)
def search(self, queryset, name, value): def search(self, queryset, name, value):
if not value.strip(): if not value.strip():

View File

@ -10,6 +10,7 @@ from ipam.models import ASN, VRF, VLANTranslationPolicy
from netbox.choices import * from netbox.choices import *
from netbox.forms import NetBoxModelFilterSetForm from netbox.forms import NetBoxModelFilterSetForm
from tenancy.forms import ContactModelFilterForm, TenancyFilterForm from tenancy.forms import ContactModelFilterForm, TenancyFilterForm
from tenancy.models import Tenant
from users.models import User from users.models import User
from utilities.forms import BOOLEAN_WITH_BLANK_CHOICES, FilterForm, add_blank_choice from utilities.forms import BOOLEAN_WITH_BLANK_CHOICES, FilterForm, add_blank_choice
from utilities.forms.fields import ColorField, DynamicModelMultipleChoiceField, TagFilterField from utilities.forms.fields import ColorField, DynamicModelMultipleChoiceField, TagFilterField
@ -120,6 +121,11 @@ class DeviceComponentFilterForm(NetBoxModelFilterSetForm):
required=False, required=False,
label=_('Device role') label=_('Device role')
) )
tenant_id = DynamicModelMultipleChoiceField(
queryset=Tenant.objects.all(),
required=False,
label=_('Tenant')
)
device_id = DynamicModelMultipleChoiceField( device_id = DynamicModelMultipleChoiceField(
queryset=Device.objects.all(), queryset=Device.objects.all(),
required=False, required=False,
@ -128,7 +134,8 @@ class DeviceComponentFilterForm(NetBoxModelFilterSetForm):
'location_id': '$location_id', 'location_id': '$location_id',
'virtual_chassis_id': '$virtual_chassis_id', 'virtual_chassis_id': '$virtual_chassis_id',
'device_type_id': '$device_type_id', 'device_type_id': '$device_type_id',
'role_id': '$role_id' 'role_id': '$role_id',
'tenant_id': '$tenant_id'
}, },
label=_('Device') label=_('Device')
) )
@ -1317,7 +1324,8 @@ class ConsolePortFilterForm(PathEndpointFilterForm, DeviceComponentFilterForm):
FieldSet('name', 'label', 'type', 'speed', name=_('Attributes')), FieldSet('name', 'label', 'type', 'speed', name=_('Attributes')),
FieldSet('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id', name=_('Location')), FieldSet('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id', name=_('Location')),
FieldSet( FieldSet(
'device_type_id', 'device_role_id', 'device_id', 'device_status', 'virtual_chassis_id', name=_('Device') 'tenant_id', 'device_type_id', 'device_role_id', 'device_id', 'device_status', 'virtual_chassis_id',
name=_('Device')
), ),
FieldSet('cabled', 'connected', 'occupied', name=_('Connection')), FieldSet('cabled', 'connected', 'occupied', name=_('Connection')),
) )
@ -1341,7 +1349,7 @@ class ConsoleServerPortFilterForm(PathEndpointFilterForm, DeviceComponentFilterF
FieldSet('name', 'label', 'type', 'speed', name=_('Attributes')), FieldSet('name', 'label', 'type', 'speed', name=_('Attributes')),
FieldSet('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id', name=_('Location')), FieldSet('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id', name=_('Location')),
FieldSet( FieldSet(
'device_type_id', 'device_role_id', 'device_id', 'device_status', 'virtual_chassis_id', 'tenant_id', 'device_type_id', 'device_role_id', 'device_id', 'device_status', 'virtual_chassis_id',
name=_('Device') name=_('Device')
), ),
FieldSet('cabled', 'connected', 'occupied', name=_('Connection')), FieldSet('cabled', 'connected', 'occupied', name=_('Connection')),
@ -1366,7 +1374,8 @@ class PowerPortFilterForm(PathEndpointFilterForm, DeviceComponentFilterForm):
FieldSet('name', 'label', 'type', name=_('Attributes')), FieldSet('name', 'label', 'type', name=_('Attributes')),
FieldSet('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id', name=_('Location')), FieldSet('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id', name=_('Location')),
FieldSet( FieldSet(
'device_type_id', 'device_role_id', 'device_id', 'device_status', 'virtual_chassis_id', name=_('Device') 'tenant_id', 'device_type_id', 'device_role_id', 'device_id', 'device_status', 'virtual_chassis_id',
name=_('Device')
), ),
FieldSet('cabled', 'connected', 'occupied', name=_('Connection')), FieldSet('cabled', 'connected', 'occupied', name=_('Connection')),
) )
@ -1385,7 +1394,7 @@ class PowerOutletFilterForm(PathEndpointFilterForm, DeviceComponentFilterForm):
FieldSet('name', 'label', 'type', 'color', 'status', name=_('Attributes')), FieldSet('name', 'label', 'type', 'color', 'status', name=_('Attributes')),
FieldSet('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id', name=_('Location')), FieldSet('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id', name=_('Location')),
FieldSet( FieldSet(
'device_type_id', 'device_role_id', 'device_id', 'device_status', 'virtual_chassis_id', 'tenant_id', 'device_type_id', 'device_role_id', 'device_id', 'device_status', 'virtual_chassis_id',
name=_('Device') name=_('Device')
), ),
FieldSet('cabled', 'connected', 'occupied', name=_('Connection')), FieldSet('cabled', 'connected', 'occupied', name=_('Connection')),
@ -1418,7 +1427,8 @@ class InterfaceFilterForm(PathEndpointFilterForm, DeviceComponentFilterForm):
FieldSet('rf_role', 'rf_channel', 'rf_channel_width', 'tx_power', name=_('Wireless')), FieldSet('rf_role', 'rf_channel', 'rf_channel_width', 'tx_power', name=_('Wireless')),
FieldSet('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id', name=_('Location')), FieldSet('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id', name=_('Location')),
FieldSet( FieldSet(
'device_type_id', 'device_role_id', 'device_id', 'device_status', 'virtual_chassis_id', 'vdc_id', 'tenant_id', 'device_type_id', 'device_role_id', 'device_id', 'device_status', 'virtual_chassis_id',
'vdc_id',
name=_('Device') name=_('Device')
), ),
FieldSet('cabled', 'connected', 'occupied', name=_('Connection')), FieldSet('cabled', 'connected', 'occupied', name=_('Connection')),
@ -1539,7 +1549,8 @@ class FrontPortFilterForm(CabledFilterForm, DeviceComponentFilterForm):
FieldSet('name', 'label', 'type', 'color', name=_('Attributes')), FieldSet('name', 'label', 'type', 'color', name=_('Attributes')),
FieldSet('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id', name=_('Location')), FieldSet('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id', name=_('Location')),
FieldSet( FieldSet(
'device_type_id', 'device_role_id', 'device_id', 'device_status', 'virtual_chassis_id', name=_('Device') 'tenant_id', 'device_type_id', 'device_role_id', 'device_id', 'device_status', 'virtual_chassis_id',
name=_('Device')
), ),
FieldSet('cabled', 'occupied', name=_('Cable')), FieldSet('cabled', 'occupied', name=_('Cable')),
) )
@ -1563,7 +1574,7 @@ class RearPortFilterForm(CabledFilterForm, DeviceComponentFilterForm):
FieldSet('name', 'label', 'type', 'color', name=_('Attributes')), FieldSet('name', 'label', 'type', 'color', name=_('Attributes')),
FieldSet('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id', name=_('Location')), FieldSet('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id', name=_('Location')),
FieldSet( FieldSet(
'device_type_id', 'device_role_id', 'device_id', 'device_status', 'virtual_chassis_id', 'tenant_id', 'device_type_id', 'device_role_id', 'device_id', 'device_status', 'virtual_chassis_id',
name=_('Device') name=_('Device')
), ),
FieldSet('cabled', 'occupied', name=_('Cable')), FieldSet('cabled', 'occupied', name=_('Cable')),
@ -1587,7 +1598,7 @@ class ModuleBayFilterForm(DeviceComponentFilterForm):
FieldSet('name', 'label', 'position', name=_('Attributes')), FieldSet('name', 'label', 'position', name=_('Attributes')),
FieldSet('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id', name=_('Location')), FieldSet('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id', name=_('Location')),
FieldSet( FieldSet(
'device_type_id', 'device_role_id', 'device_id', 'device_status', 'virtual_chassis_id', 'tenant_id', 'device_type_id', 'device_role_id', 'device_id', 'device_status', 'virtual_chassis_id',
name=_('Device') name=_('Device')
), ),
) )
@ -1605,7 +1616,7 @@ class DeviceBayFilterForm(DeviceComponentFilterForm):
FieldSet('name', 'label', name=_('Attributes')), FieldSet('name', 'label', name=_('Attributes')),
FieldSet('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id', name=_('Location')), FieldSet('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id', name=_('Location')),
FieldSet( FieldSet(
'device_type_id', 'device_role_id', 'device_id', 'device_status', 'virtual_chassis_id', 'tenant_id', 'device_type_id', 'device_role_id', 'device_id', 'device_status', 'virtual_chassis_id',
name=_('Device') name=_('Device')
), ),
) )
@ -1622,7 +1633,7 @@ class InventoryItemFilterForm(DeviceComponentFilterForm):
), ),
FieldSet('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id', name=_('Location')), FieldSet('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id', name=_('Location')),
FieldSet( FieldSet(
'device_type_id', 'device_role_id', 'device_id', 'device_status', 'virtual_chassis_id', 'tenant_id', 'device_type_id', 'device_role_id', 'device_id', 'device_status', 'virtual_chassis_id',
name=_('Device') name=_('Device')
), ),
) )

View File

@ -43,6 +43,13 @@ class DeviceComponentFilterSetTests:
params = {'device_status': ['active', 'planned']} params = {'device_status': ['active', 'planned']}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
def test_tenant(self):
tenants = Tenant.objects.all()[:2]
params = {'tenant_id': [tenants[0].pk, tenants[1].pk]}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
params = {'tenant': [tenants[0].slug, tenants[1].slug]}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
class DeviceComponentTemplateFilterSetTests: class DeviceComponentTemplateFilterSetTests:
@ -3377,9 +3384,17 @@ class ConsolePortTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedF
) )
Rack.objects.bulk_create(racks) Rack.objects.bulk_create(racks)
tenants = (
Tenant(name='Tenant 1', slug='tenant-1'),
Tenant(name='Tenant 2', slug='tenant-2'),
Tenant(name='Tenant 3', slug='tenant-3'),
)
Tenant.objects.bulk_create(tenants)
devices = ( devices = (
Device( Device(
name='Device 1', name='Device 1',
tenant=tenants[0],
device_type=device_types[0], device_type=device_types[0],
role=roles[0], role=roles[0],
site=sites[0], site=sites[0],
@ -3389,6 +3404,7 @@ class ConsolePortTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedF
), ),
Device( Device(
name='Device 2', name='Device 2',
tenant=tenants[1],
device_type=device_types[1], device_type=device_types[1],
role=roles[1], role=roles[1],
site=sites[1], site=sites[1],
@ -3398,6 +3414,7 @@ class ConsolePortTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedF
), ),
Device( Device(
name='Device 3', name='Device 3',
tenant=tenants[2],
device_type=device_types[2], device_type=device_types[2],
role=roles[2], role=roles[2],
site=sites[2], site=sites[2],
@ -3617,9 +3634,17 @@ class ConsoleServerPortTestCase(TestCase, DeviceComponentFilterSetTests, ChangeL
) )
Rack.objects.bulk_create(racks) Rack.objects.bulk_create(racks)
tenants = (
Tenant(name='Tenant 1', slug='tenant-1'),
Tenant(name='Tenant 2', slug='tenant-2'),
Tenant(name='Tenant 3', slug='tenant-3'),
)
Tenant.objects.bulk_create(tenants)
devices = ( devices = (
Device( Device(
name='Device 1', name='Device 1',
tenant=tenants[0],
device_type=device_types[0], device_type=device_types[0],
role=roles[0], role=roles[0],
site=sites[0], site=sites[0],
@ -3629,6 +3654,7 @@ class ConsoleServerPortTestCase(TestCase, DeviceComponentFilterSetTests, ChangeL
), ),
Device( Device(
name='Device 2', name='Device 2',
tenant=tenants[1],
device_type=device_types[1], device_type=device_types[1],
role=roles[1], role=roles[1],
site=sites[1], site=sites[1],
@ -3638,6 +3664,7 @@ class ConsoleServerPortTestCase(TestCase, DeviceComponentFilterSetTests, ChangeL
), ),
Device( Device(
name='Device 3', name='Device 3',
tenant=tenants[2],
device_type=device_types[2], device_type=device_types[2],
role=roles[2], role=roles[2],
site=sites[2], site=sites[2],
@ -3857,9 +3884,17 @@ class PowerPortTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil
) )
Rack.objects.bulk_create(racks) Rack.objects.bulk_create(racks)
tenants = (
Tenant(name='Tenant 1', slug='tenant-1'),
Tenant(name='Tenant 2', slug='tenant-2'),
Tenant(name='Tenant 3', slug='tenant-3'),
)
Tenant.objects.bulk_create(tenants)
devices = ( devices = (
Device( Device(
name='Device 1', name='Device 1',
tenant=tenants[0],
device_type=device_types[0], device_type=device_types[0],
role=roles[0], role=roles[0],
site=sites[0], site=sites[0],
@ -3869,6 +3904,7 @@ class PowerPortTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil
), ),
Device( Device(
name='Device 2', name='Device 2',
tenant=tenants[1],
device_type=device_types[1], device_type=device_types[1],
role=roles[1], role=roles[1],
site=sites[1], site=sites[1],
@ -3878,6 +3914,7 @@ class PowerPortTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil
), ),
Device( Device(
name='Device 3', name='Device 3',
tenant=tenants[2],
device_type=device_types[2], device_type=device_types[2],
role=roles[2], role=roles[2],
site=sites[2], site=sites[2],
@ -4111,9 +4148,17 @@ class PowerOutletTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedF
) )
Rack.objects.bulk_create(racks) Rack.objects.bulk_create(racks)
tenants = (
Tenant(name='Tenant 1', slug='tenant-1'),
Tenant(name='Tenant 2', slug='tenant-2'),
Tenant(name='Tenant 3', slug='tenant-3'),
)
Tenant.objects.bulk_create(tenants)
devices = ( devices = (
Device( Device(
name='Device 1', name='Device 1',
tenant=tenants[0],
device_type=device_types[0], device_type=device_types[0],
role=roles[0], role=roles[0],
site=sites[0], site=sites[0],
@ -4123,6 +4168,7 @@ class PowerOutletTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedF
), ),
Device( Device(
name='Device 2', name='Device 2',
tenant=tenants[1],
device_type=device_types[1], device_type=device_types[1],
role=roles[1], role=roles[1],
site=sites[1], site=sites[1],
@ -4132,6 +4178,7 @@ class PowerOutletTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedF
), ),
Device( Device(
name='Device 3', name='Device 3',
tenant=tenants[2],
device_type=device_types[2], device_type=device_types[2],
role=roles[2], role=roles[2],
site=sites[2], site=sites[2],
@ -4390,9 +4437,17 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil
virtual_chassis = VirtualChassis(name='Virtual Chassis') virtual_chassis = VirtualChassis(name='Virtual Chassis')
virtual_chassis.save() virtual_chassis.save()
tenants = (
Tenant(name='Tenant 1', slug='tenant-1'),
Tenant(name='Tenant 2', slug='tenant-2'),
Tenant(name='Tenant 3', slug='tenant-3'),
)
Tenant.objects.bulk_create(tenants)
devices = ( devices = (
Device( Device(
name='Device 1A', name='Device 1A',
tenant=tenants[0],
device_type=device_types[0], device_type=device_types[0],
role=roles[0], role=roles[0],
site=sites[0], site=sites[0],
@ -4405,6 +4460,7 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil
), ),
Device( Device(
name='Device 1B', name='Device 1B',
tenant=tenants[1],
device_type=device_types[2], device_type=device_types[2],
role=roles[2], role=roles[2],
site=sites[2], site=sites[2],
@ -4417,6 +4473,7 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil
), ),
Device( Device(
name='Device 2', name='Device 2',
tenant=tenants[2],
device_type=device_types[1], device_type=device_types[1],
role=roles[1], role=roles[1],
site=sites[1], site=sites[1],
@ -4426,6 +4483,7 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil
), ),
Device( Device(
name='Device 3', name='Device 3',
tenant=tenants[2],
device_type=device_types[2], device_type=device_types[2],
role=roles[2], role=roles[2],
site=sites[2], site=sites[2],
@ -5011,9 +5069,17 @@ class FrontPortTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil
) )
Rack.objects.bulk_create(racks) Rack.objects.bulk_create(racks)
tenants = (
Tenant(name='Tenant 1', slug='tenant-1'),
Tenant(name='Tenant 2', slug='tenant-2'),
Tenant(name='Tenant 3', slug='tenant-3'),
)
Tenant.objects.bulk_create(tenants)
devices = ( devices = (
Device( Device(
name='Device 1', name='Device 1',
tenant=tenants[0],
device_type=device_types[0], device_type=device_types[0],
role=roles[0], role=roles[0],
site=sites[0], site=sites[0],
@ -5023,6 +5089,7 @@ class FrontPortTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil
), ),
Device( Device(
name='Device 2', name='Device 2',
tenant=tenants[1],
device_type=device_types[1], device_type=device_types[1],
role=roles[1], role=roles[1],
site=sites[1], site=sites[1],
@ -5032,6 +5099,7 @@ class FrontPortTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil
), ),
Device( Device(
name='Device 3', name='Device 3',
tenant=tenants[2],
device_type=device_types[2], device_type=device_types[2],
role=roles[2], role=roles[2],
site=sites[2], site=sites[2],
@ -5302,9 +5370,17 @@ class RearPortTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFilt
) )
Rack.objects.bulk_create(racks) Rack.objects.bulk_create(racks)
tenants = (
Tenant(name='Tenant 1', slug='tenant-1'),
Tenant(name='Tenant 2', slug='tenant-2'),
Tenant(name='Tenant 3', slug='tenant-3'),
)
Tenant.objects.bulk_create(tenants)
devices = ( devices = (
Device( Device(
name='Device 1', name='Device 1',
tenant=tenants[0],
device_type=device_types[0], device_type=device_types[0],
role=roles[0], role=roles[0],
site=sites[0], site=sites[0],
@ -5314,6 +5390,7 @@ class RearPortTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFilt
), ),
Device( Device(
name='Device 2', name='Device 2',
tenant=tenants[1],
device_type=device_types[1], device_type=device_types[1],
role=roles[1], role=roles[1],
site=sites[1], site=sites[1],
@ -5323,6 +5400,7 @@ class RearPortTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFilt
), ),
Device( Device(
name='Device 3', name='Device 3',
tenant=tenants[2],
device_type=device_types[2], device_type=device_types[2],
role=roles[2], role=roles[2],
site=sites[2], site=sites[2],
@ -5579,9 +5657,17 @@ class ModuleBayTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil
) )
Rack.objects.bulk_create(racks) Rack.objects.bulk_create(racks)
tenants = (
Tenant(name='Tenant 1', slug='tenant-1'),
Tenant(name='Tenant 2', slug='tenant-2'),
Tenant(name='Tenant 3', slug='tenant-3'),
)
Tenant.objects.bulk_create(tenants)
devices = ( devices = (
Device( Device(
name='Device 1', name='Device 1',
tenant=tenants[0],
device_type=device_types[0], device_type=device_types[0],
role=roles[0], role=roles[0],
site=sites[0], site=sites[0],
@ -5591,6 +5677,7 @@ class ModuleBayTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil
), ),
Device( Device(
name='Device 2', name='Device 2',
tenant=tenants[1],
device_type=device_types[1], device_type=device_types[1],
role=roles[1], role=roles[1],
site=sites[1], site=sites[1],
@ -5600,6 +5687,7 @@ class ModuleBayTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil
), ),
Device( Device(
name='Device 3', name='Device 3',
tenant=tenants[2],
device_type=device_types[2], device_type=device_types[2],
role=roles[2], role=roles[2],
site=sites[2], site=sites[2],
@ -5752,9 +5840,17 @@ class DeviceBayTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil
) )
Rack.objects.bulk_create(racks) Rack.objects.bulk_create(racks)
tenants = (
Tenant(name='Tenant 1', slug='tenant-1'),
Tenant(name='Tenant 2', slug='tenant-2'),
Tenant(name='Tenant 3', slug='tenant-3'),
)
Tenant.objects.bulk_create(tenants)
devices = ( devices = (
Device( Device(
name='Device 1', name='Device 1',
tenant=tenants[0],
device_type=device_types[0], device_type=device_types[0],
role=roles[0], role=roles[0],
site=sites[0], site=sites[0],
@ -5764,6 +5860,7 @@ class DeviceBayTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil
), ),
Device( Device(
name='Device 2', name='Device 2',
tenant=tenants[1],
device_type=device_types[1], device_type=device_types[1],
role=roles[1], role=roles[1],
site=sites[1], site=sites[1],
@ -5773,6 +5870,7 @@ class DeviceBayTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil
), ),
Device( Device(
name='Device 3', name='Device 3',
tenant=tenants[2],
device_type=device_types[2], device_type=device_types[2],
role=roles[2], role=roles[2],
site=sites[2], site=sites[2],