From 0bb86f1e7d4e0c48dce5ccb40f529ce656cfa5c4 Mon Sep 17 00:00:00 2001 From: Abhimanyu Saharan Date: Wed, 2 Aug 2023 19:25:52 +0530 Subject: [PATCH] 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 --- docs/customization/custom-scripts.md | 2 +- netbox/dcim/api/serializers.py | 17 +- netbox/dcim/api/views.py | 4 +- netbox/dcim/filtersets.py | 24 ++- netbox/dcim/forms/bulk_edit.py | 4 +- netbox/dcim/forms/bulk_import.py | 4 +- netbox/dcim/forms/filtersets.py | 24 +-- netbox/dcim/forms/model_forms.py | 4 +- .../0181_rename_device_role_device_role.py | 35 ++++ netbox/dcim/models/devices.py | 22 +- netbox/dcim/models/racks.py | 2 +- netbox/dcim/svg/cables.py | 4 +- netbox/dcim/svg/racks.py | 6 +- netbox/dcim/tables/devices.py | 18 +- netbox/dcim/tests/test_api.py | 120 +++++------ netbox/dcim/tests/test_cablepaths.py | 4 +- netbox/dcim/tests/test_filtersets.py | 190 +++++++++--------- netbox/dcim/tests/test_forms.py | 14 +- netbox/dcim/tests/test_models.py | 74 ++++--- netbox/dcim/tests/test_natural_ordering.py | 4 +- netbox/dcim/tests/test_views.py | 66 +++--- netbox/dcim/views.py | 12 +- netbox/extras/querysets.py | 5 +- netbox/extras/tests/test_api.py | 4 +- netbox/extras/tests/test_models.py | 10 +- netbox/ipam/tests/test_api.py | 6 +- netbox/ipam/tests/test_filtersets.py | 24 +-- netbox/ipam/tests/test_models.py | 4 +- netbox/ipam/tests/test_views.py | 4 +- netbox/templates/dcim/device.html | 2 +- netbox/templates/dcim/device_edit.html | 2 +- netbox/templates/dcim/devicerole.html | 2 +- .../templates/dcim/inc/nonracked_devices.html | 2 +- netbox/templates/dcim/platform.html | 2 +- netbox/utilities/testing/utils.py | 2 +- netbox/utilities/tests/test_filters.py | 10 +- netbox/virtualization/tests/test_views.py | 20 +- 37 files changed, 422 insertions(+), 331 deletions(-) create mode 100644 netbox/dcim/migrations/0181_rename_device_role_device_role.py diff --git a/docs/customization/custom-scripts.md b/docs/customization/custom-scripts.md index e20b09ae6..3811474d2 100644 --- a/docs/customization/custom-scripts.md +++ b/docs/customization/custom-scripts.md @@ -390,7 +390,7 @@ class NewBranchScript(Script): name=f'{site.slug}-switch{i}', site=site, status=DeviceStatusChoices.STATUS_PLANNED, - device_role=switch_role + role=switch_role ) switch.full_clean() switch.save() diff --git a/netbox/dcim/api/serializers.py b/netbox/dcim/api/serializers.py index 550e9123b..978ddea7c 100644 --- a/netbox/dcim/api/serializers.py +++ b/netbox/dcim/api/serializers.py @@ -665,7 +665,8 @@ class PlatformSerializer(NetBoxModelSerializer): class DeviceSerializer(NetBoxModelSerializer): url = serializers.HyperlinkedIdentityField(view_name='dcim-api:device-detail') 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) platform = NestedPlatformSerializer(required=False, allow_null=True) site = NestedSiteSerializer() @@ -707,9 +708,9 @@ class DeviceSerializer(NetBoxModelSerializer): class Meta: model = Device fields = [ - 'id', 'url', 'display', 'name', 'device_type', 'device_role', 'tenant', 'platform', 'serial', 'asset_tag', - 'site', 'location', 'rack', 'position', 'face', 'latitude', 'longitude', 'parent_device', 'status', - 'airflow', 'primary_ip', 'primary_ip4', 'primary_ip6', 'oob_ip', 'cluster', 'virtual_chassis', + 'id', 'url', 'display', 'name', 'device_type', 'role', 'device_role', 'tenant', 'platform', 'serial', + 'asset_tag', 'site', 'location', 'rack', 'position', 'face', 'latitude', 'longitude', 'parent_device', + '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', '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', @@ -727,13 +728,16 @@ class DeviceSerializer(NetBoxModelSerializer): data['device_bay'] = NestedDeviceBaySerializer(instance=device_bay, context=context).data return data + def get_device_role(self, obj): + return obj.role + class DeviceWithConfigContextSerializer(DeviceSerializer): config_context = serializers.SerializerMethodField(read_only=True) class Meta(DeviceSerializer.Meta): 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', 'primary_ip4', 'primary_ip6', 'oob_ip', 'cluster', 'virtual_chassis', 'vc_position', 'vc_priority', 'description', 'comments', 'local_context_data', 'tags', 'custom_fields', 'config_context', @@ -1035,7 +1039,8 @@ class ModuleBaySerializer(NetBoxModelSerializer): class Meta: model = ModuleBay 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', ] diff --git a/netbox/dcim/api/views.py b/netbox/dcim/api/views.py index dfedc7432..f045f1bb4 100644 --- a/netbox/dcim/api/views.py +++ b/netbox/dcim/api/views.py @@ -362,7 +362,7 @@ class InventoryItemTemplateViewSet(NetBoxModelViewSet): class DeviceRoleViewSet(NetBoxModelViewSet): 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') ) serializer_class = serializers.DeviceRoleSerializer @@ -393,7 +393,7 @@ class DeviceViewSet( NetBoxModelViewSet ): 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', ) filterset_class = filtersets.DeviceFilterSet diff --git a/netbox/dcim/filtersets.py b/netbox/dcim/filtersets.py index e575c00db..f7c53b23d 100644 --- a/netbox/dcim/filtersets.py +++ b/netbox/dcim/filtersets.py @@ -840,12 +840,12 @@ class DeviceFilterSet(NetBoxModelFilterSet, TenancyFilterSet, ContactModelFilter label=_('Device type (ID)'), ) role_id = django_filters.ModelMultipleChoiceFilter( - field_name='device_role_id', + field_name='role_id', queryset=DeviceRole.objects.all(), label=_('Role (ID)'), ) role = django_filters.ModelMultipleChoiceFilter( - field_name='device_role__slug', + field_name='role__slug', queryset=DeviceRole.objects.all(), to_field_name='slug', label=_('Role (slug)'), @@ -1251,13 +1251,13 @@ class DeviceComponentFilterSet(django_filters.FilterSet): to_field_name='model', label=_('Device type (model)'), ) - device_role_id = django_filters.ModelMultipleChoiceFilter( - field_name='device__device_role', + 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__device_role__slug', + role = django_filters.ModelMultipleChoiceFilter( + field_name='device__role__slug', queryset=DeviceRole.objects.all(), to_field_name='slug', label=_('Device role (slug)'), @@ -1273,6 +1273,18 @@ class DeviceComponentFilterSet(django_filters.FilterSet): to_field_name='name', 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): if not value.strip(): diff --git a/netbox/dcim/forms/bulk_edit.py b/netbox/dcim/forms/bulk_edit.py index 33e60322d..cacf1f72b 100644 --- a/netbox/dcim/forms/bulk_edit.py +++ b/netbox/dcim/forms/bulk_edit.py @@ -553,7 +553,7 @@ class DeviceBulkEditForm(NetBoxModelBulkEditForm): 'manufacturer_id': '$manufacturer' } ) - device_role = DynamicModelChoiceField( + role = DynamicModelChoiceField( label=_('Device role'), queryset=DeviceRole.objects.all(), required=False @@ -610,7 +610,7 @@ class DeviceBulkEditForm(NetBoxModelBulkEditForm): model = Device fieldsets = ( - (_('Device'), ('device_role', 'status', 'tenant', 'platform', 'description')), + (_('Device'), ('role', 'status', 'tenant', 'platform', 'description')), (_('Location'), ('site', 'location')), (_('Hardware'), ('manufacturer', 'device_type', 'airflow', 'serial')), (_('Configuration'), ('config_template',)), diff --git a/netbox/dcim/forms/bulk_import.py b/netbox/dcim/forms/bulk_import.py index 85d2b88bd..a8e75e3c2 100644 --- a/netbox/dcim/forms/bulk_import.py +++ b/netbox/dcim/forms/bulk_import.py @@ -404,7 +404,7 @@ class PlatformImportForm(NetBoxModelImportForm): class BaseDeviceImportForm(NetBoxModelImportForm): - device_role = CSVModelChoiceField( + role = CSVModelChoiceField( label=_('Device role'), queryset=DeviceRole.objects.all(), to_field_name='name', @@ -527,7 +527,7 @@ class DeviceImportForm(BaseDeviceImportForm): class Meta(BaseDeviceImportForm.Meta): 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', 'virtual_chassis', 'vc_position', 'vc_priority', 'cluster', 'description', 'config_template', 'comments', 'tags', diff --git a/netbox/dcim/forms/filtersets.py b/netbox/dcim/forms/filtersets.py index 3efbfb974..43e5f4481 100644 --- a/netbox/dcim/forms/filtersets.py +++ b/netbox/dcim/forms/filtersets.py @@ -109,7 +109,7 @@ class DeviceComponentFilterForm(NetBoxModelFilterSetForm): required=False, label=_('Device type') ) - device_role_id = DynamicModelMultipleChoiceField( + role_id = DynamicModelMultipleChoiceField( queryset=DeviceRole.objects.all(), required=False, label=_('Device role') @@ -122,7 +122,7 @@ class DeviceComponentFilterForm(NetBoxModelFilterSetForm): 'location_id': '$location_id', 'virtual_chassis_id': '$virtual_chassis_id', 'device_type_id': '$device_type_id', - 'role_id': '$device_role_id' + 'role_id': '$role_id' }, label=_('Device') ) @@ -1136,7 +1136,7 @@ class ConsolePortFilterForm(PathEndpointFilterForm, DeviceComponentFilterForm): (None, ('q', 'filter_id', 'tag')), (_('Attributes'), ('name', 'label', 'type', 'speed')), (_('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')), ) type = forms.MultipleChoiceField( @@ -1158,7 +1158,7 @@ class ConsoleServerPortFilterForm(PathEndpointFilterForm, DeviceComponentFilterF (None, ('q', 'filter_id', 'tag')), (_('Attributes'), ('name', 'label', 'type', 'speed')), (_('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')), ) type = forms.MultipleChoiceField( @@ -1180,7 +1180,7 @@ class PowerPortFilterForm(PathEndpointFilterForm, DeviceComponentFilterForm): (None, ('q', 'filter_id', 'tag')), (_('Attributes'), ('name', 'label', 'type')), (_('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')), ) type = forms.MultipleChoiceField( @@ -1197,7 +1197,7 @@ class PowerOutletFilterForm(PathEndpointFilterForm, DeviceComponentFilterForm): (None, ('q', 'filter_id', 'tag')), (_('Attributes'), ('name', 'label', 'type')), (_('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')), ) type = forms.MultipleChoiceField( @@ -1217,7 +1217,7 @@ class InterfaceFilterForm(PathEndpointFilterForm, DeviceComponentFilterForm): (_('PoE'), ('poe_mode', 'poe_type')), (_('Wireless'), ('rf_role', 'rf_channel', 'rf_channel_width', 'tx_power')), (_('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')), ) vdc_id = DynamicModelMultipleChoiceField( @@ -1324,7 +1324,7 @@ class FrontPortFilterForm(CabledFilterForm, DeviceComponentFilterForm): (None, ('q', 'filter_id', 'tag')), (_('Attributes'), ('name', 'label', 'type', 'color')), (_('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')), ) model = FrontPort @@ -1346,7 +1346,7 @@ class RearPortFilterForm(CabledFilterForm, DeviceComponentFilterForm): (None, ('q', 'filter_id', 'tag')), (_('Attributes'), ('name', 'label', 'type', 'color')), (_('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')), ) type = forms.MultipleChoiceField( @@ -1367,7 +1367,7 @@ class ModuleBayFilterForm(DeviceComponentFilterForm): (None, ('q', 'filter_id', 'tag')), (_('Attributes'), ('name', 'label', 'position')), (_('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) position = forms.CharField( @@ -1382,7 +1382,7 @@ class DeviceBayFilterForm(DeviceComponentFilterForm): (None, ('q', 'filter_id', 'tag')), (_('Attributes'), ('name', 'label')), (_('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) @@ -1393,7 +1393,7 @@ class InventoryItemFilterForm(DeviceComponentFilterForm): (None, ('q', 'filter_id', 'tag')), (_('Attributes'), ('name', 'label', 'role_id', 'manufacturer_id', 'serial', 'asset_tag', 'discovered')), (_('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( queryset=InventoryItemRole.objects.all(), diff --git a/netbox/dcim/forms/model_forms.py b/netbox/dcim/forms/model_forms.py index 4bdb19120..e24154b00 100644 --- a/netbox/dcim/forms/model_forms.py +++ b/netbox/dcim/forms/model_forms.py @@ -434,7 +434,7 @@ class DeviceForm(TenancyForm, NetBoxModelForm): queryset=DeviceType.objects.all(), selector=True ) - device_role = DynamicModelChoiceField( + role = DynamicModelChoiceField( label=_('Device role'), queryset=DeviceRole.objects.all() ) @@ -479,7 +479,7 @@ class DeviceForm(TenancyForm, NetBoxModelForm): class Meta: model = Device 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', 'tenant_group', 'tenant', 'virtual_chassis', 'vc_position', 'vc_priority', 'description', 'config_template', 'comments', 'tags', 'local_context_data', diff --git a/netbox/dcim/migrations/0181_rename_device_role_device_role.py b/netbox/dcim/migrations/0181_rename_device_role_device_role.py new file mode 100644 index 000000000..e32e00221 --- /dev/null +++ b/netbox/dcim/migrations/0181_rename_device_role_device_role.py @@ -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 + ), + ] diff --git a/netbox/dcim/models/devices.py b/netbox/dcim/models/devices.py index cfaaf8164..2b598704a 100644 --- a/netbox/dcim/models/devices.py +++ b/netbox/dcim/models/devices.py @@ -537,7 +537,7 @@ class Device(PrimaryModel, ConfigContextModel, TrackingModelMixin): on_delete=models.PROTECT, related_name='instances' ) - device_role = models.ForeignKey( + role = models.ForeignKey( to='dcim.DeviceRole', on_delete=models.PROTECT, related_name='devices', @@ -758,7 +758,7 @@ class Device(PrimaryModel, ConfigContextModel, TrackingModelMixin): objects = ConfigContextModelQuerySet.as_manager() 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', ) prerequisite_models = ( @@ -808,6 +808,20 @@ class Device(PrimaryModel, ConfigContextModel, TrackingModelMixin): def get_absolute_url(self): 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): super().clean() @@ -1063,8 +1077,8 @@ class Device(PrimaryModel, ConfigContextModel, TrackingModelMixin): """ if self.config_template: return self.config_template - if self.device_role.config_template: - return self.device_role.config_template + if self.role.config_template: + return self.role.config_template if self.platform and self.platform.config_template: return self.platform.config_template diff --git a/netbox/dcim/models/racks.py b/netbox/dcim/models/racks.py index 13fb41b59..5fc24e724 100644 --- a/netbox/dcim/models/racks.py +++ b/netbox/dcim/models/racks.py @@ -323,7 +323,7 @@ class Rack(PrimaryModel, WeightMixin): devices = Device.objects.prefetch_related( 'device_type', 'device_type__manufacturer', - 'device_role' + 'role' ).annotate( devicebay_count=Count('devicebays') ).exclude( diff --git a/netbox/dcim/svg/cables.py b/netbox/dcim/svg/cables.py index 33adef798..9413726fa 100644 --- a/netbox/dcim/svg/cables.py +++ b/netbox/dcim/svg/cables.py @@ -167,9 +167,9 @@ class CableTraceSVG: if hasattr(instance, 'parent_object'): # Termination return getattr(instance, 'color', 'f0f0f0') or 'f0f0f0' - if hasattr(instance, 'device_role'): + if hasattr(instance, 'role'): # Device - return instance.device_role.color + return instance.role.color else: # Other parent object return 'e0e0e0' diff --git a/netbox/dcim/svg/racks.py b/netbox/dcim/svg/racks.py index 6333abcf1..07ea55a33 100644 --- a/netbox/dcim/svg/racks.py +++ b/netbox/dcim/svg/racks.py @@ -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 Name: - Role: + Role: Device Type: () Asset tag: (if defined) Serial: (if defined) Description: (if defined) """ 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' description += f'\nDevice Type: {device.device_type.manufacturer.name} {device.device_type.model} ({u_height})' if device.asset_tag: @@ -205,7 +205,7 @@ class RackElevationSVG: """ Draw the front (mounted) face of a device. """ - color = device.device_role.color + color = device.role.color image = device.device_type.front_image self._draw_device(device, coords, size, color=color, image=image) diff --git a/netbox/dcim/tables/devices.py b/netbox/dcim/tables/devices.py index 00226d3f9..28b6efe01 100644 --- a/netbox/dcim/tables/devices.py +++ b/netbox/dcim/tables/devices.py @@ -190,7 +190,7 @@ class DeviceTable(TenancyColumnsMixin, ContactsColumnMixin, NetBoxTable): verbose_name=_('Position'), template_code='{{ value|floatformat }}' ) - device_role = columns.ColoredLabelColumn( + role = columns.ColoredLabelColumn( verbose_name=_('Role') ) manufacturer = tables.Column( @@ -285,14 +285,14 @@ class DeviceTable(TenancyColumnsMixin, ContactsColumnMixin, NetBoxTable): class Meta(NetBoxTable.Meta): model = models.Device 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', 'device_bay_position', 'position', 'face', 'latitude', 'longitude', 'airflow', 'primary_ip', 'primary_ip4', 'primary_ip6', 'oob_ip', 'cluster', 'virtual_chassis', 'vc_position', 'vc_priority', 'description', 'config_template', 'comments', 'contacts', 'tags', 'created', 'last_updated', ) 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', ) @@ -314,7 +314,7 @@ class DeviceImportTable(TenancyColumnsMixin, NetBoxTable): verbose_name=_('Rack'), linkify=True ) - device_role = tables.Column( + role = tables.Column( verbose_name=_('Role') ) device_type = tables.Column( @@ -323,7 +323,7 @@ class DeviceImportTable(TenancyColumnsMixin, NetBoxTable): class Meta(NetBoxTable.Meta): 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 @@ -822,8 +822,8 @@ class DeviceBayTable(DeviceComponentTable): 'args': [Accessor('device_id')], } ) - device_role = columns.ColoredLabelColumn( - accessor=Accessor('installed_device__device_role'), + role = columns.ColoredLabelColumn( + accessor=Accessor('installed_device__role'), verbose_name=_('Role') ) device_type = tables.Column( @@ -847,8 +847,8 @@ class DeviceBayTable(DeviceComponentTable): class Meta(DeviceComponentTable.Meta): model = models.DeviceBay fields = ( - 'pk', 'id', 'name', 'device', 'label', 'status', 'device_role', 'device_type', 'installed_device', 'description', 'tags', - 'created', 'last_updated', + 'pk', 'id', 'name', 'device', 'label', 'status', 'role', 'device_type', 'installed_device', 'description', + 'tags', 'created', 'last_updated', ) default_columns = ('pk', 'name', 'device', 'label', 'status', 'installed_device', 'description') diff --git a/netbox/dcim/tests/test_api.py b/netbox/dcim/tests/test_api.py index ecaf32a06..1ce362963 100644 --- a/netbox/dcim/tests/test_api.py +++ b/netbox/dcim/tests/test_api.py @@ -40,7 +40,7 @@ class Mixins: peer_device = Device.objects.create( site=Site.objects.first(), device_type=DeviceType.objects.first(), - device_role=DeviceRole.objects.first(), + role=DeviceRole.objects.first(), name='Peer Device' ) if self.peer_termination_type is None: @@ -1052,12 +1052,12 @@ class DeviceRoleTest(APIViewTestCases.APIViewTestCase): @classmethod def setUpTestData(cls): - device_roles = ( + roles = ( 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 3', slug='device-role-3', color='0000ff'), ) - DeviceRole.objects.bulk_create(device_roles) + DeviceRole.objects.bulk_create(roles) class PlatformTest(APIViewTestCases.APIViewTestCase): @@ -1122,11 +1122,11 @@ class DeviceTest(APIViewTestCases.APIViewTestCase): ) DeviceType.objects.bulk_create(device_types) - device_roles = ( + roles = ( DeviceRole(name='Device Role 1', slug='device-role-1', color='ff0000'), 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') @@ -1139,7 +1139,7 @@ class DeviceTest(APIViewTestCases.APIViewTestCase): devices = ( Device( device_type=device_types[0], - device_role=device_roles[0], + role=roles[0], name='Device 1', site=sites[0], rack=racks[0], @@ -1148,7 +1148,7 @@ class DeviceTest(APIViewTestCases.APIViewTestCase): ), Device( device_type=device_types[0], - device_role=device_roles[0], + role=roles[0], name='Device 2', site=sites[0], rack=racks[0], @@ -1157,7 +1157,7 @@ class DeviceTest(APIViewTestCases.APIViewTestCase): ), Device( device_type=device_types[0], - device_role=device_roles[0], + role=roles[0], name='Device 3', site=sites[0], rack=racks[0], @@ -1170,7 +1170,7 @@ class DeviceTest(APIViewTestCases.APIViewTestCase): cls.create_data = [ { 'device_type': device_types[1].pk, - 'device_role': device_roles[1].pk, + 'role': roles[1].pk, 'name': 'Test Device 4', 'site': sites[1].pk, 'rack': racks[1].pk, @@ -1178,7 +1178,7 @@ class DeviceTest(APIViewTestCases.APIViewTestCase): }, { 'device_type': device_types[1].pk, - 'device_role': device_roles[1].pk, + 'role': roles[1].pk, 'name': 'Test Device 5', 'site': sites[1].pk, 'rack': racks[1].pk, @@ -1186,7 +1186,7 @@ class DeviceTest(APIViewTestCases.APIViewTestCase): }, { 'device_type': device_types[1].pk, - 'device_role': device_roles[1].pk, + 'role': roles[1].pk, 'name': 'Test Device 6', 'site': sites[1].pk, 'rack': racks[1].pk, @@ -1221,7 +1221,7 @@ class DeviceTest(APIViewTestCases.APIViewTestCase): device = Device.objects.first() data = { 'device_type': device.device_type.pk, - 'device_role': device.device_role.pk, + 'role': device.role.pk, 'site': device.site.pk, 'name': device.name, } @@ -1241,7 +1241,7 @@ class DeviceTest(APIViewTestCases.APIViewTestCase): data = [ { 'device_type': device_type.pk, - 'device_role': device.device_role.pk, + 'role': device.role.pk, 'site': device.site.pk, 'name': 'Test Device 7', 'rack': device.rack.pk, @@ -1250,7 +1250,7 @@ class DeviceTest(APIViewTestCases.APIViewTestCase): }, { 'device_type': device_type.pk, - 'device_role': device.device_role.pk, + 'role': device.role.pk, 'site': device.site.pk, 'name': 'Test Device 8', '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') devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1', slug='device-type-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') - device = Device.objects.create(device_type=devicetype, device_role=devicerole, name='Device 1', site=site) + role = DeviceRole.objects.create(name='Test Device Role 1', slug='test-device-role-1', color='ff0000') + device = Device.objects.create(device_type=devicetype, role=role, name='Device 1', site=site) console_ports = ( 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') devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1', slug='device-type-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') - device = Device.objects.create(device_type=devicetype, device_role=devicerole, name='Device 1', site=site) + role = DeviceRole.objects.create(name='Test Device Role 1', slug='test-device-role-1', color='ff0000') + device = Device.objects.create(device_type=devicetype, role=role, name='Device 1', site=site) console_server_ports = ( 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') devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1', slug='device-type-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') - device = Device.objects.create(device_type=devicetype, device_role=devicerole, name='Device 1', site=site) + role = DeviceRole.objects.create(name='Test Device Role 1', slug='test-device-role-1', color='ff0000') + device = Device.objects.create(device_type=devicetype, role=role, name='Device 1', site=site) power_ports = ( 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') devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1', slug='device-type-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') - device = Device.objects.create(device_type=devicetype, device_role=devicerole, name='Device 1', site=site) + role = DeviceRole.objects.create(name='Test Device Role 1', slug='test-device-role-1', color='ff0000') + device = Device.objects.create(device_type=devicetype, role=role, name='Device 1', site=site) power_ports = ( 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') devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1', slug='device-type-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') - device = Device.objects.create(device_type=devicetype, device_role=devicerole, name='Device 1', site=site) + role = DeviceRole.objects.create(name='Test Device Role 1', slug='test-device-role-1', color='ff0000') + device = Device.objects.create(device_type=devicetype, role=role, name='Device 1', site=site) interfaces = ( 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') devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1', slug='device-type-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') - device = Device.objects.create(device_type=devicetype, device_role=devicerole, name='Device 1', site=site) + role = DeviceRole.objects.create(name='Test Device Role 1', slug='test-device-role-1', color='ff0000') + device = Device.objects.create(device_type=devicetype, role=role, name='Device 1', site=site) rear_ports = ( 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') devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1', slug='device-type-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') - device = Device.objects.create(device_type=devicetype, device_role=devicerole, name='Device 1', site=site) + role = DeviceRole.objects.create(name='Test Device Role 1', slug='test-device-role-1', color='ff0000') + device = Device.objects.create(device_type=devicetype, role=role, name='Device 1', site=site) rear_ports = ( RearPort(device=device, name='Rear Port 1', type=PortTypeChoices.TYPE_8P8C), @@ -1719,10 +1719,10 @@ class ModuleBayTest(APIViewTestCases.APIViewTestCase): def setUpTestData(cls): manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-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 = 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 = ( ModuleBay(device=device, name='Device Bay 1'), @@ -1758,7 +1758,7 @@ class DeviceBayTest(APIViewTestCases.APIViewTestCase): def setUpTestData(cls): manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-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 = ( DeviceType( @@ -1777,10 +1777,10 @@ class DeviceBayTest(APIViewTestCases.APIViewTestCase): DeviceType.objects.bulk_create(device_types) devices = ( - Device(device_type=device_types[0], device_role=devicerole, 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], device_role=devicerole, name='Device 3', site=site), - Device(device_type=device_types[1], device_role=devicerole, name='Device 4', site=site), + Device(device_type=device_types[0], role=role, name='Device 1', site=site), + Device(device_type=device_types[1], role=role, name='Device 2', site=site), + Device(device_type=device_types[1], role=role, name='Device 3', site=site), + Device(device_type=device_types[1], role=role, name='Device 4', site=site), ) 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') devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1', slug='device-type-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') - device = Device.objects.create(device_type=devicetype, device_role=devicerole, name='Device 1', site=site) + role = DeviceRole.objects.create(name='Test Device Role 1', slug='test-device-role-1', color='ff0000') + device = Device.objects.create(device_type=devicetype, role=role, name='Device 1', site=site) roles = ( 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') manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-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 = ( - Device(device_type=devicetype, device_role=devicerole, 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 1', site=site), + Device(device_type=devicetype, role=role, name='Device 2', site=site), ) Device.objects.bulk_create(devices) @@ -1998,10 +1998,10 @@ class ConnectedDeviceTest(APITestCase): site = Site.objects.create(name='Site 1', slug='site-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') - 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 = ( - Device(device_type=devicetype, device_role=devicerole, name='TestDevice1', site=site), - Device(device_type=devicetype, device_role=devicerole, name='TestDevice2', site=site), + Device(device_type=devicetype, role=role, name='TestDevice1', site=site), + Device(device_type=devicetype, role=role, name='TestDevice2', site=site), ) Device.objects.bulk_create(devices) interfaces = ( @@ -2037,21 +2037,21 @@ class VirtualChassisTest(APIViewTestCases.APIViewTestCase): site = Site.objects.create(name='Test Site', slug='test-site') manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1') 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 = ( - Device(name='Device 1', device_type=devicetype, device_role=devicerole, site=site), - Device(name='Device 2', device_type=devicetype, device_role=devicerole, site=site), - Device(name='Device 3', device_type=devicetype, device_role=devicerole, site=site), - Device(name='Device 4', device_type=devicetype, device_role=devicerole, site=site), - Device(name='Device 5', device_type=devicetype, device_role=devicerole, site=site), - Device(name='Device 6', device_type=devicetype, device_role=devicerole, site=site), - Device(name='Device 7', device_type=devicetype, device_role=devicerole, site=site), - Device(name='Device 8', device_type=devicetype, device_role=devicerole, site=site), - Device(name='Device 9', device_type=devicetype, device_role=devicerole, site=site), - Device(name='Device 10', device_type=devicetype, device_role=devicerole, site=site), - Device(name='Device 11', device_type=devicetype, device_role=devicerole, site=site), - Device(name='Device 12', 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, role=role, site=site), + Device(name='Device 3', device_type=devicetype, role=role, site=site), + Device(name='Device 4', device_type=devicetype, role=role, site=site), + Device(name='Device 5', device_type=devicetype, role=role, site=site), + Device(name='Device 6', device_type=devicetype, role=role, site=site), + Device(name='Device 7', device_type=devicetype, role=role, site=site), + Device(name='Device 8', device_type=devicetype, role=role, site=site), + Device(name='Device 9', device_type=devicetype, role=role, site=site), + Device(name='Device 10', device_type=devicetype, role=role, site=site), + Device(name='Device 11', device_type=devicetype, role=role, site=site), + Device(name='Device 12', device_type=devicetype, role=role, site=site), ) Device.objects.bulk_create(devices) @@ -2225,12 +2225,12 @@ class VirtualDeviceContextTest(APIViewTestCases.APIViewTestCase): site = Site.objects.create(name='Test Site', slug='test-site') manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1') 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 = ( - Device(name='Device 1', device_type=devicetype, device_role=devicerole, site=site), - Device(name='Device 2', device_type=devicetype, device_role=devicerole, site=site), - Device(name='Device 3', 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, role=role, site=site), + Device(name='Device 3', device_type=devicetype, role=role, site=site), ) Device.objects.bulk_create(devices) diff --git a/netbox/dcim/tests/test_cablepaths.py b/netbox/dcim/tests/test_cablepaths.py index 3367a3efe..d25333aed 100644 --- a/netbox/dcim/tests/test_cablepaths.py +++ b/netbox/dcim/tests/test_cablepaths.py @@ -24,8 +24,8 @@ class CablePathTestCase(TestCase): manufacturer = Manufacturer.objects.create(name='Generic', slug='generic') device_type = DeviceType.objects.create(manufacturer=manufacturer, model='Test Device') - device_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') + role = DeviceRole.objects.create(name='Device Role', slug='device-role') + 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') diff --git a/netbox/dcim/tests/test_filtersets.py b/netbox/dcim/tests/test_filtersets.py index c75df5cf6..0597bbf99 100644 --- a/netbox/dcim/tests/test_filtersets.py +++ b/netbox/dcim/tests/test_filtersets.py @@ -24,11 +24,11 @@ class DeviceComponentFilterSetTests: params = {'device_type': [device_types[0].model, device_types[1].model]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - def test_device_role(self): - device_role = DeviceRole.objects.all()[:2] - params = {'device_role_id': [device_role[0].pk, device_role[1].pk]} + def test_role(self): + role = DeviceRole.objects.all()[:2] + params = {'role_id': [role[0].pk, role[1].pk]} 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) @@ -1473,12 +1473,12 @@ class DeviceRoleTestCase(TestCase, ChangeLoggedFilterSetTests): @classmethod 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 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.objects.bulk_create(device_roles) + DeviceRole.objects.bulk_create(roles) def test_name(self): params = {'name': ['Device Role 1', 'Device Role 2']} @@ -1565,12 +1565,12 @@ class DeviceTestCase(TestCase, ChangeLoggedFilterSetTests): ) DeviceType.objects.bulk_create(device_types) - device_roles = ( + roles = ( DeviceRole(name='Device Role 1', slug='device-role-1'), DeviceRole(name='Device Role 2', slug='device-role-2'), DeviceRole(name='Device Role 3', slug='device-role-3'), ) - DeviceRole.objects.bulk_create(device_roles) + DeviceRole.objects.bulk_create(roles) platforms = ( Platform(name='Platform 1', slug='platform-1'), @@ -1641,9 +1641,9 @@ class DeviceTestCase(TestCase, ChangeLoggedFilterSetTests): Tenant.objects.bulk_create(tenants) 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 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 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 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], 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], 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) @@ -1755,10 +1755,10 @@ class DeviceTestCase(TestCase, ChangeLoggedFilterSetTests): self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) def test_devicerole(self): - device_roles = DeviceRole.objects.all()[:2] - params = {'role_id': [device_roles[0].pk, device_roles[1].pk]} + roles = DeviceRole.objects.all()[:2] + params = {'role_id': [roles[0].pk, roles[1].pk]} 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) def test_platform(self): @@ -2062,12 +2062,12 @@ class ConsolePortTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedF 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 2', slug='device-role-2'), DeviceRole(name='Device Role 3', slug='device-role-3'), ) - DeviceRole.objects.bulk_create(device_roles) + DeviceRole.objects.bulk_create(roles) locations = ( Location(name='Location 1', slug='location-1', site=sites[0]), @@ -2085,10 +2085,10 @@ class ConsolePortTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedF Rack.objects.bulk_create(racks) 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 2', device_type=device_types[1], device_role=device_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=None, device_type=device_types[0], device_role=device_roles[0], site=sites[3]), # For cable connections + 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], role=roles[1], site=sites[1], location=locations[1], rack=racks[1]), + Device(name='Device 3', device_type=device_types[2], role=roles[2], site=sites[2], location=locations[2], rack=racks[2]), + Device(name=None, device_type=device_types[0], role=roles[0], site=sites[3]), # For cable connections ) 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') - device_roles = ( + roles = ( DeviceRole(name='Device Role 1', slug='device-role-1'), DeviceRole(name='Device Role 2', slug='device-role-2'), DeviceRole(name='Device Role 3', slug='device-role-3'), ) - DeviceRole.objects.bulk_create(device_roles) + DeviceRole.objects.bulk_create(roles) locations = ( Location(name='Location 1', slug='location-1', site=sites[0]), @@ -2265,10 +2265,10 @@ class ConsoleServerPortTestCase(TestCase, DeviceComponentFilterSetTests, ChangeL Rack.objects.bulk_create(racks) 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 2', device_type=device_types[1], device_role=device_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=None, device_type=device_types[2], device_role=device_roles[2], site=sites[3]), # For cable connections + 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], role=roles[1], site=sites[1], location=locations[1], rack=racks[1]), + Device(name='Device 3', device_type=device_types[2], role=roles[2], site=sites[2], location=locations[2], rack=racks[2]), + Device(name=None, device_type=device_types[2], role=roles[2], site=sites[3]), # For cable connections ) 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') - device_roles = ( + roles = ( DeviceRole(name='Device Role 1', slug='device-role-1'), DeviceRole(name='Device Role 2', slug='device-role-2'), DeviceRole(name='Device Role 3', slug='device-role-3'), ) - DeviceRole.objects.bulk_create(device_roles) + DeviceRole.objects.bulk_create(roles) locations = ( Location(name='Location 1', slug='location-1', site=sites[0]), @@ -2445,10 +2445,10 @@ class PowerPortTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil Rack.objects.bulk_create(racks) 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 2', device_type=device_types[1], device_role=device_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=None, device_type=device_types[2], device_role=device_roles[2], site=sites[3]), # For cable connections + 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], role=roles[1], site=sites[1], location=locations[1], rack=racks[1]), + Device(name='Device 3', device_type=device_types[2], role=roles[2], site=sites[2], location=locations[2], rack=racks[2]), + Device(name=None, device_type=device_types[2], role=roles[2], site=sites[3]), # For cable connections ) 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') - device_roles = ( + roles = ( DeviceRole(name='Device Role 1', slug='device-role-1'), DeviceRole(name='Device Role 2', slug='device-role-2'), DeviceRole(name='Device Role 3', slug='device-role-3'), ) - DeviceRole.objects.bulk_create(device_roles) + DeviceRole.objects.bulk_create(roles) locations = ( Location(name='Location 1', slug='location-1', site=sites[0]), @@ -2633,10 +2633,10 @@ class PowerOutletTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedF Rack.objects.bulk_create(racks) 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 2', device_type=device_types[1], device_role=device_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=None, device_type=device_types[2], device_role=device_roles[2], site=sites[3]), # For cable connections + 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], role=roles[1], site=sites[1], location=locations[1], rack=racks[1]), + Device(name='Device 3', device_type=device_types[2], role=roles[2], site=sites[2], location=locations[2], rack=racks[2]), + Device(name=None, device_type=device_types[2], role=roles[2], site=sites[3]), # For cable connections ) 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') - device_roles = ( + roles = ( DeviceRole(name='Device Role 1', slug='device-role-1'), DeviceRole(name='Device Role 2', slug='device-role-2'), DeviceRole(name='Device Role 3', slug='device-role-3'), ) - DeviceRole.objects.bulk_create(device_roles) + DeviceRole.objects.bulk_create(roles) locations = ( Location(name='Location 1', slug='location-1', site=sites[0]), @@ -2817,10 +2817,10 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil Rack.objects.bulk_create(racks) 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 2', device_type=device_types[1], device_role=device_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=None, device_type=device_types[2], device_role=device_roles[2], site=sites[3]), # For cable connections + 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], role=roles[1], site=sites[1], location=locations[1], rack=racks[1]), + Device(name='Device 3', device_type=device_types[2], role=roles[2], site=sites[2], location=locations[2], rack=racks[2]), + Device(name=None, device_type=device_types[2], role=roles[2], site=sites[3]), # For cable connections ) 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') - device_roles = ( + roles = ( DeviceRole(name='Device Role 1', slug='device-role-1'), DeviceRole(name='Device Role 2', slug='device-role-2'), DeviceRole(name='Device Role 3', slug='device-role-3'), ) - DeviceRole.objects.bulk_create(device_roles) + DeviceRole.objects.bulk_create(roles) locations = ( Location(name='Location 1', slug='location-1', site=sites[0]), @@ -3253,10 +3253,10 @@ class FrontPortTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil Rack.objects.bulk_create(racks) 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 2', device_type=device_types[1], device_role=device_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=None, device_type=device_types[2], device_role=device_roles[2], site=sites[3]), # For cable connections + 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], role=roles[1], site=sites[1], location=locations[1], rack=racks[1]), + Device(name='Device 3', device_type=device_types[2], role=roles[2], site=sites[2], location=locations[2], rack=racks[2]), + Device(name=None, device_type=device_types[2], role=roles[2], site=sites[3]), # For cable connections ) 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') - device_roles = ( + roles = ( DeviceRole(name='Device Role 1', slug='device-role-1'), DeviceRole(name='Device Role 2', slug='device-role-2'), DeviceRole(name='Device Role 3', slug='device-role-3'), ) - DeviceRole.objects.bulk_create(device_roles) + DeviceRole.objects.bulk_create(roles) locations = ( Location(name='Location 1', slug='location-1', site=sites[0]), @@ -3442,10 +3442,10 @@ class RearPortTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFilt Rack.objects.bulk_create(racks) 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 2', device_type=device_types[1], device_role=device_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=None, device_type=device_types[2], device_role=device_roles[2], site=sites[3]), # For cable connections + 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], role=roles[1], site=sites[1], location=locations[1], rack=racks[1]), + Device(name='Device 3', device_type=device_types[2], role=roles[2], site=sites[2], location=locations[2], rack=racks[2]), + Device(name=None, device_type=device_types[2], role=roles[2], site=sites[3]), # For cable connections ) Device.objects.bulk_create(devices) @@ -3600,12 +3600,12 @@ class ModuleBayTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil ) DeviceType.objects.bulk_create(device_types) - device_roles = ( + roles = ( DeviceRole(name='Device Role 1', slug='device-role-1'), DeviceRole(name='Device Role 2', slug='device-role-2'), DeviceRole(name='Device Role 3', slug='device-role-3'), ) - DeviceRole.objects.bulk_create(device_roles) + DeviceRole.objects.bulk_create(roles) locations = ( Location(name='Location 1', slug='location-1', site=sites[0]), @@ -3623,9 +3623,9 @@ class ModuleBayTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil Rack.objects.bulk_create(racks) 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 2', device_type=device_types[1], device_role=device_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 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], role=roles[1], site=sites[1], location=locations[1], rack=racks[1]), + Device(name='Device 3', device_type=device_types[2], role=roles[2], site=sites[2], location=locations[2], rack=racks[2]), ) Device.objects.bulk_create(devices) @@ -3729,12 +3729,12 @@ class DeviceBayTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil ) DeviceType.objects.bulk_create(device_types) - device_roles = ( + roles = ( DeviceRole(name='Device Role 1', slug='device-role-1'), DeviceRole(name='Device Role 2', slug='device-role-2'), DeviceRole(name='Device Role 3', slug='device-role-3'), ) - DeviceRole.objects.bulk_create(device_roles) + DeviceRole.objects.bulk_create(roles) locations = ( Location(name='Location 1', slug='location-1', site=sites[0]), @@ -3752,9 +3752,9 @@ class DeviceBayTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil Rack.objects.bulk_create(racks) 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 2', device_type=device_types[1], device_role=device_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 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], role=roles[1], site=sites[1], location=locations[1], rack=racks[1]), + Device(name='Device 3', device_type=device_types[2], role=roles[2], site=sites[2], location=locations[2], rack=racks[2]), ) Device.objects.bulk_create(devices) @@ -3840,12 +3840,12 @@ class InventoryItemTestCase(TestCase, ChangeLoggedFilterSetTests): ) DeviceType.objects.bulk_create(device_types) - device_roles = ( + roles = ( DeviceRole(name='Device Role 1', slug='device-role-1'), DeviceRole(name='Device Role 2', slug='device-role-2'), DeviceRole(name='Device Role 3', slug='device-role-3'), ) - DeviceRole.objects.bulk_create(device_roles) + DeviceRole.objects.bulk_create(roles) regions = ( Region(name='Region 1', slug='region-1'), @@ -3886,9 +3886,9 @@ class InventoryItemTestCase(TestCase, ChangeLoggedFilterSetTests): Rack.objects.bulk_create(racks) 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 2', device_type=device_types[1], device_role=device_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 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], role=roles[1], site=sites[1], location=locations[1], rack=racks[1]), + Device(name='Device 3', device_type=device_types[2], role=roles[2], site=sites[2], location=locations[2], rack=racks[2]), ) Device.objects.bulk_create(devices) @@ -3986,11 +3986,11 @@ class InventoryItemTestCase(TestCase, ChangeLoggedFilterSetTests): params = {'device_type': [device_types[0].model, device_types[1].model]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) - def test_device_role(self): - device_role = DeviceRole.objects.all()[:2] - params = {'device_role_id': [device_role[0].pk, device_role[1].pk]} + def test_role(self): + role = DeviceRole.objects.all()[:2] + params = {'role_id': [role[0].pk, role[1].pk]} 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) def test_device(self): @@ -4066,7 +4066,7 @@ class VirtualChassisTestCase(TestCase, ChangeLoggedFilterSetTests): manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-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 = ( Region(name='Region 1', slug='region-1'), @@ -4092,12 +4092,12 @@ class VirtualChassisTestCase(TestCase, ChangeLoggedFilterSetTests): Site.objects.bulk_create(sites) devices = ( - Device(name='Device 1', device_type=device_type, device_role=device_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 3', device_type=device_type, device_role=device_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 5', device_type=device_type, device_role=device_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 1', device_type=device_type, role=role, site=sites[0], vc_position=1), + Device(name='Device 2', device_type=device_type, role=role, site=sites[0], vc_position=2), + Device(name='Device 3', device_type=device_type, role=role, site=sites[1], vc_position=1), + Device(name='Device 4', device_type=device_type, role=role, site=sites[1], vc_position=2), + Device(name='Device 5', device_type=device_type, role=role, site=sites[2], vc_position=1), + Device(name='Device 6', device_type=device_type, role=role, site=sites[2], vc_position=2), ) Device.objects.bulk_create(devices) @@ -4187,15 +4187,15 @@ class CableTestCase(TestCase, ChangeLoggedFilterSetTests): manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-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 = ( - 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 2', device_type=device_type, device_role=device_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 4', device_type=device_type, device_role=device_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 6', device_type=device_type, device_role=device_role, site=sites[2], rack=racks[2], location=locations[2], position=2), + 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, role=role, site=sites[0], rack=racks[0], location=locations[0], position=2), + 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, role=role, site=sites[1], rack=racks[1], location=locations[1], position=2), + 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, role=role, site=sites[2], rack=racks[2], location=locations[2], position=2), ) Device.objects.bulk_create(devices) @@ -4485,8 +4485,8 @@ class PowerFeedTestCase(TestCase, ChangeLoggedFilterSetTests): manufacturer = Manufacturer.objects.create(name='Manufacturer', slug='manufacturer') device_type = DeviceType.objects.create(manufacturer=manufacturer, model='Model', slug='model') - device_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]) + role = DeviceRole.objects.create(name='Device Role', slug='device-role') + device = Device.objects.create(name='Device', device_type=device_type, role=role, site=sites[0]) power_ports = [ PowerPort(device=device, name='Power Port 1'), 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') 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 = ( - Device(name='Device 1', device_type=device_type, device_role=device_role, site=sites[0]), - Device(name='Device 2', device_type=device_type, device_role=device_role, site=sites[1]), - Device(name='Device 3', device_type=device_type, device_role=device_role, site=sites[2]), + Device(name='Device 1', device_type=device_type, role=role, site=sites[0]), + Device(name='Device 2', device_type=device_type, role=role, site=sites[1]), + Device(name='Device 3', device_type=device_type, role=role, site=sites[2]), ) Device.objects.bulk_create(devices) diff --git a/netbox/dcim/tests/test_forms.py b/netbox/dcim/tests/test_forms.py index 1cd75765a..7a57bf3f0 100644 --- a/netbox/dcim/tests/test_forms.py +++ b/netbox/dcim/tests/test_forms.py @@ -22,12 +22,12 @@ class DeviceTestCase(TestCase): device_type = DeviceType.objects.create( 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' ) Platform.objects.create(name='Platform 1', slug='platform-1') 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_group = ClusterGroup.objects.create(name='Cluster Group 1', slug='cluster-group-1') @@ -36,7 +36,7 @@ class DeviceTestCase(TestCase): def test_racked_device(self): form = DeviceForm(data={ 'name': 'New Device', - 'device_role': DeviceRole.objects.first().pk, + 'role': DeviceRole.objects.first().pk, 'tenant': None, 'manufacturer': Manufacturer.objects.first().pk, 'device_type': DeviceType.objects.first().pk, @@ -53,7 +53,7 @@ class DeviceTestCase(TestCase): def test_racked_device_occupied(self): form = DeviceForm(data={ 'name': 'test', - 'device_role': DeviceRole.objects.first().pk, + 'role': DeviceRole.objects.first().pk, 'tenant': None, 'manufacturer': Manufacturer.objects.first().pk, 'device_type': DeviceType.objects.first().pk, @@ -70,7 +70,7 @@ class DeviceTestCase(TestCase): def test_non_racked_device(self): form = DeviceForm(data={ 'name': 'New Device', - 'device_role': DeviceRole.objects.first().pk, + 'role': DeviceRole.objects.first().pk, 'tenant': None, 'manufacturer': Manufacturer.objects.first().pk, 'device_type': DeviceType.objects.first().pk, @@ -87,7 +87,7 @@ class DeviceTestCase(TestCase): def test_non_racked_device_with_face(self): form = DeviceForm(data={ 'name': 'New Device', - 'device_role': DeviceRole.objects.first().pk, + 'role': DeviceRole.objects.first().pk, 'tenant': None, 'manufacturer': Manufacturer.objects.first().pk, 'device_type': DeviceType.objects.first().pk, @@ -103,7 +103,7 @@ class DeviceTestCase(TestCase): def test_non_racked_device_with_position(self): form = DeviceForm(data={ 'name': 'New Device', - 'device_role': DeviceRole.objects.first().pk, + 'role': DeviceRole.objects.first().pk, 'tenant': None, 'manufacturer': Manufacturer.objects.first().pk, 'device_type': DeviceType.objects.first().pk, diff --git a/netbox/dcim/tests/test_models.py b/netbox/dcim/tests/test_models.py index e9a577648..2e5ae0d5c 100644 --- a/netbox/dcim/tests/test_models.py +++ b/netbox/dcim/tests/test_models.py @@ -25,7 +25,7 @@ class LocationTestCase(TestCase): device_type = DeviceType.objects.create( 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' ) @@ -45,14 +45,14 @@ class LocationTestCase(TestCase): location=location_a1, name='Device 1', device_type=device_type, - device_role=device_role + role=role ) device2 = Device.objects.create( site=site_a, location=location_a2, name='Device 2', device_type=device_type, - device_role=device_role + role=role ) powerpanel1 = PowerPanel.objects.create(site=site_a, location=location_a1, name='Power Panel 1') @@ -114,7 +114,7 @@ class RackTestCase(TestCase): device1 = Device( name='Device 1', device_type=DeviceType.objects.first(), - device_role=DeviceRole.objects.first(), + role=DeviceRole.objects.first(), site=site, rack=rack, position=43, @@ -147,7 +147,7 @@ class RackTestCase(TestCase): device1 = Device( name='TestSwitch1', device_type=DeviceType.objects.first(), - device_role=DeviceRole.objects.first(), + role=DeviceRole.objects.first(), site=site, rack=rack, position=10.0, @@ -189,7 +189,7 @@ class RackTestCase(TestCase): Device( name='Device 1', - device_role=DeviceRole.objects.first(), + role=DeviceRole.objects.first(), device_type=DeviceType.objects.first(), site=site, rack=rack @@ -202,7 +202,7 @@ class RackTestCase(TestCase): rack = Rack.objects.first() attrs = { 'device_type': DeviceType.objects.get(u_height=0.5), - 'device_role': DeviceRole.objects.first(), + 'role': DeviceRole.objects.first(), 'site': Site.objects.first(), 'rack': rack, 'face': DeviceFaceChoices.FACE_FRONT, @@ -228,7 +228,7 @@ class RackTestCase(TestCase): site=site_a, rack=rack1, device_type=DeviceType.objects.first(), - device_role=DeviceRole.objects.first() + role=DeviceRole.objects.first() ) # Move Rack1 to Site B @@ -244,14 +244,16 @@ class DeviceTestCase(TestCase): @classmethod 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') device_type = DeviceType.objects.create( manufacturer=manufacturer, model='Test Device Type 1', slug='test-device-type-1' ) - device_role = DeviceRole.objects.create( - name='Test Device Role 1', slug='test-device-role-1', color='ff0000' + roles = ( + 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 ConsolePortTemplate( @@ -319,7 +321,7 @@ class DeviceTestCase(TestCase): d = Device( site=Site.objects.first(), device_type=DeviceType.objects.first(), - device_role=DeviceRole.objects.first(), + role=DeviceRole.objects.first(), name='Test Device 1' ) d.save() @@ -385,7 +387,7 @@ class DeviceTestCase(TestCase): device1 = Device( site=Site.objects.first(), device_type=DeviceType.objects.first(), - device_role=DeviceRole.objects.first(), + role=DeviceRole.objects.first(), name=None ) device1.save() @@ -393,7 +395,7 @@ class DeviceTestCase(TestCase): device2 = Device( site=device1.site, device_type=device1.device_type, - device_role=device1.device_role, + role=device1.role, name=None ) device2.full_clean() @@ -406,7 +408,7 @@ class DeviceTestCase(TestCase): device1 = Device( site=Site.objects.first(), device_type=DeviceType.objects.first(), - device_role=DeviceRole.objects.first(), + role=DeviceRole.objects.first(), name='device 1' ) device1.save() @@ -414,7 +416,7 @@ class DeviceTestCase(TestCase): device2 = Device( site=device1.site, device_type=device1.device_type, - device_role=device1.device_role, + role=device1.role, name='DEVICE 1' ) @@ -427,7 +429,7 @@ class DeviceTestCase(TestCase): device1 = Device( site=Site.objects.first(), device_type=DeviceType.objects.first(), - device_role=DeviceRole.objects.first(), + role=DeviceRole.objects.first(), name='Test Device 1' ) device1.save() @@ -435,7 +437,7 @@ class DeviceTestCase(TestCase): device2 = Device( site=device1.site, device_type=device1.device_type, - device_role=device1.device_role, + role=device1.role, name=device1.name ) @@ -458,6 +460,30 @@ class DeviceTestCase(TestCase): device2.full_clean() 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): @@ -469,14 +495,14 @@ class CableTestCase(TestCase): devicetype = DeviceType.objects.create( 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' ) 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( - 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') interface2 = Interface.objects.create(device=device2, name='eth0') @@ -485,7 +511,7 @@ class CableTestCase(TestCase): power_port1 = PowerPort.objects.create(device=device2, name='psu1') 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') front_port1 = FrontPort.objects.create( @@ -626,11 +652,11 @@ class VirtualDeviceContextTestCase(TestCase): devicetype = DeviceType.objects.create( 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' ) 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): diff --git a/netbox/dcim/tests/test_natural_ordering.py b/netbox/dcim/tests/test_natural_ordering.py index 8edaf0a90..599fc955f 100644 --- a/netbox/dcim/tests/test_natural_ordering.py +++ b/netbox/dcim/tests/test_natural_ordering.py @@ -13,11 +13,11 @@ class NaturalOrderingTestCase(TestCase): devicetype = DeviceType.objects.create( 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' ) 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): diff --git a/netbox/dcim/tests/test_views.py b/netbox/dcim/tests/test_views.py index cca6b3f02..aff4a65b5 100644 --- a/netbox/dcim/tests/test_views.py +++ b/netbox/dcim/tests/test_views.py @@ -1554,12 +1554,12 @@ class DeviceRoleTestCase(ViewTestCases.OrganizationalObjectViewTestCase): @classmethod def setUpTestData(cls): - device_roles = ( + roles = ( DeviceRole(name='Device Role 1', slug='device-role-1'), DeviceRole(name='Device Role 2', slug='device-role-2'), 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') @@ -1581,9 +1581,9 @@ class DeviceRoleTestCase(ViewTestCases.OrganizationalObjectViewTestCase): cls.csv_update_data = ( "id,name,description", - f"{device_roles[0].pk},Device Role 7,New description7", - f"{device_roles[1].pk},Device Role 8,New description8", - f"{device_roles[2].pk},Device Role 9,New description9", + f"{roles[0].pk},Device Role 7,New description7", + f"{roles[1].pk},Device Role 8,New description8", + f"{roles[2].pk},Device Role 9,New description9", ) cls.bulk_edit_data = { @@ -1665,11 +1665,11 @@ class DeviceTestCase(ViewTestCases.PrimaryObjectViewTestCase): ) DeviceType.objects.bulk_create(devicetypes) - deviceroles = ( + roles = ( DeviceRole(name='Device Role 1', slug='device-role-1'), DeviceRole(name='Device Role 2', slug='device-role-2'), ) - DeviceRole.objects.bulk_create(deviceroles) + DeviceRole.objects.bulk_create(roles) platforms = ( Platform(name='Platform 1', slug='platform-1'), @@ -1678,9 +1678,9 @@ class DeviceTestCase(ViewTestCases.PrimaryObjectViewTestCase): Platform.objects.bulk_create(platforms) 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 2', 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], 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], role=roles[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) @@ -1690,7 +1690,7 @@ class DeviceTestCase(ViewTestCases.PrimaryObjectViewTestCase): cls.form_data = { 'device_type': devicetypes[1].pk, - 'device_role': deviceroles[1].pk, + 'role': roles[1].pk, 'tenant': None, 'platform': platforms[1].pk, 'name': 'Device X', @@ -1715,7 +1715,7 @@ class DeviceTestCase(ViewTestCases.PrimaryObjectViewTestCase): } 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 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", @@ -1730,7 +1730,7 @@ class DeviceTestCase(ViewTestCases.PrimaryObjectViewTestCase): cls.bulk_edit_data = { 'device_type': devicetypes[1].pk, - 'device_role': deviceroles[1].pk, + 'role': roles[1].pk, 'tenant': None, 'platform': platforms[1].pk, 'serial': '123456', @@ -2909,14 +2909,14 @@ class CableTestCase( site = Site.objects.create(name='Site 1', slug='site-1') manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1') 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') devices = ( - Device(name='Device 1', site=site, device_type=devicetype, device_role=devicerole), - Device(name='Device 2', site=site, device_type=devicetype, device_role=devicerole), - Device(name='Device 3', site=site, device_type=devicetype, device_role=devicerole), - Device(name='Device 4', 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, role=role), + Device(name='Device 3', site=site, device_type=devicetype, role=role), + Device(name='Device 4', site=site, device_type=devicetype, role=role), ) Device.objects.bulk_create(devices) @@ -3016,23 +3016,23 @@ class VirtualChassisTestCase(ViewTestCases.PrimaryObjectViewTestCase): device_type = DeviceType.objects.create( 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' ) devices = ( - Device(device_type=device_type, device_role=device_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, device_role=device_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, device_role=device_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, device_role=device_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, device_role=device_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, device_role=device_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 1', site=site), + Device(device_type=device_type, role=role, name='Device 2', site=site), + Device(device_type=device_type, role=role, name='Device 3', site=site), + Device(device_type=device_type, role=role, name='Device 4', site=site), + Device(device_type=device_type, role=role, name='Device 5', site=site), + Device(device_type=device_type, role=role, name='Device 6', site=site), + Device(device_type=device_type, role=role, name='Device 7', site=site), + Device(device_type=device_type, role=role, name='Device 8', site=site), + Device(device_type=device_type, role=role, name='Device 9', site=site), + Device(device_type=device_type, role=role, name='Device 10', site=site), + Device(device_type=device_type, role=role, name='Device 11', site=site), + Device(device_type=device_type, role=role, name='Device 12', site=site), ) Device.objects.bulk_create(devices) @@ -3211,11 +3211,11 @@ class PowerFeedTestCase(ViewTestCases.PrimaryObjectViewTestCase): device_type = DeviceType.objects.create( 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' ) 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() diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py index 9ac5623e7..c7255f5f2 100644 --- a/netbox/dcim/views.py +++ b/netbox/dcim/views.py @@ -407,7 +407,7 @@ class SiteView(generic.ObjectView): site=instance, rack__isnull=True, parent_bay__isnull=True - ).prefetch_related('device_type__manufacturer', 'parent_bay', 'device_role') + ).prefetch_related('device_type__manufacturer', 'parent_bay', 'role') return { 'related_models': related_models, @@ -489,7 +489,7 @@ class LocationView(generic.ObjectView): location=instance, rack__isnull=True, parent_bay__isnull=True - ).prefetch_related('device_type__manufacturer', 'parent_bay', 'device_role') + ).prefetch_related('device_type__manufacturer', 'parent_bay', 'role') return { 'related_models': related_models, @@ -1721,7 +1721,7 @@ class InventoryItemTemplateBulkDeleteView(generic.BulkDeleteView): class DeviceRoleListView(generic.ObjectListView): queryset = DeviceRole.objects.annotate( - device_count=count_related(Device, 'device_role'), + device_count=count_related(Device, 'role'), vm_count=count_related(VirtualMachine, 'role') ) filterset = filtersets.DeviceRoleFilterSet @@ -1735,7 +1735,7 @@ class DeviceRoleView(generic.ObjectView): def get_extra_context(self, request, instance): 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'), ) @@ -1762,7 +1762,7 @@ class DeviceRoleBulkImportView(generic.BulkImportView): class DeviceRoleBulkEditView(generic.BulkEditView): queryset = DeviceRole.objects.annotate( - device_count=count_related(Device, 'device_role'), + device_count=count_related(Device, 'role'), vm_count=count_related(VirtualMachine, 'role') ) filterset = filtersets.DeviceRoleFilterSet @@ -1772,7 +1772,7 @@ class DeviceRoleBulkEditView(generic.BulkEditView): class DeviceRoleBulkDeleteView(generic.BulkDeleteView): queryset = DeviceRole.objects.annotate( - device_count=count_related(Device, 'device_role'), + device_count=count_related(Device, 'role'), vm_count=count_related(VirtualMachine, 'role') ) filterset = filtersets.DeviceRoleFilterSet diff --git a/netbox/extras/querysets.py b/netbox/extras/querysets.py index 7b71fa656..478dedf92 100644 --- a/netbox/extras/querysets.py +++ b/netbox/extras/querysets.py @@ -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 """ - # `device_role` for Device; `role` for VirtualMachine - role = getattr(obj, 'device_role', None) or obj.role + role = obj.role # Device type and location assignment is relevant only for Devices device_type = getattr(obj, 'device_type', None) @@ -121,7 +120,7 @@ class ConfigContextModelQuerySet(RestrictedQuerySet): if self.model._meta.model_name == 'device': 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(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) region_field = 'site__region' sitegroup_field = 'site__group' diff --git a/netbox/extras/tests/test_api.py b/netbox/extras/tests/test_api.py index ad50d3562..255457f21 100644 --- a/netbox/extras/tests/test_api.py +++ b/netbox/extras/tests/test_api.py @@ -579,9 +579,9 @@ class ConfigContextTest(APIViewTestCases.APIViewTestCase): """ manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-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') - 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) rendered_context = device.get_config_context() diff --git a/netbox/extras/tests/test_models.py b/netbox/extras/tests/test_models.py index 0d1dc0e51..ef9398401 100644 --- a/netbox/extras/tests/test_models.py +++ b/netbox/extras/tests/test_models.py @@ -44,7 +44,7 @@ class ConfigContextTest(TestCase): manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-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') sitegroup = SiteGroup.objects.create(name='Site Group') site = Site.objects.create(name='Site 1', slug='site-1', region=region, group=sitegroup) @@ -58,7 +58,7 @@ class ConfigContextTest(TestCase): Device.objects.create( name='Device 1', device_type=devicetype, - device_role=devicerole, + role=role, site=site, location=location ) @@ -252,7 +252,7 @@ class ConfigContextTest(TestCase): location=location, tenant=tenant, platform=platform, - device_role=DeviceRole.objects.first(), + role=DeviceRole.objects.first(), device_type=DeviceType.objects.first() ) device.tags.add(tag) @@ -382,7 +382,7 @@ class ConfigContextTest(TestCase): site=site, tenant=tenant, platform=platform, - device_role=DeviceRole.objects.first(), + role=DeviceRole.objects.first(), device_type=DeviceType.objects.first() ) device.tags.set(tags) @@ -430,7 +430,7 @@ class ConfigContextTest(TestCase): site=site, tenant=tenant, platform=platform, - device_role=DeviceRole.objects.first(), + role=DeviceRole.objects.first(), device_type=DeviceType.objects.first() ) device.tags.set([tag1, tag2]) diff --git a/netbox/ipam/tests/test_api.py b/netbox/ipam/tests/test_api.py index b6aeccc1a..24d219ca0 100644 --- a/netbox/ipam/tests/test_api.py +++ b/netbox/ipam/tests/test_api.py @@ -1009,11 +1009,11 @@ class ServiceTest(APIViewTestCases.APIViewTestCase): site = Site.objects.create(name='Site 1', slug='site-1') manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-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 = ( - Device(name='Device 1', site=site, device_type=devicetype, device_role=devicerole), - Device(name='Device 2', 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, role=role), ) Device.objects.bulk_create(devices) diff --git a/netbox/ipam/tests/test_filtersets.py b/netbox/ipam/tests/test_filtersets.py index 3d9a66567..0e17a9ce2 100644 --- a/netbox/ipam/tests/test_filtersets.py +++ b/netbox/ipam/tests/test_filtersets.py @@ -825,12 +825,12 @@ class IPAddressTestCase(TestCase, ChangeLoggedFilterSetTests): site = Site.objects.create(name='Site 1', slug='site-1') manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-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 = ( - Device(device_type=device_type, name='Device 1', site=site, device_role=device_role), - Device(device_type=device_type, name='Device 2', site=site, device_role=device_role), - Device(device_type=device_type, name='Device 3', 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, role=role), + Device(device_type=device_type, name='Device 3', site=site, role=role), ) Device.objects.bulk_create(devices) @@ -1282,11 +1282,11 @@ class VLANTestCase(TestCase, ChangeLoggedFilterSetTests): manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-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 = ( - Device(name='Device 1', site=sites[0], location=locations[0], rack=racks[0], 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, device_role=device_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 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, role=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) @@ -1516,12 +1516,12 @@ class ServiceTestCase(TestCase, ChangeLoggedFilterSetTests): site = Site.objects.create(name='Site 1', slug='site-1') manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-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 = ( - Device(device_type=device_type, name='Device 1', site=site, device_role=device_role), - Device(device_type=device_type, name='Device 2', site=site, device_role=device_role), - Device(device_type=device_type, name='Device 3', 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, role=role), + Device(device_type=device_type, name='Device 3', site=site, role=role), ) Device.objects.bulk_create(devices) diff --git a/netbox/ipam/tests/test_models.py b/netbox/ipam/tests/test_models.py index 94a315be5..06cd9b445 100644 --- a/netbox/ipam/tests/test_models.py +++ b/netbox/ipam/tests/test_models.py @@ -549,12 +549,12 @@ class TestL2VPNTermination(TestCase): site = Site.objects.create(name='Site 1') manufacturer = Manufacturer.objects.create(name='Manufacturer 1') 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( name='Device 1', site=site, device_type=device_type, - device_role=device_role, + role=role, status='active' ) diff --git a/netbox/ipam/tests/test_views.py b/netbox/ipam/tests/test_views.py index c9128c0f6..afc97cc63 100644 --- a/netbox/ipam/tests/test_views.py +++ b/netbox/ipam/tests/test_views.py @@ -909,8 +909,8 @@ class ServiceTestCase(ViewTestCases.PrimaryObjectViewTestCase): site = Site.objects.create(name='Site 1', slug='site-1') manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1') devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1') - devicerole = 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) + role = DeviceRole.objects.create(name='Device Role 1', slug='device-role-1') + device = Device.objects.create(name='Device 1', site=site, device_type=devicetype, role=role) services = ( Service(device=device, name='Service 1', protocol=ServiceProtocolChoices.PROTOCOL_TCP, ports=[101]), diff --git a/netbox/templates/dcim/device.html b/netbox/templates/dcim/device.html index ddc17262f..663447bf7 100644 --- a/netbox/templates/dcim/device.html +++ b/netbox/templates/dcim/device.html @@ -202,7 +202,7 @@ {% trans "Role" %} - {{ object.device_role|linkify }} + {{ object.role|linkify }} {% trans "Platform" %} diff --git a/netbox/templates/dcim/device_edit.html b/netbox/templates/dcim/device_edit.html index 75a42c8ac..4dbb2f477 100644 --- a/netbox/templates/dcim/device_edit.html +++ b/netbox/templates/dcim/device_edit.html @@ -10,7 +10,7 @@
{% trans "Device" %}
{% render_field form.name %} - {% render_field form.device_role %} + {% render_field form.role %} {% render_field form.description %} {% render_field form.tags %} diff --git a/netbox/templates/dcim/devicerole.html b/netbox/templates/dcim/devicerole.html index 1ffdc9e85..8bc10bfc2 100644 --- a/netbox/templates/dcim/devicerole.html +++ b/netbox/templates/dcim/devicerole.html @@ -10,7 +10,7 @@ {% block extra_controls %} {% if perms.dcim.add_device %} - + {% trans "Add Device" %} {% endif %} diff --git a/netbox/templates/dcim/inc/nonracked_devices.html b/netbox/templates/dcim/inc/nonracked_devices.html index 08750fd49..88a37987b 100644 --- a/netbox/templates/dcim/inc/nonracked_devices.html +++ b/netbox/templates/dcim/inc/nonracked_devices.html @@ -19,7 +19,7 @@ {{ device }} - {{ device.device_role }} + {{ device.role }} {{ device.device_type }} {% if device.parent_bay %} {{ device.parent_bay.device|linkify }} diff --git a/netbox/templates/dcim/platform.html b/netbox/templates/dcim/platform.html index f3fb97e0e..a974f9f93 100644 --- a/netbox/templates/dcim/platform.html +++ b/netbox/templates/dcim/platform.html @@ -13,7 +13,7 @@ {% block extra_controls %} {% if perms.dcim.add_device %} - + {% trans "Add Device" %} {% endif %} diff --git a/netbox/utilities/testing/utils.py b/netbox/utilities/testing/utils.py index 87fc3319c..fd6d72e27 100644 --- a/netbox/utilities/testing/utils.py +++ b/netbox/utilities/testing/utils.py @@ -44,7 +44,7 @@ def create_test_device(name, site=None, **attrs): manufacturer, _ = Manufacturer.objects.get_or_create(name='Manufacturer 1', slug='manufacturer-1') 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') - 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 diff --git a/netbox/utilities/tests/test_filters.py b/netbox/utilities/tests/test_filters.py index 334f270dc..80d611375 100644 --- a/netbox/utilities/tests/test_filters.py +++ b/netbox/utilities/tests/test_filters.py @@ -360,12 +360,12 @@ class DynamicFilterLookupExpressionTest(TestCase): ) DeviceType.objects.bulk_create(device_types) - device_roles = ( + roles = ( DeviceRole(name='Device Role 1', slug='device-role-1'), DeviceRole(name='Device Role 2', slug='device-role-2'), DeviceRole(name='Device Role 3', slug='device-role-3'), ) - DeviceRole.objects.bulk_create(device_roles) + DeviceRole.objects.bulk_create(roles) platforms = ( Platform(name='Platform 1', slug='platform-1'), @@ -401,9 +401,9 @@ class DynamicFilterLookupExpressionTest(TestCase): Rack.objects.bulk_create(racks) 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 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 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 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], 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], 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) diff --git a/netbox/virtualization/tests/test_views.py b/netbox/virtualization/tests/test_views.py index 32382ee3b..a5d831d7e 100644 --- a/netbox/virtualization/tests/test_views.py +++ b/netbox/virtualization/tests/test_views.py @@ -180,11 +180,11 @@ class VirtualMachineTestCase(ViewTestCases.PrimaryObjectViewTestCase): @classmethod def setUpTestData(cls): - deviceroles = ( + roles = ( DeviceRole(name='Device Role 1', slug='device-role-1'), DeviceRole(name='Device Role 2', slug='device-role-2'), ) - DeviceRole.objects.bulk_create(deviceroles) + DeviceRole.objects.bulk_create(roles) platforms = ( Platform(name='Platform 1', slug='platform-1'), @@ -212,9 +212,9 @@ class VirtualMachineTestCase(ViewTestCases.PrimaryObjectViewTestCase): ) 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 2', 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=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=roles[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) @@ -228,7 +228,7 @@ class VirtualMachineTestCase(ViewTestCases.PrimaryObjectViewTestCase): 'platform': platforms[1].pk, 'name': 'Virtual Machine X', 'status': VirtualMachineStatusChoices.STATUS_STAGED, - 'role': deviceroles[1].pk, + 'role': roles[1].pk, 'primary_ip4': None, 'primary_ip6': None, 'vcpus': 4, @@ -260,7 +260,7 @@ class VirtualMachineTestCase(ViewTestCases.PrimaryObjectViewTestCase): 'tenant': None, 'platform': platforms[1].pk, 'status': VirtualMachineStatusChoices.STATUS_STAGED, - 'role': deviceroles[1].pk, + 'role': roles[1].pk, 'vcpus': 8, 'memory': 65535, 'disk': 8000, @@ -289,12 +289,12 @@ class VMInterfaceTestCase(ViewTestCases.DeviceComponentViewTestCase): def setUpTestData(cls): 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') cluster = Cluster.objects.create(name='Cluster 1', type=clustertype, site=site) virtualmachines = ( - VirtualMachine(name='Virtual Machine 1', site=site, cluster=cluster, role=devicerole), - VirtualMachine(name='Virtual Machine 2', 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=role), ) VirtualMachine.objects.bulk_create(virtualmachines)