Replaces device_role with role on device model (#13342)

* replaces device_role with role on device model #6391

* fixes lint issue #6391

* revert the database user

* revert test_runner comment

* changes as per review

* Update references to device_role column in UserConfigs

---------

Co-authored-by: Jeremy Stretch <jstretch@netboxlabs.com>
This commit is contained in:
Abhimanyu Saharan 2023-08-02 19:25:52 +05:30 committed by GitHub
parent 79030ecab2
commit 0bb86f1e7d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
37 changed files with 422 additions and 331 deletions

View File

@ -390,7 +390,7 @@ class NewBranchScript(Script):
name=f'{site.slug}-switch{i}', name=f'{site.slug}-switch{i}',
site=site, site=site,
status=DeviceStatusChoices.STATUS_PLANNED, status=DeviceStatusChoices.STATUS_PLANNED,
device_role=switch_role role=switch_role
) )
switch.full_clean() switch.full_clean()
switch.save() switch.save()

View File

@ -665,7 +665,8 @@ class PlatformSerializer(NetBoxModelSerializer):
class DeviceSerializer(NetBoxModelSerializer): class DeviceSerializer(NetBoxModelSerializer):
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:device-detail') url = serializers.HyperlinkedIdentityField(view_name='dcim-api:device-detail')
device_type = NestedDeviceTypeSerializer() device_type = NestedDeviceTypeSerializer()
device_role = NestedDeviceRoleSerializer() role = NestedDeviceRoleSerializer()
device_role = NestedDeviceRoleSerializer(read_only=True, help_text='Deprecated in v3.6 in favor of `role`.')
tenant = NestedTenantSerializer(required=False, allow_null=True, default=None) tenant = NestedTenantSerializer(required=False, allow_null=True, default=None)
platform = NestedPlatformSerializer(required=False, allow_null=True) platform = NestedPlatformSerializer(required=False, allow_null=True)
site = NestedSiteSerializer() site = NestedSiteSerializer()
@ -707,9 +708,9 @@ class DeviceSerializer(NetBoxModelSerializer):
class Meta: class Meta:
model = Device model = Device
fields = [ fields = [
'id', 'url', 'display', 'name', 'device_type', 'device_role', 'tenant', 'platform', 'serial', 'asset_tag', 'id', 'url', 'display', 'name', 'device_type', 'role', 'device_role', 'tenant', 'platform', 'serial',
'site', 'location', 'rack', 'position', 'face', 'latitude', 'longitude', 'parent_device', 'status', 'asset_tag', 'site', 'location', 'rack', 'position', 'face', 'latitude', 'longitude', 'parent_device',
'airflow', 'primary_ip', 'primary_ip4', 'primary_ip6', 'oob_ip', 'cluster', 'virtual_chassis', 'status', 'airflow', 'primary_ip', 'primary_ip4', 'primary_ip6', 'oob_ip', 'cluster', 'virtual_chassis',
'vc_position', 'vc_priority', 'description', 'comments', 'config_template', 'local_context_data', 'tags', 'vc_position', 'vc_priority', 'description', 'comments', 'config_template', 'local_context_data', 'tags',
'custom_fields', 'created', 'last_updated', 'console_port_count', 'console_server_port_count', 'custom_fields', 'created', 'last_updated', 'console_port_count', 'console_server_port_count',
'power_port_count', 'power_outlet_count', 'interface_count', 'front_port_count', 'rear_port_count', 'power_port_count', 'power_outlet_count', 'interface_count', 'front_port_count', 'rear_port_count',
@ -727,13 +728,16 @@ class DeviceSerializer(NetBoxModelSerializer):
data['device_bay'] = NestedDeviceBaySerializer(instance=device_bay, context=context).data data['device_bay'] = NestedDeviceBaySerializer(instance=device_bay, context=context).data
return data return data
def get_device_role(self, obj):
return obj.role
class DeviceWithConfigContextSerializer(DeviceSerializer): class DeviceWithConfigContextSerializer(DeviceSerializer):
config_context = serializers.SerializerMethodField(read_only=True) config_context = serializers.SerializerMethodField(read_only=True)
class Meta(DeviceSerializer.Meta): class Meta(DeviceSerializer.Meta):
fields = [ fields = [
'id', 'url', 'display', 'name', 'device_type', 'device_role', 'tenant', 'platform', 'serial', 'asset_tag', 'id', 'url', 'display', 'name', 'device_type', 'role', 'tenant', 'platform', 'serial', 'asset_tag',
'site', 'location', 'rack', 'position', 'face', 'parent_device', 'status', 'airflow', 'primary_ip', 'site', 'location', 'rack', 'position', 'face', 'parent_device', 'status', 'airflow', 'primary_ip',
'primary_ip4', 'primary_ip6', 'oob_ip', 'cluster', 'virtual_chassis', 'vc_position', 'vc_priority', 'primary_ip4', 'primary_ip6', 'oob_ip', 'cluster', 'virtual_chassis', 'vc_position', 'vc_priority',
'description', 'comments', 'local_context_data', 'tags', 'custom_fields', 'config_context', 'description', 'comments', 'local_context_data', 'tags', 'custom_fields', 'config_context',
@ -1035,7 +1039,8 @@ class ModuleBaySerializer(NetBoxModelSerializer):
class Meta: class Meta:
model = ModuleBay model = ModuleBay
fields = [ fields = [
'id', 'url', 'display', 'device', 'name', 'installed_module', 'label', 'position', 'description', 'tags', 'custom_fields', 'id', 'url', 'display', 'device', 'name', 'installed_module', 'label', 'position', 'description', 'tags',
'custom_fields',
'created', 'last_updated', 'created', 'last_updated',
] ]

View File

@ -362,7 +362,7 @@ class InventoryItemTemplateViewSet(NetBoxModelViewSet):
class DeviceRoleViewSet(NetBoxModelViewSet): class DeviceRoleViewSet(NetBoxModelViewSet):
queryset = DeviceRole.objects.prefetch_related('config_template', 'tags').annotate( queryset = DeviceRole.objects.prefetch_related('config_template', 'tags').annotate(
device_count=count_related(Device, 'device_role'), device_count=count_related(Device, 'role'),
virtualmachine_count=count_related(VirtualMachine, 'role') virtualmachine_count=count_related(VirtualMachine, 'role')
) )
serializer_class = serializers.DeviceRoleSerializer serializer_class = serializers.DeviceRoleSerializer
@ -393,7 +393,7 @@ class DeviceViewSet(
NetBoxModelViewSet NetBoxModelViewSet
): ):
queryset = Device.objects.prefetch_related( queryset = Device.objects.prefetch_related(
'device_type__manufacturer', 'device_role', 'tenant', 'platform', 'site', 'location', 'rack', 'parent_bay', 'device_type__manufacturer', 'role', 'tenant', 'platform', 'site', 'location', 'rack', 'parent_bay',
'virtual_chassis__master', 'primary_ip4__nat_outside', 'primary_ip6__nat_outside', 'config_template', 'tags', 'virtual_chassis__master', 'primary_ip4__nat_outside', 'primary_ip6__nat_outside', 'config_template', 'tags',
) )
filterset_class = filtersets.DeviceFilterSet filterset_class = filtersets.DeviceFilterSet

View File

@ -840,12 +840,12 @@ class DeviceFilterSet(NetBoxModelFilterSet, TenancyFilterSet, ContactModelFilter
label=_('Device type (ID)'), label=_('Device type (ID)'),
) )
role_id = django_filters.ModelMultipleChoiceFilter( role_id = django_filters.ModelMultipleChoiceFilter(
field_name='device_role_id', field_name='role_id',
queryset=DeviceRole.objects.all(), queryset=DeviceRole.objects.all(),
label=_('Role (ID)'), label=_('Role (ID)'),
) )
role = django_filters.ModelMultipleChoiceFilter( role = django_filters.ModelMultipleChoiceFilter(
field_name='device_role__slug', field_name='role__slug',
queryset=DeviceRole.objects.all(), queryset=DeviceRole.objects.all(),
to_field_name='slug', to_field_name='slug',
label=_('Role (slug)'), label=_('Role (slug)'),
@ -1251,13 +1251,13 @@ class DeviceComponentFilterSet(django_filters.FilterSet):
to_field_name='model', to_field_name='model',
label=_('Device type (model)'), label=_('Device type (model)'),
) )
device_role_id = django_filters.ModelMultipleChoiceFilter( role_id = django_filters.ModelMultipleChoiceFilter(
field_name='device__device_role', field_name='device__role',
queryset=DeviceRole.objects.all(), queryset=DeviceRole.objects.all(),
label=_('Device role (ID)'), label=_('Device role (ID)'),
) )
device_role = django_filters.ModelMultipleChoiceFilter( role = django_filters.ModelMultipleChoiceFilter(
field_name='device__device_role__slug', field_name='device__role__slug',
queryset=DeviceRole.objects.all(), queryset=DeviceRole.objects.all(),
to_field_name='slug', to_field_name='slug',
label=_('Device role (slug)'), label=_('Device role (slug)'),
@ -1273,6 +1273,18 @@ class DeviceComponentFilterSet(django_filters.FilterSet):
to_field_name='name', to_field_name='name',
label=_('Virtual Chassis'), label=_('Virtual Chassis'),
) )
# TODO: Remove in v4.0
device_role_id = django_filters.ModelMultipleChoiceFilter(
field_name='device__role',
queryset=DeviceRole.objects.all(),
label=_('Device role (ID)'),
)
device_role = django_filters.ModelMultipleChoiceFilter(
field_name='device__role__slug',
queryset=DeviceRole.objects.all(),
to_field_name='slug',
label=_('Device role (slug)'),
)
def search(self, queryset, name, value): def search(self, queryset, name, value):
if not value.strip(): if not value.strip():

View File

@ -553,7 +553,7 @@ class DeviceBulkEditForm(NetBoxModelBulkEditForm):
'manufacturer_id': '$manufacturer' 'manufacturer_id': '$manufacturer'
} }
) )
device_role = DynamicModelChoiceField( role = DynamicModelChoiceField(
label=_('Device role'), label=_('Device role'),
queryset=DeviceRole.objects.all(), queryset=DeviceRole.objects.all(),
required=False required=False
@ -610,7 +610,7 @@ class DeviceBulkEditForm(NetBoxModelBulkEditForm):
model = Device model = Device
fieldsets = ( fieldsets = (
(_('Device'), ('device_role', 'status', 'tenant', 'platform', 'description')), (_('Device'), ('role', 'status', 'tenant', 'platform', 'description')),
(_('Location'), ('site', 'location')), (_('Location'), ('site', 'location')),
(_('Hardware'), ('manufacturer', 'device_type', 'airflow', 'serial')), (_('Hardware'), ('manufacturer', 'device_type', 'airflow', 'serial')),
(_('Configuration'), ('config_template',)), (_('Configuration'), ('config_template',)),

View File

@ -404,7 +404,7 @@ class PlatformImportForm(NetBoxModelImportForm):
class BaseDeviceImportForm(NetBoxModelImportForm): class BaseDeviceImportForm(NetBoxModelImportForm):
device_role = CSVModelChoiceField( role = CSVModelChoiceField(
label=_('Device role'), label=_('Device role'),
queryset=DeviceRole.objects.all(), queryset=DeviceRole.objects.all(),
to_field_name='name', to_field_name='name',
@ -527,7 +527,7 @@ class DeviceImportForm(BaseDeviceImportForm):
class Meta(BaseDeviceImportForm.Meta): class Meta(BaseDeviceImportForm.Meta):
fields = [ fields = [
'name', 'device_role', 'tenant', 'manufacturer', 'device_type', 'platform', 'serial', 'asset_tag', 'status', 'name', 'role', 'tenant', 'manufacturer', 'device_type', 'platform', 'serial', 'asset_tag', 'status',
'site', 'location', 'rack', 'position', 'face', 'latitude', 'longitude', 'parent', 'device_bay', 'airflow', 'site', 'location', 'rack', 'position', 'face', 'latitude', 'longitude', 'parent', 'device_bay', 'airflow',
'virtual_chassis', 'vc_position', 'vc_priority', 'cluster', 'description', 'config_template', 'comments', 'virtual_chassis', 'vc_position', 'vc_priority', 'cluster', 'description', 'config_template', 'comments',
'tags', 'tags',

View File

@ -109,7 +109,7 @@ class DeviceComponentFilterForm(NetBoxModelFilterSetForm):
required=False, required=False,
label=_('Device type') label=_('Device type')
) )
device_role_id = DynamicModelMultipleChoiceField( role_id = DynamicModelMultipleChoiceField(
queryset=DeviceRole.objects.all(), queryset=DeviceRole.objects.all(),
required=False, required=False,
label=_('Device role') label=_('Device role')
@ -122,7 +122,7 @@ 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': '$device_role_id' 'role_id': '$role_id'
}, },
label=_('Device') label=_('Device')
) )
@ -1136,7 +1136,7 @@ class ConsolePortFilterForm(PathEndpointFilterForm, DeviceComponentFilterForm):
(None, ('q', 'filter_id', 'tag')), (None, ('q', 'filter_id', 'tag')),
(_('Attributes'), ('name', 'label', 'type', 'speed')), (_('Attributes'), ('name', 'label', 'type', 'speed')),
(_('Location'), ('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id')), (_('Location'), ('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id')),
(_('Device'), ('device_type_id', 'device_role_id', 'device_id', 'virtual_chassis_id')), (_('Device'), ('device_type_id', 'role_id', 'device_id', 'virtual_chassis_id')),
(_('Connection'), ('cabled', 'connected', 'occupied')), (_('Connection'), ('cabled', 'connected', 'occupied')),
) )
type = forms.MultipleChoiceField( type = forms.MultipleChoiceField(
@ -1158,7 +1158,7 @@ class ConsoleServerPortFilterForm(PathEndpointFilterForm, DeviceComponentFilterF
(None, ('q', 'filter_id', 'tag')), (None, ('q', 'filter_id', 'tag')),
(_('Attributes'), ('name', 'label', 'type', 'speed')), (_('Attributes'), ('name', 'label', 'type', 'speed')),
(_('Location'), ('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id')), (_('Location'), ('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id')),
(_('Device'), ('device_type_id', 'device_role_id', 'device_id', 'virtual_chassis_id')), (_('Device'), ('device_type_id', 'role_id', 'device_id', 'virtual_chassis_id')),
(_('Connection'), ('cabled', 'connected', 'occupied')), (_('Connection'), ('cabled', 'connected', 'occupied')),
) )
type = forms.MultipleChoiceField( type = forms.MultipleChoiceField(
@ -1180,7 +1180,7 @@ class PowerPortFilterForm(PathEndpointFilterForm, DeviceComponentFilterForm):
(None, ('q', 'filter_id', 'tag')), (None, ('q', 'filter_id', 'tag')),
(_('Attributes'), ('name', 'label', 'type')), (_('Attributes'), ('name', 'label', 'type')),
(_('Location'), ('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id')), (_('Location'), ('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id')),
(_('Device'), ('device_type_id', 'device_role_id', 'device_id', 'virtual_chassis_id')), (_('Device'), ('device_type_id', 'role_id', 'device_id', 'virtual_chassis_id')),
(_('Connection'), ('cabled', 'connected', 'occupied')), (_('Connection'), ('cabled', 'connected', 'occupied')),
) )
type = forms.MultipleChoiceField( type = forms.MultipleChoiceField(
@ -1197,7 +1197,7 @@ class PowerOutletFilterForm(PathEndpointFilterForm, DeviceComponentFilterForm):
(None, ('q', 'filter_id', 'tag')), (None, ('q', 'filter_id', 'tag')),
(_('Attributes'), ('name', 'label', 'type')), (_('Attributes'), ('name', 'label', 'type')),
(_('Location'), ('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id')), (_('Location'), ('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id')),
(_('Device'), ('device_type_id', 'device_role_id', 'device_id', 'virtual_chassis_id')), (_('Device'), ('device_type_id', 'role_id', 'device_id', 'virtual_chassis_id')),
(_('Connection'), ('cabled', 'connected', 'occupied')), (_('Connection'), ('cabled', 'connected', 'occupied')),
) )
type = forms.MultipleChoiceField( type = forms.MultipleChoiceField(
@ -1217,7 +1217,7 @@ class InterfaceFilterForm(PathEndpointFilterForm, DeviceComponentFilterForm):
(_('PoE'), ('poe_mode', 'poe_type')), (_('PoE'), ('poe_mode', 'poe_type')),
(_('Wireless'), ('rf_role', 'rf_channel', 'rf_channel_width', 'tx_power')), (_('Wireless'), ('rf_role', 'rf_channel', 'rf_channel_width', 'tx_power')),
(_('Location'), ('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id')), (_('Location'), ('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id')),
(_('Device'), ('device_type_id', 'device_role_id', 'device_id', 'virtual_chassis_id', 'vdc_id')), (_('Device'), ('device_type_id', 'role_id', 'device_id', 'virtual_chassis_id', 'vdc_id')),
(_('Connection'), ('cabled', 'connected', 'occupied')), (_('Connection'), ('cabled', 'connected', 'occupied')),
) )
vdc_id = DynamicModelMultipleChoiceField( vdc_id = DynamicModelMultipleChoiceField(
@ -1324,7 +1324,7 @@ class FrontPortFilterForm(CabledFilterForm, DeviceComponentFilterForm):
(None, ('q', 'filter_id', 'tag')), (None, ('q', 'filter_id', 'tag')),
(_('Attributes'), ('name', 'label', 'type', 'color')), (_('Attributes'), ('name', 'label', 'type', 'color')),
(_('Location'), ('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id')), (_('Location'), ('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id')),
(_('Device'), ('device_type_id', 'device_role_id', 'device_id', 'virtual_chassis_id')), (_('Device'), ('device_type_id', 'role_id', 'device_id', 'virtual_chassis_id')),
(_('Cable'), ('cabled', 'occupied')), (_('Cable'), ('cabled', 'occupied')),
) )
model = FrontPort model = FrontPort
@ -1346,7 +1346,7 @@ class RearPortFilterForm(CabledFilterForm, DeviceComponentFilterForm):
(None, ('q', 'filter_id', 'tag')), (None, ('q', 'filter_id', 'tag')),
(_('Attributes'), ('name', 'label', 'type', 'color')), (_('Attributes'), ('name', 'label', 'type', 'color')),
(_('Location'), ('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id')), (_('Location'), ('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id')),
(_('Device'), ('device_type_id', 'device_role_id', 'device_id', 'virtual_chassis_id')), (_('Device'), ('device_type_id', 'role_id', 'device_id', 'virtual_chassis_id')),
(_('Cable'), ('cabled', 'occupied')), (_('Cable'), ('cabled', 'occupied')),
) )
type = forms.MultipleChoiceField( type = forms.MultipleChoiceField(
@ -1367,7 +1367,7 @@ class ModuleBayFilterForm(DeviceComponentFilterForm):
(None, ('q', 'filter_id', 'tag')), (None, ('q', 'filter_id', 'tag')),
(_('Attributes'), ('name', 'label', 'position')), (_('Attributes'), ('name', 'label', 'position')),
(_('Location'), ('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id')), (_('Location'), ('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id')),
(_('Device'), ('device_type_id', 'device_role_id', 'device_id', 'virtual_chassis_id')), (_('Device'), ('device_type_id', 'role_id', 'device_id', 'virtual_chassis_id')),
) )
tag = TagFilterField(model) tag = TagFilterField(model)
position = forms.CharField( position = forms.CharField(
@ -1382,7 +1382,7 @@ class DeviceBayFilterForm(DeviceComponentFilterForm):
(None, ('q', 'filter_id', 'tag')), (None, ('q', 'filter_id', 'tag')),
(_('Attributes'), ('name', 'label')), (_('Attributes'), ('name', 'label')),
(_('Location'), ('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id')), (_('Location'), ('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id')),
(_('Device'), ('device_type_id', 'device_role_id', 'device_id', 'virtual_chassis_id')), (_('Device'), ('device_type_id', 'role_id', 'device_id', 'virtual_chassis_id')),
) )
tag = TagFilterField(model) tag = TagFilterField(model)
@ -1393,7 +1393,7 @@ class InventoryItemFilterForm(DeviceComponentFilterForm):
(None, ('q', 'filter_id', 'tag')), (None, ('q', 'filter_id', 'tag')),
(_('Attributes'), ('name', 'label', 'role_id', 'manufacturer_id', 'serial', 'asset_tag', 'discovered')), (_('Attributes'), ('name', 'label', 'role_id', 'manufacturer_id', 'serial', 'asset_tag', 'discovered')),
(_('Location'), ('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id')), (_('Location'), ('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id')),
(_('Device'), ('device_type_id', 'device_role_id', 'device_id', 'virtual_chassis_id')), (_('Device'), ('device_type_id', 'role_id', 'device_id', 'virtual_chassis_id')),
) )
role_id = DynamicModelMultipleChoiceField( role_id = DynamicModelMultipleChoiceField(
queryset=InventoryItemRole.objects.all(), queryset=InventoryItemRole.objects.all(),

View File

@ -434,7 +434,7 @@ class DeviceForm(TenancyForm, NetBoxModelForm):
queryset=DeviceType.objects.all(), queryset=DeviceType.objects.all(),
selector=True selector=True
) )
device_role = DynamicModelChoiceField( role = DynamicModelChoiceField(
label=_('Device role'), label=_('Device role'),
queryset=DeviceRole.objects.all() queryset=DeviceRole.objects.all()
) )
@ -479,7 +479,7 @@ class DeviceForm(TenancyForm, NetBoxModelForm):
class Meta: class Meta:
model = Device model = Device
fields = [ fields = [
'name', 'device_role', 'device_type', 'serial', 'asset_tag', 'site', 'rack', 'location', 'position', 'face', 'name', 'role', 'device_type', 'serial', 'asset_tag', 'site', 'rack', 'location', 'position', 'face',
'latitude', 'longitude', 'status', 'airflow', 'platform', 'primary_ip4', 'primary_ip6', 'oob_ip', 'cluster', 'latitude', 'longitude', 'status', 'airflow', 'platform', 'primary_ip4', 'primary_ip6', 'oob_ip', 'cluster',
'tenant_group', 'tenant', 'virtual_chassis', 'vc_position', 'vc_priority', 'description', 'config_template', 'tenant_group', 'tenant', 'virtual_chassis', 'vc_position', 'vc_priority', 'description', 'config_template',
'comments', 'tags', 'local_context_data', 'comments', 'tags', 'local_context_data',

View File

@ -0,0 +1,35 @@
from django.db import migrations
def update_table_configs(apps, schema_editor):
"""
Replace the `device_role` column in DeviceTable configs with `role`.
"""
UserConfig = apps.get_model('users', 'UserConfig')
for table in ('DeviceTable', 'DeviceBayTable'):
for config in UserConfig.objects.filter(**{f'data__tables__{table}__columns__contains': 'device_role'}):
config.data['tables'][table]['columns'] = [
'role' if x == 'device_role' else x
for x in config.data['tables'][table]['columns']
]
config.save()
class Migration(migrations.Migration):
dependencies = [
('dcim', '0180_powerfeed_tenant'),
]
operations = [
migrations.RenameField(
model_name='device',
old_name='device_role',
new_name='role',
),
migrations.RunPython(
code=update_table_configs,
reverse_code=migrations.RunPython.noop
),
]

View File

@ -537,7 +537,7 @@ class Device(PrimaryModel, ConfigContextModel, TrackingModelMixin):
on_delete=models.PROTECT, on_delete=models.PROTECT,
related_name='instances' related_name='instances'
) )
device_role = models.ForeignKey( role = models.ForeignKey(
to='dcim.DeviceRole', to='dcim.DeviceRole',
on_delete=models.PROTECT, on_delete=models.PROTECT,
related_name='devices', related_name='devices',
@ -758,7 +758,7 @@ class Device(PrimaryModel, ConfigContextModel, TrackingModelMixin):
objects = ConfigContextModelQuerySet.as_manager() objects = ConfigContextModelQuerySet.as_manager()
clone_fields = ( clone_fields = (
'device_type', 'device_role', 'tenant', 'platform', 'site', 'location', 'rack', 'face', 'status', 'airflow', 'device_type', 'role', 'tenant', 'platform', 'site', 'location', 'rack', 'face', 'status', 'airflow',
'cluster', 'virtual_chassis', 'cluster', 'virtual_chassis',
) )
prerequisite_models = ( prerequisite_models = (
@ -808,6 +808,20 @@ class Device(PrimaryModel, ConfigContextModel, TrackingModelMixin):
def get_absolute_url(self): def get_absolute_url(self):
return reverse('dcim:device', args=[self.pk]) return reverse('dcim:device', args=[self.pk])
@property
def device_role(self):
"""
For backwards compatibility with pre-v3.6 code expecting a device_role to be present on Device.
"""
return self.role
@device_role.setter
def device_role(self, value):
"""
For backwards compatibility with pre-v3.6 code expecting a device_role to be present on Device.
"""
self.role = value
def clean(self): def clean(self):
super().clean() super().clean()
@ -1063,8 +1077,8 @@ class Device(PrimaryModel, ConfigContextModel, TrackingModelMixin):
""" """
if self.config_template: if self.config_template:
return self.config_template return self.config_template
if self.device_role.config_template: if self.role.config_template:
return self.device_role.config_template return self.role.config_template
if self.platform and self.platform.config_template: if self.platform and self.platform.config_template:
return self.platform.config_template return self.platform.config_template

View File

@ -323,7 +323,7 @@ class Rack(PrimaryModel, WeightMixin):
devices = Device.objects.prefetch_related( devices = Device.objects.prefetch_related(
'device_type', 'device_type',
'device_type__manufacturer', 'device_type__manufacturer',
'device_role' 'role'
).annotate( ).annotate(
devicebay_count=Count('devicebays') devicebay_count=Count('devicebays')
).exclude( ).exclude(

View File

@ -167,9 +167,9 @@ class CableTraceSVG:
if hasattr(instance, 'parent_object'): if hasattr(instance, 'parent_object'):
# Termination # Termination
return getattr(instance, 'color', 'f0f0f0') or 'f0f0f0' return getattr(instance, 'color', 'f0f0f0') or 'f0f0f0'
if hasattr(instance, 'device_role'): if hasattr(instance, 'role'):
# Device # Device
return instance.device_role.color return instance.role.color
else: else:
# Other parent object # Other parent object
return 'e0e0e0' return 'e0e0e0'

View File

@ -46,14 +46,14 @@ def get_device_description(device):
Return a description for a device to be rendered in the rack elevation in the following format Return a description for a device to be rendered in the rack elevation in the following format
Name: <name> Name: <name>
Role: <device_role> Role: <role>
Device Type: <manufacturer> <model> (<u_height>) Device Type: <manufacturer> <model> (<u_height>)
Asset tag: <asset_tag> (if defined) Asset tag: <asset_tag> (if defined)
Serial: <serial> (if defined) Serial: <serial> (if defined)
Description: <description> (if defined) Description: <description> (if defined)
""" """
description = f'Name: {device.name}' description = f'Name: {device.name}'
description += f'\nRole: {device.device_role}' description += f'\nRole: {device.role}'
u_height = f'{floatformat(device.device_type.u_height)}U' u_height = f'{floatformat(device.device_type.u_height)}U'
description += f'\nDevice Type: {device.device_type.manufacturer.name} {device.device_type.model} ({u_height})' description += f'\nDevice Type: {device.device_type.manufacturer.name} {device.device_type.model} ({u_height})'
if device.asset_tag: if device.asset_tag:
@ -205,7 +205,7 @@ class RackElevationSVG:
""" """
Draw the front (mounted) face of a device. Draw the front (mounted) face of a device.
""" """
color = device.device_role.color color = device.role.color
image = device.device_type.front_image image = device.device_type.front_image
self._draw_device(device, coords, size, color=color, image=image) self._draw_device(device, coords, size, color=color, image=image)

View File

@ -190,7 +190,7 @@ class DeviceTable(TenancyColumnsMixin, ContactsColumnMixin, NetBoxTable):
verbose_name=_('Position'), verbose_name=_('Position'),
template_code='{{ value|floatformat }}' template_code='{{ value|floatformat }}'
) )
device_role = columns.ColoredLabelColumn( role = columns.ColoredLabelColumn(
verbose_name=_('Role') verbose_name=_('Role')
) )
manufacturer = tables.Column( manufacturer = tables.Column(
@ -285,14 +285,14 @@ class DeviceTable(TenancyColumnsMixin, ContactsColumnMixin, NetBoxTable):
class Meta(NetBoxTable.Meta): class Meta(NetBoxTable.Meta):
model = models.Device model = models.Device
fields = ( fields = (
'pk', 'id', 'name', 'status', 'tenant', 'tenant_group', 'device_role', 'manufacturer', 'device_type', 'pk', 'id', 'name', 'status', 'tenant', 'tenant_group', 'role', 'manufacturer', 'device_type',
'platform', 'serial', 'asset_tag', 'region', 'site_group', 'site', 'location', 'rack', 'parent_device', 'platform', 'serial', 'asset_tag', 'region', 'site_group', 'site', 'location', 'rack', 'parent_device',
'device_bay_position', 'position', 'face', 'latitude', 'longitude', 'airflow', 'primary_ip', 'primary_ip4', 'device_bay_position', 'position', 'face', 'latitude', 'longitude', 'airflow', 'primary_ip', 'primary_ip4',
'primary_ip6', 'oob_ip', 'cluster', 'virtual_chassis', 'vc_position', 'vc_priority', 'description', 'primary_ip6', 'oob_ip', 'cluster', 'virtual_chassis', 'vc_position', 'vc_priority', 'description',
'config_template', 'comments', 'contacts', 'tags', 'created', 'last_updated', 'config_template', 'comments', 'contacts', 'tags', 'created', 'last_updated',
) )
default_columns = ( default_columns = (
'pk', 'name', 'status', 'tenant', 'site', 'location', 'rack', 'device_role', 'manufacturer', 'device_type', 'pk', 'name', 'status', 'tenant', 'site', 'location', 'rack', 'role', 'manufacturer', 'device_type',
'primary_ip', 'primary_ip',
) )
@ -314,7 +314,7 @@ class DeviceImportTable(TenancyColumnsMixin, NetBoxTable):
verbose_name=_('Rack'), verbose_name=_('Rack'),
linkify=True linkify=True
) )
device_role = tables.Column( role = tables.Column(
verbose_name=_('Role') verbose_name=_('Role')
) )
device_type = tables.Column( device_type = tables.Column(
@ -323,7 +323,7 @@ class DeviceImportTable(TenancyColumnsMixin, NetBoxTable):
class Meta(NetBoxTable.Meta): class Meta(NetBoxTable.Meta):
model = models.Device model = models.Device
fields = ('id', 'name', 'status', 'tenant', 'tenant_group', 'site', 'rack', 'position', 'device_role', 'device_type') fields = ('id', 'name', 'status', 'tenant', 'tenant_group', 'site', 'rack', 'position', 'role', 'device_type')
empty_text = False empty_text = False
@ -822,8 +822,8 @@ class DeviceBayTable(DeviceComponentTable):
'args': [Accessor('device_id')], 'args': [Accessor('device_id')],
} }
) )
device_role = columns.ColoredLabelColumn( role = columns.ColoredLabelColumn(
accessor=Accessor('installed_device__device_role'), accessor=Accessor('installed_device__role'),
verbose_name=_('Role') verbose_name=_('Role')
) )
device_type = tables.Column( device_type = tables.Column(
@ -847,8 +847,8 @@ class DeviceBayTable(DeviceComponentTable):
class Meta(DeviceComponentTable.Meta): class Meta(DeviceComponentTable.Meta):
model = models.DeviceBay model = models.DeviceBay
fields = ( fields = (
'pk', 'id', 'name', 'device', 'label', 'status', 'device_role', 'device_type', 'installed_device', 'description', 'tags', 'pk', 'id', 'name', 'device', 'label', 'status', 'role', 'device_type', 'installed_device', 'description',
'created', 'last_updated', 'tags', 'created', 'last_updated',
) )
default_columns = ('pk', 'name', 'device', 'label', 'status', 'installed_device', 'description') default_columns = ('pk', 'name', 'device', 'label', 'status', 'installed_device', 'description')

View File

@ -40,7 +40,7 @@ class Mixins:
peer_device = Device.objects.create( peer_device = Device.objects.create(
site=Site.objects.first(), site=Site.objects.first(),
device_type=DeviceType.objects.first(), device_type=DeviceType.objects.first(),
device_role=DeviceRole.objects.first(), role=DeviceRole.objects.first(),
name='Peer Device' name='Peer Device'
) )
if self.peer_termination_type is None: if self.peer_termination_type is None:
@ -1052,12 +1052,12 @@ class DeviceRoleTest(APIViewTestCases.APIViewTestCase):
@classmethod @classmethod
def setUpTestData(cls): def setUpTestData(cls):
device_roles = ( roles = (
DeviceRole(name='Device Role 1', slug='device-role-1', color='ff0000'), DeviceRole(name='Device Role 1', slug='device-role-1', color='ff0000'),
DeviceRole(name='Device Role 2', slug='device-role-2', color='00ff00'), DeviceRole(name='Device Role 2', slug='device-role-2', color='00ff00'),
DeviceRole(name='Device Role 3', slug='device-role-3', color='0000ff'), DeviceRole(name='Device Role 3', slug='device-role-3', color='0000ff'),
) )
DeviceRole.objects.bulk_create(device_roles) DeviceRole.objects.bulk_create(roles)
class PlatformTest(APIViewTestCases.APIViewTestCase): class PlatformTest(APIViewTestCases.APIViewTestCase):
@ -1122,11 +1122,11 @@ class DeviceTest(APIViewTestCases.APIViewTestCase):
) )
DeviceType.objects.bulk_create(device_types) DeviceType.objects.bulk_create(device_types)
device_roles = ( roles = (
DeviceRole(name='Device Role 1', slug='device-role-1', color='ff0000'), DeviceRole(name='Device Role 1', slug='device-role-1', color='ff0000'),
DeviceRole(name='Device Role 2', slug='device-role-2', color='00ff00'), DeviceRole(name='Device Role 2', slug='device-role-2', color='00ff00'),
) )
DeviceRole.objects.bulk_create(device_roles) DeviceRole.objects.bulk_create(roles)
cluster_type = ClusterType.objects.create(name='Cluster Type 1', slug='cluster-type-1') cluster_type = ClusterType.objects.create(name='Cluster Type 1', slug='cluster-type-1')
@ -1139,7 +1139,7 @@ class DeviceTest(APIViewTestCases.APIViewTestCase):
devices = ( devices = (
Device( Device(
device_type=device_types[0], device_type=device_types[0],
device_role=device_roles[0], role=roles[0],
name='Device 1', name='Device 1',
site=sites[0], site=sites[0],
rack=racks[0], rack=racks[0],
@ -1148,7 +1148,7 @@ class DeviceTest(APIViewTestCases.APIViewTestCase):
), ),
Device( Device(
device_type=device_types[0], device_type=device_types[0],
device_role=device_roles[0], role=roles[0],
name='Device 2', name='Device 2',
site=sites[0], site=sites[0],
rack=racks[0], rack=racks[0],
@ -1157,7 +1157,7 @@ class DeviceTest(APIViewTestCases.APIViewTestCase):
), ),
Device( Device(
device_type=device_types[0], device_type=device_types[0],
device_role=device_roles[0], role=roles[0],
name='Device 3', name='Device 3',
site=sites[0], site=sites[0],
rack=racks[0], rack=racks[0],
@ -1170,7 +1170,7 @@ class DeviceTest(APIViewTestCases.APIViewTestCase):
cls.create_data = [ cls.create_data = [
{ {
'device_type': device_types[1].pk, 'device_type': device_types[1].pk,
'device_role': device_roles[1].pk, 'role': roles[1].pk,
'name': 'Test Device 4', 'name': 'Test Device 4',
'site': sites[1].pk, 'site': sites[1].pk,
'rack': racks[1].pk, 'rack': racks[1].pk,
@ -1178,7 +1178,7 @@ class DeviceTest(APIViewTestCases.APIViewTestCase):
}, },
{ {
'device_type': device_types[1].pk, 'device_type': device_types[1].pk,
'device_role': device_roles[1].pk, 'role': roles[1].pk,
'name': 'Test Device 5', 'name': 'Test Device 5',
'site': sites[1].pk, 'site': sites[1].pk,
'rack': racks[1].pk, 'rack': racks[1].pk,
@ -1186,7 +1186,7 @@ class DeviceTest(APIViewTestCases.APIViewTestCase):
}, },
{ {
'device_type': device_types[1].pk, 'device_type': device_types[1].pk,
'device_role': device_roles[1].pk, 'role': roles[1].pk,
'name': 'Test Device 6', 'name': 'Test Device 6',
'site': sites[1].pk, 'site': sites[1].pk,
'rack': racks[1].pk, 'rack': racks[1].pk,
@ -1221,7 +1221,7 @@ class DeviceTest(APIViewTestCases.APIViewTestCase):
device = Device.objects.first() device = Device.objects.first()
data = { data = {
'device_type': device.device_type.pk, 'device_type': device.device_type.pk,
'device_role': device.device_role.pk, 'role': device.role.pk,
'site': device.site.pk, 'site': device.site.pk,
'name': device.name, 'name': device.name,
} }
@ -1241,7 +1241,7 @@ class DeviceTest(APIViewTestCases.APIViewTestCase):
data = [ data = [
{ {
'device_type': device_type.pk, 'device_type': device_type.pk,
'device_role': device.device_role.pk, 'role': device.role.pk,
'site': device.site.pk, 'site': device.site.pk,
'name': 'Test Device 7', 'name': 'Test Device 7',
'rack': device.rack.pk, 'rack': device.rack.pk,
@ -1250,7 +1250,7 @@ class DeviceTest(APIViewTestCases.APIViewTestCase):
}, },
{ {
'device_type': device_type.pk, 'device_type': device_type.pk,
'device_role': device.device_role.pk, 'role': device.role.pk,
'site': device.site.pk, 'site': device.site.pk,
'name': 'Test Device 8', 'name': 'Test Device 8',
'rack': device.rack.pk, 'rack': device.rack.pk,
@ -1343,8 +1343,8 @@ class ConsolePortTest(Mixins.ComponentTraceMixin, APIViewTestCases.APIViewTestCa
manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1') manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1', slug='device-type-1') devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1', slug='device-type-1')
site = Site.objects.create(name='Site 1', slug='site-1') site = Site.objects.create(name='Site 1', slug='site-1')
devicerole = DeviceRole.objects.create(name='Test Device Role 1', slug='test-device-role-1', color='ff0000') role = DeviceRole.objects.create(name='Test Device Role 1', slug='test-device-role-1', color='ff0000')
device = Device.objects.create(device_type=devicetype, device_role=devicerole, name='Device 1', site=site) device = Device.objects.create(device_type=devicetype, role=role, name='Device 1', site=site)
console_ports = ( console_ports = (
ConsolePort(device=device, name='Console Port 1'), ConsolePort(device=device, name='Console Port 1'),
@ -1385,8 +1385,8 @@ class ConsoleServerPortTest(Mixins.ComponentTraceMixin, APIViewTestCases.APIView
manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1') manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1', slug='device-type-1') devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1', slug='device-type-1')
site = Site.objects.create(name='Site 1', slug='site-1') site = Site.objects.create(name='Site 1', slug='site-1')
devicerole = DeviceRole.objects.create(name='Test Device Role 1', slug='test-device-role-1', color='ff0000') role = DeviceRole.objects.create(name='Test Device Role 1', slug='test-device-role-1', color='ff0000')
device = Device.objects.create(device_type=devicetype, device_role=devicerole, name='Device 1', site=site) device = Device.objects.create(device_type=devicetype, role=role, name='Device 1', site=site)
console_server_ports = ( console_server_ports = (
ConsoleServerPort(device=device, name='Console Server Port 1'), ConsoleServerPort(device=device, name='Console Server Port 1'),
@ -1427,8 +1427,8 @@ class PowerPortTest(Mixins.ComponentTraceMixin, APIViewTestCases.APIViewTestCase
manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1') manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1', slug='device-type-1') devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1', slug='device-type-1')
site = Site.objects.create(name='Site 1', slug='site-1') site = Site.objects.create(name='Site 1', slug='site-1')
devicerole = DeviceRole.objects.create(name='Test Device Role 1', slug='test-device-role-1', color='ff0000') role = DeviceRole.objects.create(name='Test Device Role 1', slug='test-device-role-1', color='ff0000')
device = Device.objects.create(device_type=devicetype, device_role=devicerole, name='Device 1', site=site) device = Device.objects.create(device_type=devicetype, role=role, name='Device 1', site=site)
power_ports = ( power_ports = (
PowerPort(device=device, name='Power Port 1'), PowerPort(device=device, name='Power Port 1'),
@ -1466,8 +1466,8 @@ class PowerOutletTest(Mixins.ComponentTraceMixin, APIViewTestCases.APIViewTestCa
manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1') manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1', slug='device-type-1') devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1', slug='device-type-1')
site = Site.objects.create(name='Site 1', slug='site-1') site = Site.objects.create(name='Site 1', slug='site-1')
devicerole = DeviceRole.objects.create(name='Test Device Role 1', slug='test-device-role-1', color='ff0000') role = DeviceRole.objects.create(name='Test Device Role 1', slug='test-device-role-1', color='ff0000')
device = Device.objects.create(device_type=devicetype, device_role=devicerole, name='Device 1', site=site) device = Device.objects.create(device_type=devicetype, role=role, name='Device 1', site=site)
power_ports = ( power_ports = (
PowerPort(device=device, name='Power Port 1'), PowerPort(device=device, name='Power Port 1'),
@ -1514,8 +1514,8 @@ class InterfaceTest(Mixins.ComponentTraceMixin, APIViewTestCases.APIViewTestCase
manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1') manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1', slug='device-type-1') devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1', slug='device-type-1')
site = Site.objects.create(name='Site 1', slug='site-1') site = Site.objects.create(name='Site 1', slug='site-1')
devicerole = DeviceRole.objects.create(name='Test Device Role 1', slug='test-device-role-1', color='ff0000') role = DeviceRole.objects.create(name='Test Device Role 1', slug='test-device-role-1', color='ff0000')
device = Device.objects.create(device_type=devicetype, device_role=devicerole, name='Device 1', site=site) device = Device.objects.create(device_type=devicetype, role=role, name='Device 1', site=site)
interfaces = ( interfaces = (
Interface(device=device, name='Interface 1', type='1000base-t'), Interface(device=device, name='Interface 1', type='1000base-t'),
@ -1621,8 +1621,8 @@ class FrontPortTest(APIViewTestCases.APIViewTestCase):
manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1') manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1', slug='device-type-1') devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1', slug='device-type-1')
site = Site.objects.create(name='Site 1', slug='site-1') site = Site.objects.create(name='Site 1', slug='site-1')
devicerole = DeviceRole.objects.create(name='Test Device Role 1', slug='test-device-role-1', color='ff0000') role = DeviceRole.objects.create(name='Test Device Role 1', slug='test-device-role-1', color='ff0000')
device = Device.objects.create(device_type=devicetype, device_role=devicerole, name='Device 1', site=site) device = Device.objects.create(device_type=devicetype, role=role, name='Device 1', site=site)
rear_ports = ( rear_ports = (
RearPort(device=device, name='Rear Port 1', type=PortTypeChoices.TYPE_8P8C), RearPort(device=device, name='Rear Port 1', type=PortTypeChoices.TYPE_8P8C),
@ -1679,8 +1679,8 @@ class RearPortTest(APIViewTestCases.APIViewTestCase):
manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1') manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1', slug='device-type-1') devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1', slug='device-type-1')
site = Site.objects.create(name='Site 1', slug='site-1') site = Site.objects.create(name='Site 1', slug='site-1')
devicerole = DeviceRole.objects.create(name='Test Device Role 1', slug='test-device-role-1', color='ff0000') role = DeviceRole.objects.create(name='Test Device Role 1', slug='test-device-role-1', color='ff0000')
device = Device.objects.create(device_type=devicetype, device_role=devicerole, name='Device 1', site=site) device = Device.objects.create(device_type=devicetype, role=role, name='Device 1', site=site)
rear_ports = ( rear_ports = (
RearPort(device=device, name='Rear Port 1', type=PortTypeChoices.TYPE_8P8C), RearPort(device=device, name='Rear Port 1', type=PortTypeChoices.TYPE_8P8C),
@ -1719,10 +1719,10 @@ class ModuleBayTest(APIViewTestCases.APIViewTestCase):
def setUpTestData(cls): def setUpTestData(cls):
manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1') manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
site = Site.objects.create(name='Site 1', slug='site-1') site = Site.objects.create(name='Site 1', slug='site-1')
devicerole = DeviceRole.objects.create(name='Test Device Role 1', slug='test-device-role-1', color='ff0000') role = DeviceRole.objects.create(name='Test Device Role 1', slug='test-device-role-1', color='ff0000')
device_type = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1', slug='device-type-1') device_type = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1', slug='device-type-1')
device = Device.objects.create(device_type=device_type, device_role=devicerole, name='Device 1', site=site) device = Device.objects.create(device_type=device_type, role=role, name='Device 1', site=site)
device_bays = ( device_bays = (
ModuleBay(device=device, name='Device Bay 1'), ModuleBay(device=device, name='Device Bay 1'),
@ -1758,7 +1758,7 @@ class DeviceBayTest(APIViewTestCases.APIViewTestCase):
def setUpTestData(cls): def setUpTestData(cls):
manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1') manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
site = Site.objects.create(name='Site 1', slug='site-1') site = Site.objects.create(name='Site 1', slug='site-1')
devicerole = DeviceRole.objects.create(name='Test Device Role 1', slug='test-device-role-1', color='ff0000') role = DeviceRole.objects.create(name='Test Device Role 1', slug='test-device-role-1', color='ff0000')
device_types = ( device_types = (
DeviceType( DeviceType(
@ -1777,10 +1777,10 @@ class DeviceBayTest(APIViewTestCases.APIViewTestCase):
DeviceType.objects.bulk_create(device_types) DeviceType.objects.bulk_create(device_types)
devices = ( devices = (
Device(device_type=device_types[0], device_role=devicerole, name='Device 1', site=site), Device(device_type=device_types[0], role=role, name='Device 1', site=site),
Device(device_type=device_types[1], device_role=devicerole, name='Device 2', site=site), Device(device_type=device_types[1], role=role, name='Device 2', site=site),
Device(device_type=device_types[1], device_role=devicerole, name='Device 3', site=site), Device(device_type=device_types[1], role=role, name='Device 3', site=site),
Device(device_type=device_types[1], device_role=devicerole, name='Device 4', site=site), Device(device_type=device_types[1], role=role, name='Device 4', site=site),
) )
Device.objects.bulk_create(devices) Device.objects.bulk_create(devices)
@ -1822,8 +1822,8 @@ class InventoryItemTest(APIViewTestCases.APIViewTestCase):
manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1') manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1', slug='device-type-1') devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1', slug='device-type-1')
site = Site.objects.create(name='Site 1', slug='site-1') site = Site.objects.create(name='Site 1', slug='site-1')
devicerole = DeviceRole.objects.create(name='Test Device Role 1', slug='test-device-role-1', color='ff0000') role = DeviceRole.objects.create(name='Test Device Role 1', slug='test-device-role-1', color='ff0000')
device = Device.objects.create(device_type=devicetype, device_role=devicerole, name='Device 1', site=site) device = Device.objects.create(device_type=devicetype, role=role, name='Device 1', site=site)
roles = ( roles = (
InventoryItemRole(name='Inventory Item Role 1', slug='inventory-item-role-1'), InventoryItemRole(name='Inventory Item Role 1', slug='inventory-item-role-1'),
@ -1932,11 +1932,11 @@ class CableTest(APIViewTestCases.APIViewTestCase):
site = Site.objects.create(name='Site 1', slug='site-1') site = Site.objects.create(name='Site 1', slug='site-1')
manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1') manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1')
devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1', slug='device-type-1') devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1', slug='device-type-1')
devicerole = DeviceRole.objects.create(name='Device Role 1', slug='device-role-1', color='ff0000') role = DeviceRole.objects.create(name='Device Role 1', slug='device-role-1', color='ff0000')
devices = ( devices = (
Device(device_type=devicetype, device_role=devicerole, name='Device 1', site=site), Device(device_type=devicetype, role=role, name='Device 1', site=site),
Device(device_type=devicetype, device_role=devicerole, name='Device 2', site=site), Device(device_type=devicetype, role=role, name='Device 2', site=site),
) )
Device.objects.bulk_create(devices) Device.objects.bulk_create(devices)
@ -1998,10 +1998,10 @@ class ConnectedDeviceTest(APITestCase):
site = Site.objects.create(name='Site 1', slug='site-1') site = Site.objects.create(name='Site 1', slug='site-1')
manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1') manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1')
devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1', slug='device-type-1') devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1', slug='device-type-1')
devicerole = DeviceRole.objects.create(name='Device Role 1', slug='device-role-1', color='ff0000') role = DeviceRole.objects.create(name='Device Role 1', slug='device-role-1', color='ff0000')
devices = ( devices = (
Device(device_type=devicetype, device_role=devicerole, name='TestDevice1', site=site), Device(device_type=devicetype, role=role, name='TestDevice1', site=site),
Device(device_type=devicetype, device_role=devicerole, name='TestDevice2', site=site), Device(device_type=devicetype, role=role, name='TestDevice2', site=site),
) )
Device.objects.bulk_create(devices) Device.objects.bulk_create(devices)
interfaces = ( interfaces = (
@ -2037,21 +2037,21 @@ class VirtualChassisTest(APIViewTestCases.APIViewTestCase):
site = Site.objects.create(name='Test Site', slug='test-site') site = Site.objects.create(name='Test Site', slug='test-site')
manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1') manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1')
devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type', slug='device-type') devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type', slug='device-type')
devicerole = DeviceRole.objects.create(name='Device Role', slug='device-role', color='ff0000') role = DeviceRole.objects.create(name='Device Role', slug='device-role', color='ff0000')
devices = ( devices = (
Device(name='Device 1', device_type=devicetype, device_role=devicerole, site=site), Device(name='Device 1', device_type=devicetype, role=role, site=site),
Device(name='Device 2', device_type=devicetype, device_role=devicerole, site=site), Device(name='Device 2', device_type=devicetype, role=role, site=site),
Device(name='Device 3', device_type=devicetype, device_role=devicerole, site=site), Device(name='Device 3', device_type=devicetype, role=role, site=site),
Device(name='Device 4', device_type=devicetype, device_role=devicerole, site=site), Device(name='Device 4', device_type=devicetype, role=role, site=site),
Device(name='Device 5', device_type=devicetype, device_role=devicerole, site=site), Device(name='Device 5', device_type=devicetype, role=role, site=site),
Device(name='Device 6', device_type=devicetype, device_role=devicerole, site=site), Device(name='Device 6', device_type=devicetype, role=role, site=site),
Device(name='Device 7', device_type=devicetype, device_role=devicerole, site=site), Device(name='Device 7', device_type=devicetype, role=role, site=site),
Device(name='Device 8', device_type=devicetype, device_role=devicerole, site=site), Device(name='Device 8', device_type=devicetype, role=role, site=site),
Device(name='Device 9', device_type=devicetype, device_role=devicerole, site=site), Device(name='Device 9', device_type=devicetype, role=role, site=site),
Device(name='Device 10', device_type=devicetype, device_role=devicerole, site=site), Device(name='Device 10', device_type=devicetype, role=role, site=site),
Device(name='Device 11', device_type=devicetype, device_role=devicerole, site=site), Device(name='Device 11', device_type=devicetype, role=role, site=site),
Device(name='Device 12', device_type=devicetype, device_role=devicerole, site=site), Device(name='Device 12', device_type=devicetype, role=role, site=site),
) )
Device.objects.bulk_create(devices) Device.objects.bulk_create(devices)
@ -2225,12 +2225,12 @@ class VirtualDeviceContextTest(APIViewTestCases.APIViewTestCase):
site = Site.objects.create(name='Test Site', slug='test-site') site = Site.objects.create(name='Test Site', slug='test-site')
manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1') manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1')
devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type', slug='device-type') devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type', slug='device-type')
devicerole = DeviceRole.objects.create(name='Device Role', slug='device-role', color='ff0000') role = DeviceRole.objects.create(name='Device Role', slug='device-role', color='ff0000')
devices = ( devices = (
Device(name='Device 1', device_type=devicetype, device_role=devicerole, site=site), Device(name='Device 1', device_type=devicetype, role=role, site=site),
Device(name='Device 2', device_type=devicetype, device_role=devicerole, site=site), Device(name='Device 2', device_type=devicetype, role=role, site=site),
Device(name='Device 3', device_type=devicetype, device_role=devicerole, site=site), Device(name='Device 3', device_type=devicetype, role=role, site=site),
) )
Device.objects.bulk_create(devices) Device.objects.bulk_create(devices)

View File

@ -24,8 +24,8 @@ class CablePathTestCase(TestCase):
manufacturer = Manufacturer.objects.create(name='Generic', slug='generic') manufacturer = Manufacturer.objects.create(name='Generic', slug='generic')
device_type = DeviceType.objects.create(manufacturer=manufacturer, model='Test Device') device_type = DeviceType.objects.create(manufacturer=manufacturer, model='Test Device')
device_role = DeviceRole.objects.create(name='Device Role', slug='device-role') role = DeviceRole.objects.create(name='Device Role', slug='device-role')
cls.device = Device.objects.create(site=cls.site, device_type=device_type, device_role=device_role, name='Test Device') cls.device = Device.objects.create(site=cls.site, device_type=device_type, role=role, name='Test Device')
cls.powerpanel = PowerPanel.objects.create(site=cls.site, name='Power Panel') cls.powerpanel = PowerPanel.objects.create(site=cls.site, name='Power Panel')

View File

@ -24,11 +24,11 @@ class DeviceComponentFilterSetTests:
params = {'device_type': [device_types[0].model, device_types[1].model]} params = {'device_type': [device_types[0].model, device_types[1].model]}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
def test_device_role(self): def test_role(self):
device_role = DeviceRole.objects.all()[:2] role = DeviceRole.objects.all()[:2]
params = {'device_role_id': [device_role[0].pk, device_role[1].pk]} params = {'role_id': [role[0].pk, role[1].pk]}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
params = {'device_role': [device_role[0].slug, device_role[1].slug]} params = {'role': [role[0].slug, role[1].slug]}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@ -1473,12 +1473,12 @@ class DeviceRoleTestCase(TestCase, ChangeLoggedFilterSetTests):
@classmethod @classmethod
def setUpTestData(cls): def setUpTestData(cls):
device_roles = ( roles = (
DeviceRole(name='Device Role 1', slug='device-role-1', color='ff0000', vm_role=True, description='foobar1'), DeviceRole(name='Device Role 1', slug='device-role-1', color='ff0000', vm_role=True, description='foobar1'),
DeviceRole(name='Device Role 2', slug='device-role-2', color='00ff00', vm_role=True, description='foobar2'), DeviceRole(name='Device Role 2', slug='device-role-2', color='00ff00', vm_role=True, description='foobar2'),
DeviceRole(name='Device Role 3', slug='device-role-3', color='0000ff', vm_role=False), DeviceRole(name='Device Role 3', slug='device-role-3', color='0000ff', vm_role=False),
) )
DeviceRole.objects.bulk_create(device_roles) DeviceRole.objects.bulk_create(roles)
def test_name(self): def test_name(self):
params = {'name': ['Device Role 1', 'Device Role 2']} params = {'name': ['Device Role 1', 'Device Role 2']}
@ -1565,12 +1565,12 @@ class DeviceTestCase(TestCase, ChangeLoggedFilterSetTests):
) )
DeviceType.objects.bulk_create(device_types) DeviceType.objects.bulk_create(device_types)
device_roles = ( roles = (
DeviceRole(name='Device Role 1', slug='device-role-1'), DeviceRole(name='Device Role 1', slug='device-role-1'),
DeviceRole(name='Device Role 2', slug='device-role-2'), DeviceRole(name='Device Role 2', slug='device-role-2'),
DeviceRole(name='Device Role 3', slug='device-role-3'), DeviceRole(name='Device Role 3', slug='device-role-3'),
) )
DeviceRole.objects.bulk_create(device_roles) DeviceRole.objects.bulk_create(roles)
platforms = ( platforms = (
Platform(name='Platform 1', slug='platform-1'), Platform(name='Platform 1', slug='platform-1'),
@ -1641,9 +1641,9 @@ class DeviceTestCase(TestCase, ChangeLoggedFilterSetTests):
Tenant.objects.bulk_create(tenants) Tenant.objects.bulk_create(tenants)
devices = ( devices = (
Device(name='Device 1', device_type=device_types[0], device_role=device_roles[0], platform=platforms[0], tenant=tenants[0], serial='ABC', asset_tag='1001', site=sites[0], location=locations[0], rack=racks[0], position=1, face=DeviceFaceChoices.FACE_FRONT, latitude=10, longitude=10, status=DeviceStatusChoices.STATUS_ACTIVE, cluster=clusters[0], local_context_data={"foo": 123}), Device(name='Device 1', device_type=device_types[0], role=roles[0], platform=platforms[0], tenant=tenants[0], serial='ABC', asset_tag='1001', site=sites[0], location=locations[0], rack=racks[0], position=1, face=DeviceFaceChoices.FACE_FRONT, latitude=10, longitude=10, status=DeviceStatusChoices.STATUS_ACTIVE, cluster=clusters[0], local_context_data={"foo": 123}),
Device(name='Device 2', device_type=device_types[1], device_role=device_roles[1], platform=platforms[1], tenant=tenants[1], serial='DEF', asset_tag='1002', site=sites[1], location=locations[1], rack=racks[1], position=2, face=DeviceFaceChoices.FACE_FRONT, latitude=20, longitude=20, status=DeviceStatusChoices.STATUS_STAGED, airflow=DeviceAirflowChoices.AIRFLOW_FRONT_TO_REAR, cluster=clusters[1]), Device(name='Device 2', device_type=device_types[1], role=roles[1], platform=platforms[1], tenant=tenants[1], serial='DEF', asset_tag='1002', site=sites[1], location=locations[1], rack=racks[1], position=2, face=DeviceFaceChoices.FACE_FRONT, latitude=20, longitude=20, status=DeviceStatusChoices.STATUS_STAGED, airflow=DeviceAirflowChoices.AIRFLOW_FRONT_TO_REAR, cluster=clusters[1]),
Device(name='Device 3', device_type=device_types[2], device_role=device_roles[2], platform=platforms[2], tenant=tenants[2], serial='GHI', asset_tag='1003', site=sites[2], location=locations[2], rack=racks[2], position=3, face=DeviceFaceChoices.FACE_REAR, latitude=30, longitude=30, status=DeviceStatusChoices.STATUS_FAILED, airflow=DeviceAirflowChoices.AIRFLOW_REAR_TO_FRONT, cluster=clusters[2]), Device(name='Device 3', device_type=device_types[2], role=roles[2], platform=platforms[2], tenant=tenants[2], serial='GHI', asset_tag='1003', site=sites[2], location=locations[2], rack=racks[2], position=3, face=DeviceFaceChoices.FACE_REAR, latitude=30, longitude=30, status=DeviceStatusChoices.STATUS_FAILED, airflow=DeviceAirflowChoices.AIRFLOW_REAR_TO_FRONT, cluster=clusters[2]),
) )
Device.objects.bulk_create(devices) Device.objects.bulk_create(devices)
@ -1755,10 +1755,10 @@ class DeviceTestCase(TestCase, ChangeLoggedFilterSetTests):
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
def test_devicerole(self): def test_devicerole(self):
device_roles = DeviceRole.objects.all()[:2] roles = DeviceRole.objects.all()[:2]
params = {'role_id': [device_roles[0].pk, device_roles[1].pk]} params = {'role_id': [roles[0].pk, roles[1].pk]}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
params = {'role': [device_roles[0].slug, device_roles[1].slug]} params = {'role': [roles[0].slug, roles[1].slug]}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
def test_platform(self): def test_platform(self):
@ -2062,12 +2062,12 @@ class ConsolePortTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedF
module_type = ModuleType.objects.create(manufacturer=manufacturer, model='Module Type 1') module_type = ModuleType.objects.create(manufacturer=manufacturer, model='Module Type 1')
device_roles = ( roles = (
DeviceRole(name='Device Role 1', slug='device-role-1'), DeviceRole(name='Device Role 1', slug='device-role-1'),
DeviceRole(name='Device Role 2', slug='device-role-2'), DeviceRole(name='Device Role 2', slug='device-role-2'),
DeviceRole(name='Device Role 3', slug='device-role-3'), DeviceRole(name='Device Role 3', slug='device-role-3'),
) )
DeviceRole.objects.bulk_create(device_roles) DeviceRole.objects.bulk_create(roles)
locations = ( locations = (
Location(name='Location 1', slug='location-1', site=sites[0]), Location(name='Location 1', slug='location-1', site=sites[0]),
@ -2085,10 +2085,10 @@ class ConsolePortTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedF
Rack.objects.bulk_create(racks) Rack.objects.bulk_create(racks)
devices = ( devices = (
Device(name='Device 1', device_type=device_types[0], device_role=device_roles[0], site=sites[0], location=locations[0], rack=racks[0]), Device(name='Device 1', device_type=device_types[0], role=roles[0], site=sites[0], location=locations[0], rack=racks[0]),
Device(name='Device 2', device_type=device_types[1], device_role=device_roles[1], site=sites[1], location=locations[1], rack=racks[1]), Device(name='Device 2', device_type=device_types[1], role=roles[1], site=sites[1], location=locations[1], rack=racks[1]),
Device(name='Device 3', device_type=device_types[2], device_role=device_roles[2], site=sites[2], location=locations[2], rack=racks[2]), Device(name='Device 3', device_type=device_types[2], role=roles[2], site=sites[2], location=locations[2], rack=racks[2]),
Device(name=None, device_type=device_types[0], device_role=device_roles[0], site=sites[3]), # For cable connections Device(name=None, device_type=device_types[0], role=roles[0], site=sites[3]), # For cable connections
) )
Device.objects.bulk_create(devices) Device.objects.bulk_create(devices)
@ -2242,12 +2242,12 @@ class ConsoleServerPortTestCase(TestCase, DeviceComponentFilterSetTests, ChangeL
module_type = ModuleType.objects.create(manufacturer=manufacturer, model='Module Type 1') module_type = ModuleType.objects.create(manufacturer=manufacturer, model='Module Type 1')
device_roles = ( roles = (
DeviceRole(name='Device Role 1', slug='device-role-1'), DeviceRole(name='Device Role 1', slug='device-role-1'),
DeviceRole(name='Device Role 2', slug='device-role-2'), DeviceRole(name='Device Role 2', slug='device-role-2'),
DeviceRole(name='Device Role 3', slug='device-role-3'), DeviceRole(name='Device Role 3', slug='device-role-3'),
) )
DeviceRole.objects.bulk_create(device_roles) DeviceRole.objects.bulk_create(roles)
locations = ( locations = (
Location(name='Location 1', slug='location-1', site=sites[0]), Location(name='Location 1', slug='location-1', site=sites[0]),
@ -2265,10 +2265,10 @@ class ConsoleServerPortTestCase(TestCase, DeviceComponentFilterSetTests, ChangeL
Rack.objects.bulk_create(racks) Rack.objects.bulk_create(racks)
devices = ( devices = (
Device(name='Device 1', device_type=device_types[0], device_role=device_roles[0], site=sites[0], location=locations[0], rack=racks[0]), Device(name='Device 1', device_type=device_types[0], role=roles[0], site=sites[0], location=locations[0], rack=racks[0]),
Device(name='Device 2', device_type=device_types[1], device_role=device_roles[1], site=sites[1], location=locations[1], rack=racks[1]), Device(name='Device 2', device_type=device_types[1], role=roles[1], site=sites[1], location=locations[1], rack=racks[1]),
Device(name='Device 3', device_type=device_types[2], device_role=device_roles[2], site=sites[2], location=locations[2], rack=racks[2]), Device(name='Device 3', device_type=device_types[2], role=roles[2], site=sites[2], location=locations[2], rack=racks[2]),
Device(name=None, device_type=device_types[2], device_role=device_roles[2], site=sites[3]), # For cable connections Device(name=None, device_type=device_types[2], role=roles[2], site=sites[3]), # For cable connections
) )
Device.objects.bulk_create(devices) Device.objects.bulk_create(devices)
@ -2422,12 +2422,12 @@ class PowerPortTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil
module_type = ModuleType.objects.create(manufacturer=manufacturer, model='Module Type 1') module_type = ModuleType.objects.create(manufacturer=manufacturer, model='Module Type 1')
device_roles = ( roles = (
DeviceRole(name='Device Role 1', slug='device-role-1'), DeviceRole(name='Device Role 1', slug='device-role-1'),
DeviceRole(name='Device Role 2', slug='device-role-2'), DeviceRole(name='Device Role 2', slug='device-role-2'),
DeviceRole(name='Device Role 3', slug='device-role-3'), DeviceRole(name='Device Role 3', slug='device-role-3'),
) )
DeviceRole.objects.bulk_create(device_roles) DeviceRole.objects.bulk_create(roles)
locations = ( locations = (
Location(name='Location 1', slug='location-1', site=sites[0]), Location(name='Location 1', slug='location-1', site=sites[0]),
@ -2445,10 +2445,10 @@ class PowerPortTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil
Rack.objects.bulk_create(racks) Rack.objects.bulk_create(racks)
devices = ( devices = (
Device(name='Device 1', device_type=device_types[0], device_role=device_roles[0], site=sites[0], location=locations[0], rack=racks[0]), Device(name='Device 1', device_type=device_types[0], role=roles[0], site=sites[0], location=locations[0], rack=racks[0]),
Device(name='Device 2', device_type=device_types[1], device_role=device_roles[1], site=sites[1], location=locations[1], rack=racks[1]), Device(name='Device 2', device_type=device_types[1], role=roles[1], site=sites[1], location=locations[1], rack=racks[1]),
Device(name='Device 3', device_type=device_types[2], device_role=device_roles[2], site=sites[2], location=locations[2], rack=racks[2]), Device(name='Device 3', device_type=device_types[2], role=roles[2], site=sites[2], location=locations[2], rack=racks[2]),
Device(name=None, device_type=device_types[2], device_role=device_roles[2], site=sites[3]), # For cable connections Device(name=None, device_type=device_types[2], role=roles[2], site=sites[3]), # For cable connections
) )
Device.objects.bulk_create(devices) Device.objects.bulk_create(devices)
@ -2610,12 +2610,12 @@ class PowerOutletTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedF
module_type = ModuleType.objects.create(manufacturer=manufacturer, model='Module Type 1') module_type = ModuleType.objects.create(manufacturer=manufacturer, model='Module Type 1')
device_roles = ( roles = (
DeviceRole(name='Device Role 1', slug='device-role-1'), DeviceRole(name='Device Role 1', slug='device-role-1'),
DeviceRole(name='Device Role 2', slug='device-role-2'), DeviceRole(name='Device Role 2', slug='device-role-2'),
DeviceRole(name='Device Role 3', slug='device-role-3'), DeviceRole(name='Device Role 3', slug='device-role-3'),
) )
DeviceRole.objects.bulk_create(device_roles) DeviceRole.objects.bulk_create(roles)
locations = ( locations = (
Location(name='Location 1', slug='location-1', site=sites[0]), Location(name='Location 1', slug='location-1', site=sites[0]),
@ -2633,10 +2633,10 @@ class PowerOutletTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedF
Rack.objects.bulk_create(racks) Rack.objects.bulk_create(racks)
devices = ( devices = (
Device(name='Device 1', device_type=device_types[0], device_role=device_roles[0], site=sites[0], location=locations[0], rack=racks[0]), Device(name='Device 1', device_type=device_types[0], role=roles[0], site=sites[0], location=locations[0], rack=racks[0]),
Device(name='Device 2', device_type=device_types[1], device_role=device_roles[1], site=sites[1], location=locations[1], rack=racks[1]), Device(name='Device 2', device_type=device_types[1], role=roles[1], site=sites[1], location=locations[1], rack=racks[1]),
Device(name='Device 3', device_type=device_types[2], device_role=device_roles[2], site=sites[2], location=locations[2], rack=racks[2]), Device(name='Device 3', device_type=device_types[2], role=roles[2], site=sites[2], location=locations[2], rack=racks[2]),
Device(name=None, device_type=device_types[2], device_role=device_roles[2], site=sites[3]), # For cable connections Device(name=None, device_type=device_types[2], role=roles[2], site=sites[3]), # For cable connections
) )
Device.objects.bulk_create(devices) Device.objects.bulk_create(devices)
@ -2794,12 +2794,12 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil
module_type = ModuleType.objects.create(manufacturer=manufacturer, model='Module Type 1') module_type = ModuleType.objects.create(manufacturer=manufacturer, model='Module Type 1')
device_roles = ( roles = (
DeviceRole(name='Device Role 1', slug='device-role-1'), DeviceRole(name='Device Role 1', slug='device-role-1'),
DeviceRole(name='Device Role 2', slug='device-role-2'), DeviceRole(name='Device Role 2', slug='device-role-2'),
DeviceRole(name='Device Role 3', slug='device-role-3'), DeviceRole(name='Device Role 3', slug='device-role-3'),
) )
DeviceRole.objects.bulk_create(device_roles) DeviceRole.objects.bulk_create(roles)
locations = ( locations = (
Location(name='Location 1', slug='location-1', site=sites[0]), Location(name='Location 1', slug='location-1', site=sites[0]),
@ -2817,10 +2817,10 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil
Rack.objects.bulk_create(racks) Rack.objects.bulk_create(racks)
devices = ( devices = (
Device(name='Device 1', device_type=device_types[0], device_role=device_roles[0], site=sites[0], location=locations[0], rack=racks[0]), Device(name='Device 1', device_type=device_types[0], role=roles[0], site=sites[0], location=locations[0], rack=racks[0]),
Device(name='Device 2', device_type=device_types[1], device_role=device_roles[1], site=sites[1], location=locations[1], rack=racks[1]), Device(name='Device 2', device_type=device_types[1], role=roles[1], site=sites[1], location=locations[1], rack=racks[1]),
Device(name='Device 3', device_type=device_types[2], device_role=device_roles[2], site=sites[2], location=locations[2], rack=racks[2]), Device(name='Device 3', device_type=device_types[2], role=roles[2], site=sites[2], location=locations[2], rack=racks[2]),
Device(name=None, device_type=device_types[2], device_role=device_roles[2], site=sites[3]), # For cable connections Device(name=None, device_type=device_types[2], role=roles[2], site=sites[3]), # For cable connections
) )
Device.objects.bulk_create(devices) Device.objects.bulk_create(devices)
@ -3230,12 +3230,12 @@ class FrontPortTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil
module_type = ModuleType.objects.create(manufacturer=manufacturer, model='Module Type 1') module_type = ModuleType.objects.create(manufacturer=manufacturer, model='Module Type 1')
device_roles = ( roles = (
DeviceRole(name='Device Role 1', slug='device-role-1'), DeviceRole(name='Device Role 1', slug='device-role-1'),
DeviceRole(name='Device Role 2', slug='device-role-2'), DeviceRole(name='Device Role 2', slug='device-role-2'),
DeviceRole(name='Device Role 3', slug='device-role-3'), DeviceRole(name='Device Role 3', slug='device-role-3'),
) )
DeviceRole.objects.bulk_create(device_roles) DeviceRole.objects.bulk_create(roles)
locations = ( locations = (
Location(name='Location 1', slug='location-1', site=sites[0]), Location(name='Location 1', slug='location-1', site=sites[0]),
@ -3253,10 +3253,10 @@ class FrontPortTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil
Rack.objects.bulk_create(racks) Rack.objects.bulk_create(racks)
devices = ( devices = (
Device(name='Device 1', device_type=device_types[0], device_role=device_roles[0], site=sites[0], location=locations[0], rack=racks[0]), Device(name='Device 1', device_type=device_types[0], role=roles[0], site=sites[0], location=locations[0], rack=racks[0]),
Device(name='Device 2', device_type=device_types[1], device_role=device_roles[1], site=sites[1], location=locations[1], rack=racks[1]), Device(name='Device 2', device_type=device_types[1], role=roles[1], site=sites[1], location=locations[1], rack=racks[1]),
Device(name='Device 3', device_type=device_types[2], device_role=device_roles[2], site=sites[2], location=locations[2], rack=racks[2]), Device(name='Device 3', device_type=device_types[2], role=roles[2], site=sites[2], location=locations[2], rack=racks[2]),
Device(name=None, device_type=device_types[2], device_role=device_roles[2], site=sites[3]), # For cable connections Device(name=None, device_type=device_types[2], role=roles[2], site=sites[3]), # For cable connections
) )
Device.objects.bulk_create(devices) Device.objects.bulk_create(devices)
@ -3419,12 +3419,12 @@ class RearPortTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFilt
module_type = ModuleType.objects.create(manufacturer=manufacturer, model='Module Type 1') module_type = ModuleType.objects.create(manufacturer=manufacturer, model='Module Type 1')
device_roles = ( roles = (
DeviceRole(name='Device Role 1', slug='device-role-1'), DeviceRole(name='Device Role 1', slug='device-role-1'),
DeviceRole(name='Device Role 2', slug='device-role-2'), DeviceRole(name='Device Role 2', slug='device-role-2'),
DeviceRole(name='Device Role 3', slug='device-role-3'), DeviceRole(name='Device Role 3', slug='device-role-3'),
) )
DeviceRole.objects.bulk_create(device_roles) DeviceRole.objects.bulk_create(roles)
locations = ( locations = (
Location(name='Location 1', slug='location-1', site=sites[0]), Location(name='Location 1', slug='location-1', site=sites[0]),
@ -3442,10 +3442,10 @@ class RearPortTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFilt
Rack.objects.bulk_create(racks) Rack.objects.bulk_create(racks)
devices = ( devices = (
Device(name='Device 1', device_type=device_types[0], device_role=device_roles[0], site=sites[0], location=locations[0], rack=racks[0]), Device(name='Device 1', device_type=device_types[0], role=roles[0], site=sites[0], location=locations[0], rack=racks[0]),
Device(name='Device 2', device_type=device_types[1], device_role=device_roles[1], site=sites[1], location=locations[1], rack=racks[1]), Device(name='Device 2', device_type=device_types[1], role=roles[1], site=sites[1], location=locations[1], rack=racks[1]),
Device(name='Device 3', device_type=device_types[2], device_role=device_roles[2], site=sites[2], location=locations[2], rack=racks[2]), Device(name='Device 3', device_type=device_types[2], role=roles[2], site=sites[2], location=locations[2], rack=racks[2]),
Device(name=None, device_type=device_types[2], device_role=device_roles[2], site=sites[3]), # For cable connections Device(name=None, device_type=device_types[2], role=roles[2], site=sites[3]), # For cable connections
) )
Device.objects.bulk_create(devices) Device.objects.bulk_create(devices)
@ -3600,12 +3600,12 @@ class ModuleBayTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil
) )
DeviceType.objects.bulk_create(device_types) DeviceType.objects.bulk_create(device_types)
device_roles = ( roles = (
DeviceRole(name='Device Role 1', slug='device-role-1'), DeviceRole(name='Device Role 1', slug='device-role-1'),
DeviceRole(name='Device Role 2', slug='device-role-2'), DeviceRole(name='Device Role 2', slug='device-role-2'),
DeviceRole(name='Device Role 3', slug='device-role-3'), DeviceRole(name='Device Role 3', slug='device-role-3'),
) )
DeviceRole.objects.bulk_create(device_roles) DeviceRole.objects.bulk_create(roles)
locations = ( locations = (
Location(name='Location 1', slug='location-1', site=sites[0]), Location(name='Location 1', slug='location-1', site=sites[0]),
@ -3623,9 +3623,9 @@ class ModuleBayTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil
Rack.objects.bulk_create(racks) Rack.objects.bulk_create(racks)
devices = ( devices = (
Device(name='Device 1', device_type=device_types[0], device_role=device_roles[0], site=sites[0], location=locations[0], rack=racks[0]), Device(name='Device 1', device_type=device_types[0], role=roles[0], site=sites[0], location=locations[0], rack=racks[0]),
Device(name='Device 2', device_type=device_types[1], device_role=device_roles[1], site=sites[1], location=locations[1], rack=racks[1]), Device(name='Device 2', device_type=device_types[1], role=roles[1], site=sites[1], location=locations[1], rack=racks[1]),
Device(name='Device 3', device_type=device_types[2], device_role=device_roles[2], site=sites[2], location=locations[2], rack=racks[2]), Device(name='Device 3', device_type=device_types[2], role=roles[2], site=sites[2], location=locations[2], rack=racks[2]),
) )
Device.objects.bulk_create(devices) Device.objects.bulk_create(devices)
@ -3729,12 +3729,12 @@ class DeviceBayTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil
) )
DeviceType.objects.bulk_create(device_types) DeviceType.objects.bulk_create(device_types)
device_roles = ( roles = (
DeviceRole(name='Device Role 1', slug='device-role-1'), DeviceRole(name='Device Role 1', slug='device-role-1'),
DeviceRole(name='Device Role 2', slug='device-role-2'), DeviceRole(name='Device Role 2', slug='device-role-2'),
DeviceRole(name='Device Role 3', slug='device-role-3'), DeviceRole(name='Device Role 3', slug='device-role-3'),
) )
DeviceRole.objects.bulk_create(device_roles) DeviceRole.objects.bulk_create(roles)
locations = ( locations = (
Location(name='Location 1', slug='location-1', site=sites[0]), Location(name='Location 1', slug='location-1', site=sites[0]),
@ -3752,9 +3752,9 @@ class DeviceBayTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil
Rack.objects.bulk_create(racks) Rack.objects.bulk_create(racks)
devices = ( devices = (
Device(name='Device 1', device_type=device_types[0], device_role=device_roles[0], site=sites[0], location=locations[0], rack=racks[0]), Device(name='Device 1', device_type=device_types[0], role=roles[0], site=sites[0], location=locations[0], rack=racks[0]),
Device(name='Device 2', device_type=device_types[1], device_role=device_roles[1], site=sites[1], location=locations[1], rack=racks[1]), Device(name='Device 2', device_type=device_types[1], role=roles[1], site=sites[1], location=locations[1], rack=racks[1]),
Device(name='Device 3', device_type=device_types[2], device_role=device_roles[2], site=sites[2], location=locations[2], rack=racks[2]), Device(name='Device 3', device_type=device_types[2], role=roles[2], site=sites[2], location=locations[2], rack=racks[2]),
) )
Device.objects.bulk_create(devices) Device.objects.bulk_create(devices)
@ -3840,12 +3840,12 @@ class InventoryItemTestCase(TestCase, ChangeLoggedFilterSetTests):
) )
DeviceType.objects.bulk_create(device_types) DeviceType.objects.bulk_create(device_types)
device_roles = ( roles = (
DeviceRole(name='Device Role 1', slug='device-role-1'), DeviceRole(name='Device Role 1', slug='device-role-1'),
DeviceRole(name='Device Role 2', slug='device-role-2'), DeviceRole(name='Device Role 2', slug='device-role-2'),
DeviceRole(name='Device Role 3', slug='device-role-3'), DeviceRole(name='Device Role 3', slug='device-role-3'),
) )
DeviceRole.objects.bulk_create(device_roles) DeviceRole.objects.bulk_create(roles)
regions = ( regions = (
Region(name='Region 1', slug='region-1'), Region(name='Region 1', slug='region-1'),
@ -3886,9 +3886,9 @@ class InventoryItemTestCase(TestCase, ChangeLoggedFilterSetTests):
Rack.objects.bulk_create(racks) Rack.objects.bulk_create(racks)
devices = ( devices = (
Device(name='Device 1', device_type=device_types[0], device_role=device_roles[0], site=sites[0], location=locations[0], rack=racks[0]), Device(name='Device 1', device_type=device_types[0], role=roles[0], site=sites[0], location=locations[0], rack=racks[0]),
Device(name='Device 2', device_type=device_types[1], device_role=device_roles[1], site=sites[1], location=locations[1], rack=racks[1]), Device(name='Device 2', device_type=device_types[1], role=roles[1], site=sites[1], location=locations[1], rack=racks[1]),
Device(name='Device 3', device_type=device_types[2], device_role=device_roles[2], site=sites[2], location=locations[2], rack=racks[2]), Device(name='Device 3', device_type=device_types[2], role=roles[2], site=sites[2], location=locations[2], rack=racks[2]),
) )
Device.objects.bulk_create(devices) Device.objects.bulk_create(devices)
@ -3986,11 +3986,11 @@ class InventoryItemTestCase(TestCase, ChangeLoggedFilterSetTests):
params = {'device_type': [device_types[0].model, device_types[1].model]} params = {'device_type': [device_types[0].model, device_types[1].model]}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
def test_device_role(self): def test_role(self):
device_role = DeviceRole.objects.all()[:2] role = DeviceRole.objects.all()[:2]
params = {'device_role_id': [device_role[0].pk, device_role[1].pk]} params = {'role_id': [role[0].pk, role[1].pk]}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
params = {'device_role': [device_role[0].slug, device_role[1].slug]} params = {'role': [role[0].slug, role[1].slug]}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
def test_device(self): def test_device(self):
@ -4066,7 +4066,7 @@ class VirtualChassisTestCase(TestCase, ChangeLoggedFilterSetTests):
manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1') manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1')
device_type = DeviceType.objects.create(manufacturer=manufacturer, model='Model 1', slug='model-1') device_type = DeviceType.objects.create(manufacturer=manufacturer, model='Model 1', slug='model-1')
device_role = DeviceRole.objects.create(name='Device Role 1', slug='device-role-1') role = DeviceRole.objects.create(name='Device Role 1', slug='device-role-1')
regions = ( regions = (
Region(name='Region 1', slug='region-1'), Region(name='Region 1', slug='region-1'),
@ -4092,12 +4092,12 @@ class VirtualChassisTestCase(TestCase, ChangeLoggedFilterSetTests):
Site.objects.bulk_create(sites) Site.objects.bulk_create(sites)
devices = ( devices = (
Device(name='Device 1', device_type=device_type, device_role=device_role, site=sites[0], vc_position=1), Device(name='Device 1', device_type=device_type, role=role, site=sites[0], vc_position=1),
Device(name='Device 2', device_type=device_type, device_role=device_role, site=sites[0], vc_position=2), Device(name='Device 2', device_type=device_type, role=role, site=sites[0], vc_position=2),
Device(name='Device 3', device_type=device_type, device_role=device_role, site=sites[1], vc_position=1), Device(name='Device 3', device_type=device_type, role=role, site=sites[1], vc_position=1),
Device(name='Device 4', device_type=device_type, device_role=device_role, site=sites[1], vc_position=2), Device(name='Device 4', device_type=device_type, role=role, site=sites[1], vc_position=2),
Device(name='Device 5', device_type=device_type, device_role=device_role, site=sites[2], vc_position=1), Device(name='Device 5', device_type=device_type, role=role, site=sites[2], vc_position=1),
Device(name='Device 6', device_type=device_type, device_role=device_role, site=sites[2], vc_position=2), Device(name='Device 6', device_type=device_type, role=role, site=sites[2], vc_position=2),
) )
Device.objects.bulk_create(devices) Device.objects.bulk_create(devices)
@ -4187,15 +4187,15 @@ class CableTestCase(TestCase, ChangeLoggedFilterSetTests):
manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1') manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1')
device_type = DeviceType.objects.create(manufacturer=manufacturer, model='Model 1', slug='model-1') device_type = DeviceType.objects.create(manufacturer=manufacturer, model='Model 1', slug='model-1')
device_role = DeviceRole.objects.create(name='Device Role 1', slug='device-role-1') role = DeviceRole.objects.create(name='Device Role 1', slug='device-role-1')
devices = ( devices = (
Device(name='Device 1', device_type=device_type, device_role=device_role, site=sites[0], rack=racks[0], location=locations[0], position=1), Device(name='Device 1', device_type=device_type, role=role, site=sites[0], rack=racks[0], location=locations[0], position=1),
Device(name='Device 2', device_type=device_type, device_role=device_role, site=sites[0], rack=racks[0], location=locations[0], position=2), Device(name='Device 2', device_type=device_type, role=role, site=sites[0], rack=racks[0], location=locations[0], position=2),
Device(name='Device 3', device_type=device_type, device_role=device_role, site=sites[1], rack=racks[1], location=locations[1], position=1), Device(name='Device 3', device_type=device_type, role=role, site=sites[1], rack=racks[1], location=locations[1], position=1),
Device(name='Device 4', device_type=device_type, device_role=device_role, site=sites[1], rack=racks[1], location=locations[1], position=2), Device(name='Device 4', device_type=device_type, role=role, site=sites[1], rack=racks[1], location=locations[1], position=2),
Device(name='Device 5', device_type=device_type, device_role=device_role, site=sites[2], rack=racks[2], location=locations[2], position=1), Device(name='Device 5', device_type=device_type, role=role, site=sites[2], rack=racks[2], location=locations[2], position=1),
Device(name='Device 6', device_type=device_type, device_role=device_role, site=sites[2], rack=racks[2], location=locations[2], position=2), Device(name='Device 6', device_type=device_type, role=role, site=sites[2], rack=racks[2], location=locations[2], position=2),
) )
Device.objects.bulk_create(devices) Device.objects.bulk_create(devices)
@ -4485,8 +4485,8 @@ class PowerFeedTestCase(TestCase, ChangeLoggedFilterSetTests):
manufacturer = Manufacturer.objects.create(name='Manufacturer', slug='manufacturer') manufacturer = Manufacturer.objects.create(name='Manufacturer', slug='manufacturer')
device_type = DeviceType.objects.create(manufacturer=manufacturer, model='Model', slug='model') device_type = DeviceType.objects.create(manufacturer=manufacturer, model='Model', slug='model')
device_role = DeviceRole.objects.create(name='Device Role', slug='device-role') role = DeviceRole.objects.create(name='Device Role', slug='device-role')
device = Device.objects.create(name='Device', device_type=device_type, device_role=device_role, site=sites[0]) device = Device.objects.create(name='Device', device_type=device_type, role=role, site=sites[0])
power_ports = [ power_ports = [
PowerPort(device=device, name='Power Port 1'), PowerPort(device=device, name='Power Port 1'),
PowerPort(device=device, name='Power Port 2'), PowerPort(device=device, name='Power Port 2'),
@ -4608,12 +4608,12 @@ class VirtualDeviceContextTestCase(TestCase, ChangeLoggedFilterSetTests):
manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1') manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1')
device_type = DeviceType.objects.create(manufacturer=manufacturer, model='Model 1', slug='model-1') device_type = DeviceType.objects.create(manufacturer=manufacturer, model='Model 1', slug='model-1')
device_role = DeviceRole.objects.create(name='Device Role 1', slug='device-role-1') role = DeviceRole.objects.create(name='Device Role 1', slug='device-role-1')
devices = ( devices = (
Device(name='Device 1', device_type=device_type, device_role=device_role, site=sites[0]), Device(name='Device 1', device_type=device_type, role=role, site=sites[0]),
Device(name='Device 2', device_type=device_type, device_role=device_role, site=sites[1]), Device(name='Device 2', device_type=device_type, role=role, site=sites[1]),
Device(name='Device 3', device_type=device_type, device_role=device_role, site=sites[2]), Device(name='Device 3', device_type=device_type, role=role, site=sites[2]),
) )
Device.objects.bulk_create(devices) Device.objects.bulk_create(devices)

View File

@ -22,12 +22,12 @@ class DeviceTestCase(TestCase):
device_type = DeviceType.objects.create( device_type = DeviceType.objects.create(
manufacturer=manufacturer, model='Device Type 1', slug='device-type-1', u_height=1 manufacturer=manufacturer, model='Device Type 1', slug='device-type-1', u_height=1
) )
device_role = DeviceRole.objects.create( role = DeviceRole.objects.create(
name='Device Role 1', slug='device-role-1', color='ff0000' name='Device Role 1', slug='device-role-1', color='ff0000'
) )
Platform.objects.create(name='Platform 1', slug='platform-1') Platform.objects.create(name='Platform 1', slug='platform-1')
Device.objects.create( Device.objects.create(
name='Device 1', device_type=device_type, device_role=device_role, site=site, rack=rack, position=1 name='Device 1', device_type=device_type, role=role, site=site, rack=rack, position=1
) )
cluster_type = ClusterType.objects.create(name='Cluster Type 1', slug='cluster-type-1') cluster_type = ClusterType.objects.create(name='Cluster Type 1', slug='cluster-type-1')
cluster_group = ClusterGroup.objects.create(name='Cluster Group 1', slug='cluster-group-1') cluster_group = ClusterGroup.objects.create(name='Cluster Group 1', slug='cluster-group-1')
@ -36,7 +36,7 @@ class DeviceTestCase(TestCase):
def test_racked_device(self): def test_racked_device(self):
form = DeviceForm(data={ form = DeviceForm(data={
'name': 'New Device', 'name': 'New Device',
'device_role': DeviceRole.objects.first().pk, 'role': DeviceRole.objects.first().pk,
'tenant': None, 'tenant': None,
'manufacturer': Manufacturer.objects.first().pk, 'manufacturer': Manufacturer.objects.first().pk,
'device_type': DeviceType.objects.first().pk, 'device_type': DeviceType.objects.first().pk,
@ -53,7 +53,7 @@ class DeviceTestCase(TestCase):
def test_racked_device_occupied(self): def test_racked_device_occupied(self):
form = DeviceForm(data={ form = DeviceForm(data={
'name': 'test', 'name': 'test',
'device_role': DeviceRole.objects.first().pk, 'role': DeviceRole.objects.first().pk,
'tenant': None, 'tenant': None,
'manufacturer': Manufacturer.objects.first().pk, 'manufacturer': Manufacturer.objects.first().pk,
'device_type': DeviceType.objects.first().pk, 'device_type': DeviceType.objects.first().pk,
@ -70,7 +70,7 @@ class DeviceTestCase(TestCase):
def test_non_racked_device(self): def test_non_racked_device(self):
form = DeviceForm(data={ form = DeviceForm(data={
'name': 'New Device', 'name': 'New Device',
'device_role': DeviceRole.objects.first().pk, 'role': DeviceRole.objects.first().pk,
'tenant': None, 'tenant': None,
'manufacturer': Manufacturer.objects.first().pk, 'manufacturer': Manufacturer.objects.first().pk,
'device_type': DeviceType.objects.first().pk, 'device_type': DeviceType.objects.first().pk,
@ -87,7 +87,7 @@ class DeviceTestCase(TestCase):
def test_non_racked_device_with_face(self): def test_non_racked_device_with_face(self):
form = DeviceForm(data={ form = DeviceForm(data={
'name': 'New Device', 'name': 'New Device',
'device_role': DeviceRole.objects.first().pk, 'role': DeviceRole.objects.first().pk,
'tenant': None, 'tenant': None,
'manufacturer': Manufacturer.objects.first().pk, 'manufacturer': Manufacturer.objects.first().pk,
'device_type': DeviceType.objects.first().pk, 'device_type': DeviceType.objects.first().pk,
@ -103,7 +103,7 @@ class DeviceTestCase(TestCase):
def test_non_racked_device_with_position(self): def test_non_racked_device_with_position(self):
form = DeviceForm(data={ form = DeviceForm(data={
'name': 'New Device', 'name': 'New Device',
'device_role': DeviceRole.objects.first().pk, 'role': DeviceRole.objects.first().pk,
'tenant': None, 'tenant': None,
'manufacturer': Manufacturer.objects.first().pk, 'manufacturer': Manufacturer.objects.first().pk,
'device_type': DeviceType.objects.first().pk, 'device_type': DeviceType.objects.first().pk,

View File

@ -25,7 +25,7 @@ class LocationTestCase(TestCase):
device_type = DeviceType.objects.create( device_type = DeviceType.objects.create(
manufacturer=manufacturer, model='Device Type 1', slug='device-type-1' manufacturer=manufacturer, model='Device Type 1', slug='device-type-1'
) )
device_role = DeviceRole.objects.create( role = DeviceRole.objects.create(
name='Device Role 1', slug='device-role-1', color='ff0000' name='Device Role 1', slug='device-role-1', color='ff0000'
) )
@ -45,14 +45,14 @@ class LocationTestCase(TestCase):
location=location_a1, location=location_a1,
name='Device 1', name='Device 1',
device_type=device_type, device_type=device_type,
device_role=device_role role=role
) )
device2 = Device.objects.create( device2 = Device.objects.create(
site=site_a, site=site_a,
location=location_a2, location=location_a2,
name='Device 2', name='Device 2',
device_type=device_type, device_type=device_type,
device_role=device_role role=role
) )
powerpanel1 = PowerPanel.objects.create(site=site_a, location=location_a1, name='Power Panel 1') powerpanel1 = PowerPanel.objects.create(site=site_a, location=location_a1, name='Power Panel 1')
@ -114,7 +114,7 @@ class RackTestCase(TestCase):
device1 = Device( device1 = Device(
name='Device 1', name='Device 1',
device_type=DeviceType.objects.first(), device_type=DeviceType.objects.first(),
device_role=DeviceRole.objects.first(), role=DeviceRole.objects.first(),
site=site, site=site,
rack=rack, rack=rack,
position=43, position=43,
@ -147,7 +147,7 @@ class RackTestCase(TestCase):
device1 = Device( device1 = Device(
name='TestSwitch1', name='TestSwitch1',
device_type=DeviceType.objects.first(), device_type=DeviceType.objects.first(),
device_role=DeviceRole.objects.first(), role=DeviceRole.objects.first(),
site=site, site=site,
rack=rack, rack=rack,
position=10.0, position=10.0,
@ -189,7 +189,7 @@ class RackTestCase(TestCase):
Device( Device(
name='Device 1', name='Device 1',
device_role=DeviceRole.objects.first(), role=DeviceRole.objects.first(),
device_type=DeviceType.objects.first(), device_type=DeviceType.objects.first(),
site=site, site=site,
rack=rack rack=rack
@ -202,7 +202,7 @@ class RackTestCase(TestCase):
rack = Rack.objects.first() rack = Rack.objects.first()
attrs = { attrs = {
'device_type': DeviceType.objects.get(u_height=0.5), 'device_type': DeviceType.objects.get(u_height=0.5),
'device_role': DeviceRole.objects.first(), 'role': DeviceRole.objects.first(),
'site': Site.objects.first(), 'site': Site.objects.first(),
'rack': rack, 'rack': rack,
'face': DeviceFaceChoices.FACE_FRONT, 'face': DeviceFaceChoices.FACE_FRONT,
@ -228,7 +228,7 @@ class RackTestCase(TestCase):
site=site_a, site=site_a,
rack=rack1, rack=rack1,
device_type=DeviceType.objects.first(), device_type=DeviceType.objects.first(),
device_role=DeviceRole.objects.first() role=DeviceRole.objects.first()
) )
# Move Rack1 to Site B # Move Rack1 to Site B
@ -244,14 +244,16 @@ class DeviceTestCase(TestCase):
@classmethod @classmethod
def setUpTestData(cls): def setUpTestData(cls):
site = Site.objects.create(name='Test Site 1', slug='test-site-1') Site.objects.create(name='Test Site 1', slug='test-site-1')
manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1') manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
device_type = DeviceType.objects.create( device_type = DeviceType.objects.create(
manufacturer=manufacturer, model='Test Device Type 1', slug='test-device-type-1' manufacturer=manufacturer, model='Test Device Type 1', slug='test-device-type-1'
) )
device_role = DeviceRole.objects.create( roles = (
name='Test Device Role 1', slug='test-device-role-1', color='ff0000' DeviceRole(name='Test Role 1', slug='test-role-1'),
DeviceRole(name='Test Role 2', slug='test-role-2'),
) )
DeviceRole.objects.bulk_create(roles)
# Create DeviceType components # Create DeviceType components
ConsolePortTemplate( ConsolePortTemplate(
@ -319,7 +321,7 @@ class DeviceTestCase(TestCase):
d = Device( d = Device(
site=Site.objects.first(), site=Site.objects.first(),
device_type=DeviceType.objects.first(), device_type=DeviceType.objects.first(),
device_role=DeviceRole.objects.first(), role=DeviceRole.objects.first(),
name='Test Device 1' name='Test Device 1'
) )
d.save() d.save()
@ -385,7 +387,7 @@ class DeviceTestCase(TestCase):
device1 = Device( device1 = Device(
site=Site.objects.first(), site=Site.objects.first(),
device_type=DeviceType.objects.first(), device_type=DeviceType.objects.first(),
device_role=DeviceRole.objects.first(), role=DeviceRole.objects.first(),
name=None name=None
) )
device1.save() device1.save()
@ -393,7 +395,7 @@ class DeviceTestCase(TestCase):
device2 = Device( device2 = Device(
site=device1.site, site=device1.site,
device_type=device1.device_type, device_type=device1.device_type,
device_role=device1.device_role, role=device1.role,
name=None name=None
) )
device2.full_clean() device2.full_clean()
@ -406,7 +408,7 @@ class DeviceTestCase(TestCase):
device1 = Device( device1 = Device(
site=Site.objects.first(), site=Site.objects.first(),
device_type=DeviceType.objects.first(), device_type=DeviceType.objects.first(),
device_role=DeviceRole.objects.first(), role=DeviceRole.objects.first(),
name='device 1' name='device 1'
) )
device1.save() device1.save()
@ -414,7 +416,7 @@ class DeviceTestCase(TestCase):
device2 = Device( device2 = Device(
site=device1.site, site=device1.site,
device_type=device1.device_type, device_type=device1.device_type,
device_role=device1.device_role, role=device1.role,
name='DEVICE 1' name='DEVICE 1'
) )
@ -427,7 +429,7 @@ class DeviceTestCase(TestCase):
device1 = Device( device1 = Device(
site=Site.objects.first(), site=Site.objects.first(),
device_type=DeviceType.objects.first(), device_type=DeviceType.objects.first(),
device_role=DeviceRole.objects.first(), role=DeviceRole.objects.first(),
name='Test Device 1' name='Test Device 1'
) )
device1.save() device1.save()
@ -435,7 +437,7 @@ class DeviceTestCase(TestCase):
device2 = Device( device2 = Device(
site=device1.site, site=device1.site,
device_type=device1.device_type, device_type=device1.device_type,
device_role=device1.device_role, role=device1.role,
name=device1.name name=device1.name
) )
@ -458,6 +460,30 @@ class DeviceTestCase(TestCase):
device2.full_clean() device2.full_clean()
device2.save() device2.save()
def test_old_device_role_field(self):
"""
Ensure that the old device role field sets the value in the new role field.
"""
# Test getter method
device = Device(
site=Site.objects.first(),
device_type=DeviceType.objects.first(),
role=DeviceRole.objects.first(),
name='Test Device 1',
device_role=DeviceRole.objects.first()
)
device.full_clean()
device.save()
self.assertEqual(device.role, device.device_role)
# Test setter method
device.device_role = DeviceRole.objects.last()
device.full_clean()
device.save()
self.assertEqual(device.role, device.device_role)
class CableTestCase(TestCase): class CableTestCase(TestCase):
@ -469,14 +495,14 @@ class CableTestCase(TestCase):
devicetype = DeviceType.objects.create( devicetype = DeviceType.objects.create(
manufacturer=manufacturer, model='Test Device Type 1', slug='test-device-type-1' manufacturer=manufacturer, model='Test Device Type 1', slug='test-device-type-1'
) )
devicerole = DeviceRole.objects.create( role = DeviceRole.objects.create(
name='Test Device Role 1', slug='test-device-role-1', color='ff0000' name='Test Device Role 1', slug='test-device-role-1', color='ff0000'
) )
device1 = Device.objects.create( device1 = Device.objects.create(
device_type=devicetype, device_role=devicerole, name='TestDevice1', site=site device_type=devicetype, role=role, name='TestDevice1', site=site
) )
device2 = Device.objects.create( device2 = Device.objects.create(
device_type=devicetype, device_role=devicerole, name='TestDevice2', site=site device_type=devicetype, role=role, name='TestDevice2', site=site
) )
interface1 = Interface.objects.create(device=device1, name='eth0') interface1 = Interface.objects.create(device=device1, name='eth0')
interface2 = Interface.objects.create(device=device2, name='eth0') interface2 = Interface.objects.create(device=device2, name='eth0')
@ -485,7 +511,7 @@ class CableTestCase(TestCase):
power_port1 = PowerPort.objects.create(device=device2, name='psu1') power_port1 = PowerPort.objects.create(device=device2, name='psu1')
patch_pannel = Device.objects.create( patch_pannel = Device.objects.create(
device_type=devicetype, device_role=devicerole, name='TestPatchPanel', site=site device_type=devicetype, role=role, name='TestPatchPanel', site=site
) )
rear_port1 = RearPort.objects.create(device=patch_pannel, name='RP1', type='8p8c') rear_port1 = RearPort.objects.create(device=patch_pannel, name='RP1', type='8p8c')
front_port1 = FrontPort.objects.create( front_port1 = FrontPort.objects.create(
@ -626,11 +652,11 @@ class VirtualDeviceContextTestCase(TestCase):
devicetype = DeviceType.objects.create( devicetype = DeviceType.objects.create(
manufacturer=manufacturer, model='Test Device Type 1', slug='test-device-type-1' manufacturer=manufacturer, model='Test Device Type 1', slug='test-device-type-1'
) )
devicerole = DeviceRole.objects.create( role = DeviceRole.objects.create(
name='Test Device Role 1', slug='test-device-role-1', color='ff0000' name='Test Device Role 1', slug='test-device-role-1', color='ff0000'
) )
Device.objects.create( Device.objects.create(
device_type=devicetype, device_role=devicerole, name='TestDevice1', site=site device_type=devicetype, role=role, name='TestDevice1', site=site
) )
def test_vdc_and_interface_creation(self): def test_vdc_and_interface_creation(self):

View File

@ -13,11 +13,11 @@ class NaturalOrderingTestCase(TestCase):
devicetype = DeviceType.objects.create( devicetype = DeviceType.objects.create(
manufacturer=manufacturer, model='Test Device Type 1', slug='test-device-type-1' manufacturer=manufacturer, model='Test Device Type 1', slug='test-device-type-1'
) )
devicerole = DeviceRole.objects.create( role = DeviceRole.objects.create(
name='Test Device Role 1', slug='test-device-role-1', color='ff0000' name='Test Device Role 1', slug='test-device-role-1', color='ff0000'
) )
Device.objects.create( Device.objects.create(
device_type=devicetype, device_role=devicerole, name='Test Device 1', site=site device_type=devicetype, role=role, name='Test Device 1', site=site
) )
def test_interface_ordering_numeric(self): def test_interface_ordering_numeric(self):

View File

@ -1554,12 +1554,12 @@ class DeviceRoleTestCase(ViewTestCases.OrganizationalObjectViewTestCase):
@classmethod @classmethod
def setUpTestData(cls): def setUpTestData(cls):
device_roles = ( roles = (
DeviceRole(name='Device Role 1', slug='device-role-1'), DeviceRole(name='Device Role 1', slug='device-role-1'),
DeviceRole(name='Device Role 2', slug='device-role-2'), DeviceRole(name='Device Role 2', slug='device-role-2'),
DeviceRole(name='Device Role 3', slug='device-role-3'), DeviceRole(name='Device Role 3', slug='device-role-3'),
) )
DeviceRole.objects.bulk_create(device_roles) DeviceRole.objects.bulk_create(roles)
tags = create_tags('Alpha', 'Bravo', 'Charlie') tags = create_tags('Alpha', 'Bravo', 'Charlie')
@ -1581,9 +1581,9 @@ class DeviceRoleTestCase(ViewTestCases.OrganizationalObjectViewTestCase):
cls.csv_update_data = ( cls.csv_update_data = (
"id,name,description", "id,name,description",
f"{device_roles[0].pk},Device Role 7,New description7", f"{roles[0].pk},Device Role 7,New description7",
f"{device_roles[1].pk},Device Role 8,New description8", f"{roles[1].pk},Device Role 8,New description8",
f"{device_roles[2].pk},Device Role 9,New description9", f"{roles[2].pk},Device Role 9,New description9",
) )
cls.bulk_edit_data = { cls.bulk_edit_data = {
@ -1665,11 +1665,11 @@ class DeviceTestCase(ViewTestCases.PrimaryObjectViewTestCase):
) )
DeviceType.objects.bulk_create(devicetypes) DeviceType.objects.bulk_create(devicetypes)
deviceroles = ( roles = (
DeviceRole(name='Device Role 1', slug='device-role-1'), DeviceRole(name='Device Role 1', slug='device-role-1'),
DeviceRole(name='Device Role 2', slug='device-role-2'), DeviceRole(name='Device Role 2', slug='device-role-2'),
) )
DeviceRole.objects.bulk_create(deviceroles) DeviceRole.objects.bulk_create(roles)
platforms = ( platforms = (
Platform(name='Platform 1', slug='platform-1'), Platform(name='Platform 1', slug='platform-1'),
@ -1678,9 +1678,9 @@ class DeviceTestCase(ViewTestCases.PrimaryObjectViewTestCase):
Platform.objects.bulk_create(platforms) Platform.objects.bulk_create(platforms)
devices = ( devices = (
Device(name='Device 1', site=sites[0], rack=racks[0], device_type=devicetypes[0], device_role=deviceroles[0], platform=platforms[0]), Device(name='Device 1', site=sites[0], rack=racks[0], device_type=devicetypes[0], role=roles[0], platform=platforms[0]),
Device(name='Device 2', site=sites[0], rack=racks[0], device_type=devicetypes[0], device_role=deviceroles[0], platform=platforms[0]), Device(name='Device 2', site=sites[0], rack=racks[0], device_type=devicetypes[0], role=roles[0], platform=platforms[0]),
Device(name='Device 3', site=sites[0], rack=racks[0], device_type=devicetypes[0], device_role=deviceroles[0], platform=platforms[0]), Device(name='Device 3', site=sites[0], rack=racks[0], device_type=devicetypes[0], role=roles[0], platform=platforms[0]),
) )
Device.objects.bulk_create(devices) Device.objects.bulk_create(devices)
@ -1690,7 +1690,7 @@ class DeviceTestCase(ViewTestCases.PrimaryObjectViewTestCase):
cls.form_data = { cls.form_data = {
'device_type': devicetypes[1].pk, 'device_type': devicetypes[1].pk,
'device_role': deviceroles[1].pk, 'role': roles[1].pk,
'tenant': None, 'tenant': None,
'platform': platforms[1].pk, 'platform': platforms[1].pk,
'name': 'Device X', 'name': 'Device X',
@ -1715,7 +1715,7 @@ class DeviceTestCase(ViewTestCases.PrimaryObjectViewTestCase):
} }
cls.csv_data = ( cls.csv_data = (
"device_role,manufacturer,device_type,status,name,site,location,rack,position,face,virtual_chassis,vc_position,vc_priority", "role,manufacturer,device_type,status,name,site,location,rack,position,face,virtual_chassis,vc_position,vc_priority",
"Device Role 1,Manufacturer 1,Device Type 1,active,Device 4,Site 1,Location 1,Rack 1,10,front,Virtual Chassis 1,1,10", "Device Role 1,Manufacturer 1,Device Type 1,active,Device 4,Site 1,Location 1,Rack 1,10,front,Virtual Chassis 1,1,10",
"Device Role 1,Manufacturer 1,Device Type 1,active,Device 5,Site 1,Location 1,Rack 1,20,front,Virtual Chassis 1,2,20", "Device Role 1,Manufacturer 1,Device Type 1,active,Device 5,Site 1,Location 1,Rack 1,20,front,Virtual Chassis 1,2,20",
"Device Role 1,Manufacturer 1,Device Type 1,active,Device 6,Site 1,Location 1,Rack 1,30,front,Virtual Chassis 1,3,30", "Device Role 1,Manufacturer 1,Device Type 1,active,Device 6,Site 1,Location 1,Rack 1,30,front,Virtual Chassis 1,3,30",
@ -1730,7 +1730,7 @@ class DeviceTestCase(ViewTestCases.PrimaryObjectViewTestCase):
cls.bulk_edit_data = { cls.bulk_edit_data = {
'device_type': devicetypes[1].pk, 'device_type': devicetypes[1].pk,
'device_role': deviceroles[1].pk, 'role': roles[1].pk,
'tenant': None, 'tenant': None,
'platform': platforms[1].pk, 'platform': platforms[1].pk,
'serial': '123456', 'serial': '123456',
@ -2909,14 +2909,14 @@ class CableTestCase(
site = Site.objects.create(name='Site 1', slug='site-1') site = Site.objects.create(name='Site 1', slug='site-1')
manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1') manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1')
devicetype = DeviceType.objects.create(model='Device Type 1', manufacturer=manufacturer) devicetype = DeviceType.objects.create(model='Device Type 1', manufacturer=manufacturer)
devicerole = DeviceRole.objects.create(name='Device Role 1', slug='device-role-1') role = DeviceRole.objects.create(name='Device Role 1', slug='device-role-1')
vc = VirtualChassis.objects.create(name='Virtual Chassis') vc = VirtualChassis.objects.create(name='Virtual Chassis')
devices = ( devices = (
Device(name='Device 1', site=site, device_type=devicetype, device_role=devicerole), Device(name='Device 1', site=site, device_type=devicetype, role=role),
Device(name='Device 2', site=site, device_type=devicetype, device_role=devicerole), Device(name='Device 2', site=site, device_type=devicetype, role=role),
Device(name='Device 3', site=site, device_type=devicetype, device_role=devicerole), Device(name='Device 3', site=site, device_type=devicetype, role=role),
Device(name='Device 4', site=site, device_type=devicetype, device_role=devicerole), Device(name='Device 4', site=site, device_type=devicetype, role=role),
) )
Device.objects.bulk_create(devices) Device.objects.bulk_create(devices)
@ -3016,23 +3016,23 @@ class VirtualChassisTestCase(ViewTestCases.PrimaryObjectViewTestCase):
device_type = DeviceType.objects.create( device_type = DeviceType.objects.create(
manufacturer=manufacturer, model='Device Type 1', slug='device-type-1' manufacturer=manufacturer, model='Device Type 1', slug='device-type-1'
) )
device_role = DeviceRole.objects.create( role = DeviceRole.objects.create(
name='Device Role', slug='device-role-1' name='Device Role', slug='device-role-1'
) )
devices = ( devices = (
Device(device_type=device_type, device_role=device_role, name='Device 1', site=site), Device(device_type=device_type, role=role, name='Device 1', site=site),
Device(device_type=device_type, device_role=device_role, name='Device 2', site=site), Device(device_type=device_type, role=role, name='Device 2', site=site),
Device(device_type=device_type, device_role=device_role, name='Device 3', site=site), Device(device_type=device_type, role=role, name='Device 3', site=site),
Device(device_type=device_type, device_role=device_role, name='Device 4', site=site), Device(device_type=device_type, role=role, name='Device 4', site=site),
Device(device_type=device_type, device_role=device_role, name='Device 5', site=site), Device(device_type=device_type, role=role, name='Device 5', site=site),
Device(device_type=device_type, device_role=device_role, name='Device 6', site=site), Device(device_type=device_type, role=role, name='Device 6', site=site),
Device(device_type=device_type, device_role=device_role, name='Device 7', site=site), Device(device_type=device_type, role=role, name='Device 7', site=site),
Device(device_type=device_type, device_role=device_role, name='Device 8', site=site), Device(device_type=device_type, role=role, name='Device 8', site=site),
Device(device_type=device_type, device_role=device_role, name='Device 9', site=site), Device(device_type=device_type, role=role, name='Device 9', site=site),
Device(device_type=device_type, device_role=device_role, name='Device 10', site=site), Device(device_type=device_type, role=role, name='Device 10', site=site),
Device(device_type=device_type, device_role=device_role, name='Device 11', site=site), Device(device_type=device_type, role=role, name='Device 11', site=site),
Device(device_type=device_type, device_role=device_role, name='Device 12', site=site), Device(device_type=device_type, role=role, name='Device 12', site=site),
) )
Device.objects.bulk_create(devices) Device.objects.bulk_create(devices)
@ -3211,11 +3211,11 @@ class PowerFeedTestCase(ViewTestCases.PrimaryObjectViewTestCase):
device_type = DeviceType.objects.create( device_type = DeviceType.objects.create(
manufacturer=manufacturer, model='Device Type 1', slug='device-type-1' manufacturer=manufacturer, model='Device Type 1', slug='device-type-1'
) )
device_role = DeviceRole.objects.create( role = DeviceRole.objects.create(
name='Device Role', slug='device-role-1' name='Device Role', slug='device-role-1'
) )
device = Device.objects.create( device = Device.objects.create(
site=Site.objects.first(), device_type=device_type, device_role=device_role site=Site.objects.first(), device_type=device_type, role=role
) )
powerfeed = PowerFeed.objects.first() powerfeed = PowerFeed.objects.first()

View File

@ -407,7 +407,7 @@ class SiteView(generic.ObjectView):
site=instance, site=instance,
rack__isnull=True, rack__isnull=True,
parent_bay__isnull=True parent_bay__isnull=True
).prefetch_related('device_type__manufacturer', 'parent_bay', 'device_role') ).prefetch_related('device_type__manufacturer', 'parent_bay', 'role')
return { return {
'related_models': related_models, 'related_models': related_models,
@ -489,7 +489,7 @@ class LocationView(generic.ObjectView):
location=instance, location=instance,
rack__isnull=True, rack__isnull=True,
parent_bay__isnull=True parent_bay__isnull=True
).prefetch_related('device_type__manufacturer', 'parent_bay', 'device_role') ).prefetch_related('device_type__manufacturer', 'parent_bay', 'role')
return { return {
'related_models': related_models, 'related_models': related_models,
@ -1721,7 +1721,7 @@ class InventoryItemTemplateBulkDeleteView(generic.BulkDeleteView):
class DeviceRoleListView(generic.ObjectListView): class DeviceRoleListView(generic.ObjectListView):
queryset = DeviceRole.objects.annotate( queryset = DeviceRole.objects.annotate(
device_count=count_related(Device, 'device_role'), device_count=count_related(Device, 'role'),
vm_count=count_related(VirtualMachine, 'role') vm_count=count_related(VirtualMachine, 'role')
) )
filterset = filtersets.DeviceRoleFilterSet filterset = filtersets.DeviceRoleFilterSet
@ -1735,7 +1735,7 @@ class DeviceRoleView(generic.ObjectView):
def get_extra_context(self, request, instance): def get_extra_context(self, request, instance):
related_models = ( related_models = (
(Device.objects.restrict(request.user, 'view').filter(device_role=instance), 'role_id'), (Device.objects.restrict(request.user, 'view').filter(role=instance), 'role_id'),
(VirtualMachine.objects.restrict(request.user, 'view').filter(role=instance), 'role_id'), (VirtualMachine.objects.restrict(request.user, 'view').filter(role=instance), 'role_id'),
) )
@ -1762,7 +1762,7 @@ class DeviceRoleBulkImportView(generic.BulkImportView):
class DeviceRoleBulkEditView(generic.BulkEditView): class DeviceRoleBulkEditView(generic.BulkEditView):
queryset = DeviceRole.objects.annotate( queryset = DeviceRole.objects.annotate(
device_count=count_related(Device, 'device_role'), device_count=count_related(Device, 'role'),
vm_count=count_related(VirtualMachine, 'role') vm_count=count_related(VirtualMachine, 'role')
) )
filterset = filtersets.DeviceRoleFilterSet filterset = filtersets.DeviceRoleFilterSet
@ -1772,7 +1772,7 @@ class DeviceRoleBulkEditView(generic.BulkEditView):
class DeviceRoleBulkDeleteView(generic.BulkDeleteView): class DeviceRoleBulkDeleteView(generic.BulkDeleteView):
queryset = DeviceRole.objects.annotate( queryset = DeviceRole.objects.annotate(
device_count=count_related(Device, 'device_role'), device_count=count_related(Device, 'role'),
vm_count=count_related(VirtualMachine, 'role') vm_count=count_related(VirtualMachine, 'role')
) )
filterset = filtersets.DeviceRoleFilterSet filterset = filtersets.DeviceRoleFilterSet

View File

@ -19,8 +19,7 @@ class ConfigContextQuerySet(RestrictedQuerySet):
aggregate_data: If True, use the JSONBAgg aggregate function to return only the list of JSON data objects aggregate_data: If True, use the JSONBAgg aggregate function to return only the list of JSON data objects
""" """
# `device_role` for Device; `role` for VirtualMachine role = obj.role
role = getattr(obj, 'device_role', None) or obj.role
# Device type and location assignment is relevant only for Devices # Device type and location assignment is relevant only for Devices
device_type = getattr(obj, 'device_type', None) device_type = getattr(obj, 'device_type', None)
@ -121,7 +120,7 @@ class ConfigContextModelQuerySet(RestrictedQuerySet):
if self.model._meta.model_name == 'device': if self.model._meta.model_name == 'device':
base_query.add((Q(locations=OuterRef('location')) | Q(locations=None)), Q.AND) base_query.add((Q(locations=OuterRef('location')) | Q(locations=None)), Q.AND)
base_query.add((Q(device_types=OuterRef('device_type')) | Q(device_types=None)), Q.AND) base_query.add((Q(device_types=OuterRef('device_type')) | Q(device_types=None)), Q.AND)
base_query.add((Q(roles=OuterRef('device_role')) | Q(roles=None)), Q.AND) base_query.add((Q(roles=OuterRef('role')) | Q(roles=None)), Q.AND)
base_query.add((Q(sites=OuterRef('site')) | Q(sites=None)), Q.AND) base_query.add((Q(sites=OuterRef('site')) | Q(sites=None)), Q.AND)
region_field = 'site__region' region_field = 'site__region'
sitegroup_field = 'site__group' sitegroup_field = 'site__group'

View File

@ -579,9 +579,9 @@ class ConfigContextTest(APIViewTestCases.APIViewTestCase):
""" """
manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1') manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1')
devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1', slug='device-type-1') devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1', slug='device-type-1')
devicerole = DeviceRole.objects.create(name='Device Role 1', slug='device-role-1') role = DeviceRole.objects.create(name='Device Role 1', slug='device-role-1')
site = Site.objects.create(name='Site-1', slug='site-1') site = Site.objects.create(name='Site-1', slug='site-1')
device = Device.objects.create(name='Device 1', device_type=devicetype, device_role=devicerole, site=site) device = Device.objects.create(name='Device 1', device_type=devicetype, role=role, site=site)
# Test default config contexts (created at test setup) # Test default config contexts (created at test setup)
rendered_context = device.get_config_context() rendered_context = device.get_config_context()

View File

@ -44,7 +44,7 @@ class ConfigContextTest(TestCase):
manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1') manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1')
devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1', slug='device-type-1') devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1', slug='device-type-1')
devicerole = DeviceRole.objects.create(name='Device Role 1', slug='device-role-1') role = DeviceRole.objects.create(name='Device Role 1', slug='device-role-1')
region = Region.objects.create(name='Region') region = Region.objects.create(name='Region')
sitegroup = SiteGroup.objects.create(name='Site Group') sitegroup = SiteGroup.objects.create(name='Site Group')
site = Site.objects.create(name='Site 1', slug='site-1', region=region, group=sitegroup) site = Site.objects.create(name='Site 1', slug='site-1', region=region, group=sitegroup)
@ -58,7 +58,7 @@ class ConfigContextTest(TestCase):
Device.objects.create( Device.objects.create(
name='Device 1', name='Device 1',
device_type=devicetype, device_type=devicetype,
device_role=devicerole, role=role,
site=site, site=site,
location=location location=location
) )
@ -252,7 +252,7 @@ class ConfigContextTest(TestCase):
location=location, location=location,
tenant=tenant, tenant=tenant,
platform=platform, platform=platform,
device_role=DeviceRole.objects.first(), role=DeviceRole.objects.first(),
device_type=DeviceType.objects.first() device_type=DeviceType.objects.first()
) )
device.tags.add(tag) device.tags.add(tag)
@ -382,7 +382,7 @@ class ConfigContextTest(TestCase):
site=site, site=site,
tenant=tenant, tenant=tenant,
platform=platform, platform=platform,
device_role=DeviceRole.objects.first(), role=DeviceRole.objects.first(),
device_type=DeviceType.objects.first() device_type=DeviceType.objects.first()
) )
device.tags.set(tags) device.tags.set(tags)
@ -430,7 +430,7 @@ class ConfigContextTest(TestCase):
site=site, site=site,
tenant=tenant, tenant=tenant,
platform=platform, platform=platform,
device_role=DeviceRole.objects.first(), role=DeviceRole.objects.first(),
device_type=DeviceType.objects.first() device_type=DeviceType.objects.first()
) )
device.tags.set([tag1, tag2]) device.tags.set([tag1, tag2])

View File

@ -1009,11 +1009,11 @@ class ServiceTest(APIViewTestCases.APIViewTestCase):
site = Site.objects.create(name='Site 1', slug='site-1') site = Site.objects.create(name='Site 1', slug='site-1')
manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1') manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1')
devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1') devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1')
devicerole = DeviceRole.objects.create(name='Device Role 1', slug='device-role-1') role = DeviceRole.objects.create(name='Device Role 1', slug='device-role-1')
devices = ( devices = (
Device(name='Device 1', site=site, device_type=devicetype, device_role=devicerole), Device(name='Device 1', site=site, device_type=devicetype, role=role),
Device(name='Device 2', site=site, device_type=devicetype, device_role=devicerole), Device(name='Device 2', site=site, device_type=devicetype, role=role),
) )
Device.objects.bulk_create(devices) Device.objects.bulk_create(devices)

View File

@ -825,12 +825,12 @@ class IPAddressTestCase(TestCase, ChangeLoggedFilterSetTests):
site = Site.objects.create(name='Site 1', slug='site-1') site = Site.objects.create(name='Site 1', slug='site-1')
manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1') manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1')
device_type = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1') device_type = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1')
device_role = DeviceRole.objects.create(name='Device Role 1', slug='device-role-1') role = DeviceRole.objects.create(name='Device Role 1', slug='device-role-1')
devices = ( devices = (
Device(device_type=device_type, name='Device 1', site=site, device_role=device_role), Device(device_type=device_type, name='Device 1', site=site, role=role),
Device(device_type=device_type, name='Device 2', site=site, device_role=device_role), Device(device_type=device_type, name='Device 2', site=site, role=role),
Device(device_type=device_type, name='Device 3', site=site, device_role=device_role), Device(device_type=device_type, name='Device 3', site=site, role=role),
) )
Device.objects.bulk_create(devices) Device.objects.bulk_create(devices)
@ -1282,11 +1282,11 @@ class VLANTestCase(TestCase, ChangeLoggedFilterSetTests):
manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1') manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1')
device_type = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1') device_type = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1')
device_role = DeviceRole.objects.create(name='Device Role 1', slug='device-role-1') role = DeviceRole.objects.create(name='Device Role 1', slug='device-role-1')
devices = ( devices = (
Device(name='Device 1', site=sites[0], location=locations[0], rack=racks[0], device_type=device_type, device_role=device_role), Device(name='Device 1', site=sites[0], location=locations[0], rack=racks[0], device_type=device_type, role=role),
Device(name='Device 2', site=sites[1], location=locations[1], rack=racks[1], device_type=device_type, device_role=device_role), Device(name='Device 2', site=sites[1], location=locations[1], rack=racks[1], device_type=device_type, role=role),
Device(name='Device 3', site=sites[2], location=locations[2], rack=racks[2], device_type=device_type, device_role=device_role), Device(name='Device 3', site=sites[2], location=locations[2], rack=racks[2], device_type=device_type, role=role),
) )
Device.objects.bulk_create(devices) Device.objects.bulk_create(devices)
@ -1516,12 +1516,12 @@ class ServiceTestCase(TestCase, ChangeLoggedFilterSetTests):
site = Site.objects.create(name='Site 1', slug='site-1') site = Site.objects.create(name='Site 1', slug='site-1')
manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1') manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1')
device_type = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1') device_type = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1')
device_role = DeviceRole.objects.create(name='Device Role 1', slug='device-role-1') role = DeviceRole.objects.create(name='Device Role 1', slug='device-role-1')
devices = ( devices = (
Device(device_type=device_type, name='Device 1', site=site, device_role=device_role), Device(device_type=device_type, name='Device 1', site=site, role=role),
Device(device_type=device_type, name='Device 2', site=site, device_role=device_role), Device(device_type=device_type, name='Device 2', site=site, role=role),
Device(device_type=device_type, name='Device 3', site=site, device_role=device_role), Device(device_type=device_type, name='Device 3', site=site, role=role),
) )
Device.objects.bulk_create(devices) Device.objects.bulk_create(devices)

View File

@ -549,12 +549,12 @@ class TestL2VPNTermination(TestCase):
site = Site.objects.create(name='Site 1') site = Site.objects.create(name='Site 1')
manufacturer = Manufacturer.objects.create(name='Manufacturer 1') manufacturer = Manufacturer.objects.create(name='Manufacturer 1')
device_type = DeviceType.objects.create(model='Device Type 1', manufacturer=manufacturer) device_type = DeviceType.objects.create(model='Device Type 1', manufacturer=manufacturer)
device_role = DeviceRole.objects.create(name='Switch') role = DeviceRole.objects.create(name='Switch')
device = Device.objects.create( device = Device.objects.create(
name='Device 1', name='Device 1',
site=site, site=site,
device_type=device_type, device_type=device_type,
device_role=device_role, role=role,
status='active' status='active'
) )

View File

@ -909,8 +909,8 @@ class ServiceTestCase(ViewTestCases.PrimaryObjectViewTestCase):
site = Site.objects.create(name='Site 1', slug='site-1') site = Site.objects.create(name='Site 1', slug='site-1')
manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1') manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1')
devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1') devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1')
devicerole = DeviceRole.objects.create(name='Device Role 1', slug='device-role-1') role = DeviceRole.objects.create(name='Device Role 1', slug='device-role-1')
device = Device.objects.create(name='Device 1', site=site, device_type=devicetype, device_role=devicerole) device = Device.objects.create(name='Device 1', site=site, device_type=devicetype, role=role)
services = ( services = (
Service(device=device, name='Service 1', protocol=ServiceProtocolChoices.PROTOCOL_TCP, ports=[101]), Service(device=device, name='Service 1', protocol=ServiceProtocolChoices.PROTOCOL_TCP, ports=[101]),

View File

@ -202,7 +202,7 @@
</tr> </tr>
<tr> <tr>
<th scope="row">{% trans "Role" %}</th> <th scope="row">{% trans "Role" %}</th>
<td>{{ object.device_role|linkify }}</td> <td>{{ object.role|linkify }}</td>
</tr> </tr>
<tr> <tr>
<th scope="row">{% trans "Platform" %}</th> <th scope="row">{% trans "Platform" %}</th>

View File

@ -10,7 +10,7 @@
<h5 class="offset-sm-3">{% trans "Device" %}</h5> <h5 class="offset-sm-3">{% trans "Device" %}</h5>
</div> </div>
{% render_field form.name %} {% render_field form.name %}
{% render_field form.device_role %} {% render_field form.role %}
{% render_field form.description %} {% render_field form.description %}
{% render_field form.tags %} {% render_field form.tags %}
</div> </div>

View File

@ -10,7 +10,7 @@
{% block extra_controls %} {% block extra_controls %}
{% if perms.dcim.add_device %} {% if perms.dcim.add_device %}
<a href="{% url 'dcim:device_add' %}?device_role={{ object.pk }}" class="btn btn-sm btn-primary"> <a href="{% url 'dcim:device_add' %}?role={{ object.pk }}" class="btn btn-sm btn-primary">
<span class="mdi mdi-plus-thick" aria-hidden="true"></span> {% trans "Add Device" %} <span class="mdi mdi-plus-thick" aria-hidden="true"></span> {% trans "Add Device" %}
</a> </a>
{% endif %} {% endif %}

View File

@ -19,7 +19,7 @@
<td> <td>
<a href="{% url 'dcim:device' pk=device.pk %}">{{ device }}</a> <a href="{% url 'dcim:device' pk=device.pk %}">{{ device }}</a>
</td> </td>
<td>{{ device.device_role }}</td> <td>{{ device.role }}</td>
<td>{{ device.device_type }}</td> <td>{{ device.device_type }}</td>
{% if device.parent_bay %} {% if device.parent_bay %}
<td>{{ device.parent_bay.device|linkify }}</td> <td>{{ device.parent_bay.device|linkify }}</td>

View File

@ -13,7 +13,7 @@
{% block extra_controls %} {% block extra_controls %}
{% if perms.dcim.add_device %} {% if perms.dcim.add_device %}
<a href="{% url 'dcim:device_add' %}?device_role={{ object.pk }}" class="btn btn-sm btn-primary"> <a href="{% url 'dcim:device_add' %}?role={{ object.pk }}" class="btn btn-sm btn-primary">
<span class="mdi mdi-plus-thick" aria-hidden="true"></span> {% trans "Add Device" %} <span class="mdi mdi-plus-thick" aria-hidden="true"></span> {% trans "Add Device" %}
</a> </a>
{% endif %} {% endif %}

View File

@ -44,7 +44,7 @@ def create_test_device(name, site=None, **attrs):
manufacturer, _ = Manufacturer.objects.get_or_create(name='Manufacturer 1', slug='manufacturer-1') manufacturer, _ = Manufacturer.objects.get_or_create(name='Manufacturer 1', slug='manufacturer-1')
devicetype, _ = DeviceType.objects.get_or_create(model='Device Type 1', manufacturer=manufacturer) devicetype, _ = DeviceType.objects.get_or_create(model='Device Type 1', manufacturer=manufacturer)
devicerole, _ = DeviceRole.objects.get_or_create(name='Device Role 1', slug='device-role-1') devicerole, _ = DeviceRole.objects.get_or_create(name='Device Role 1', slug='device-role-1')
device = Device.objects.create(name=name, site=site, device_type=devicetype, device_role=devicerole, **attrs) device = Device.objects.create(name=name, site=site, device_type=devicetype, role=devicerole, **attrs)
return device return device

View File

@ -360,12 +360,12 @@ class DynamicFilterLookupExpressionTest(TestCase):
) )
DeviceType.objects.bulk_create(device_types) DeviceType.objects.bulk_create(device_types)
device_roles = ( roles = (
DeviceRole(name='Device Role 1', slug='device-role-1'), DeviceRole(name='Device Role 1', slug='device-role-1'),
DeviceRole(name='Device Role 2', slug='device-role-2'), DeviceRole(name='Device Role 2', slug='device-role-2'),
DeviceRole(name='Device Role 3', slug='device-role-3'), DeviceRole(name='Device Role 3', slug='device-role-3'),
) )
DeviceRole.objects.bulk_create(device_roles) DeviceRole.objects.bulk_create(roles)
platforms = ( platforms = (
Platform(name='Platform 1', slug='platform-1'), Platform(name='Platform 1', slug='platform-1'),
@ -401,9 +401,9 @@ class DynamicFilterLookupExpressionTest(TestCase):
Rack.objects.bulk_create(racks) Rack.objects.bulk_create(racks)
devices = ( devices = (
Device(name='Device 1', device_type=device_types[0], device_role=device_roles[0], platform=platforms[0], serial='ABC', asset_tag='1001', site=sites[0], rack=racks[0], position=1, face=DeviceFaceChoices.FACE_FRONT, status=DeviceStatusChoices.STATUS_ACTIVE, local_context_data={"foo": 123}), Device(name='Device 1', device_type=device_types[0], role=roles[0], platform=platforms[0], serial='ABC', asset_tag='1001', site=sites[0], rack=racks[0], position=1, face=DeviceFaceChoices.FACE_FRONT, status=DeviceStatusChoices.STATUS_ACTIVE, local_context_data={"foo": 123}),
Device(name='Device 2', device_type=device_types[1], device_role=device_roles[1], platform=platforms[1], serial='DEF', asset_tag='1002', site=sites[1], rack=racks[1], position=2, face=DeviceFaceChoices.FACE_FRONT, status=DeviceStatusChoices.STATUS_STAGED), Device(name='Device 2', device_type=device_types[1], role=roles[1], platform=platforms[1], serial='DEF', asset_tag='1002', site=sites[1], rack=racks[1], position=2, face=DeviceFaceChoices.FACE_FRONT, status=DeviceStatusChoices.STATUS_STAGED),
Device(name='Device 3', device_type=device_types[2], device_role=device_roles[2], platform=platforms[2], serial='GHI', asset_tag='1003', site=sites[2], rack=racks[2], position=3, face=DeviceFaceChoices.FACE_REAR, status=DeviceStatusChoices.STATUS_FAILED), Device(name='Device 3', device_type=device_types[2], role=roles[2], platform=platforms[2], serial='GHI', asset_tag='1003', site=sites[2], rack=racks[2], position=3, face=DeviceFaceChoices.FACE_REAR, status=DeviceStatusChoices.STATUS_FAILED),
) )
Device.objects.bulk_create(devices) Device.objects.bulk_create(devices)

View File

@ -180,11 +180,11 @@ class VirtualMachineTestCase(ViewTestCases.PrimaryObjectViewTestCase):
@classmethod @classmethod
def setUpTestData(cls): def setUpTestData(cls):
deviceroles = ( roles = (
DeviceRole(name='Device Role 1', slug='device-role-1'), DeviceRole(name='Device Role 1', slug='device-role-1'),
DeviceRole(name='Device Role 2', slug='device-role-2'), DeviceRole(name='Device Role 2', slug='device-role-2'),
) )
DeviceRole.objects.bulk_create(deviceroles) DeviceRole.objects.bulk_create(roles)
platforms = ( platforms = (
Platform(name='Platform 1', slug='platform-1'), Platform(name='Platform 1', slug='platform-1'),
@ -212,9 +212,9 @@ class VirtualMachineTestCase(ViewTestCases.PrimaryObjectViewTestCase):
) )
virtual_machines = ( virtual_machines = (
VirtualMachine(name='Virtual Machine 1', site=sites[0], cluster=clusters[0], device=devices[0], role=deviceroles[0], platform=platforms[0]), VirtualMachine(name='Virtual Machine 1', site=sites[0], cluster=clusters[0], device=devices[0], role=roles[0], platform=platforms[0]),
VirtualMachine(name='Virtual Machine 2', site=sites[0], cluster=clusters[0], device=devices[0], role=deviceroles[0], platform=platforms[0]), VirtualMachine(name='Virtual Machine 2', site=sites[0], cluster=clusters[0], device=devices[0], role=roles[0], platform=platforms[0]),
VirtualMachine(name='Virtual Machine 3', site=sites[0], cluster=clusters[0], device=devices[0], role=deviceroles[0], platform=platforms[0]), VirtualMachine(name='Virtual Machine 3', site=sites[0], cluster=clusters[0], device=devices[0], role=roles[0], platform=platforms[0]),
) )
VirtualMachine.objects.bulk_create(virtual_machines) VirtualMachine.objects.bulk_create(virtual_machines)
@ -228,7 +228,7 @@ class VirtualMachineTestCase(ViewTestCases.PrimaryObjectViewTestCase):
'platform': platforms[1].pk, 'platform': platforms[1].pk,
'name': 'Virtual Machine X', 'name': 'Virtual Machine X',
'status': VirtualMachineStatusChoices.STATUS_STAGED, 'status': VirtualMachineStatusChoices.STATUS_STAGED,
'role': deviceroles[1].pk, 'role': roles[1].pk,
'primary_ip4': None, 'primary_ip4': None,
'primary_ip6': None, 'primary_ip6': None,
'vcpus': 4, 'vcpus': 4,
@ -260,7 +260,7 @@ class VirtualMachineTestCase(ViewTestCases.PrimaryObjectViewTestCase):
'tenant': None, 'tenant': None,
'platform': platforms[1].pk, 'platform': platforms[1].pk,
'status': VirtualMachineStatusChoices.STATUS_STAGED, 'status': VirtualMachineStatusChoices.STATUS_STAGED,
'role': deviceroles[1].pk, 'role': roles[1].pk,
'vcpus': 8, 'vcpus': 8,
'memory': 65535, 'memory': 65535,
'disk': 8000, 'disk': 8000,
@ -289,12 +289,12 @@ class VMInterfaceTestCase(ViewTestCases.DeviceComponentViewTestCase):
def setUpTestData(cls): def setUpTestData(cls):
site = Site.objects.create(name='Site 1', slug='site-1') site = Site.objects.create(name='Site 1', slug='site-1')
devicerole = DeviceRole.objects.create(name='Device Role 1', slug='device-role-1') role = DeviceRole.objects.create(name='Device Role 1', slug='device-role-1')
clustertype = ClusterType.objects.create(name='Cluster Type 1', slug='cluster-type-1') clustertype = ClusterType.objects.create(name='Cluster Type 1', slug='cluster-type-1')
cluster = Cluster.objects.create(name='Cluster 1', type=clustertype, site=site) cluster = Cluster.objects.create(name='Cluster 1', type=clustertype, site=site)
virtualmachines = ( virtualmachines = (
VirtualMachine(name='Virtual Machine 1', site=site, cluster=cluster, role=devicerole), VirtualMachine(name='Virtual Machine 1', site=site, cluster=cluster, role=role),
VirtualMachine(name='Virtual Machine 2', site=site, cluster=cluster, role=devicerole), VirtualMachine(name='Virtual Machine 2', site=site, cluster=cluster, role=role),
) )
VirtualMachine.objects.bulk_create(virtualmachines) VirtualMachine.objects.bulk_create(virtualmachines)