From 583ab252cb91d177df8858f5a86ed853df43239a Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 4 Jun 2024 10:34:43 -0700 Subject: [PATCH 01/10] 7537 add serial number to virtual machines --- .../virtualization/api/serializers_/virtualmachines.py | 2 +- netbox/virtualization/filtersets.py | 5 ++++- netbox/virtualization/forms/bulk_import.py | 2 +- netbox/virtualization/forms/filtersets.py | 6 +++++- netbox/virtualization/forms/model_forms.py | 6 +++--- netbox/virtualization/models/virtualmachines.py | 5 +++++ netbox/virtualization/tables/virtualmachines.py | 2 +- netbox/virtualization/tests/test_filtersets.py | 10 ++++++++-- netbox/virtualization/tests/test_views.py | 1 + 9 files changed, 29 insertions(+), 10 deletions(-) diff --git a/netbox/virtualization/api/serializers_/virtualmachines.py b/netbox/virtualization/api/serializers_/virtualmachines.py index 53146e44ab3..77f63dd2ba2 100644 --- a/netbox/virtualization/api/serializers_/virtualmachines.py +++ b/netbox/virtualization/api/serializers_/virtualmachines.py @@ -52,7 +52,7 @@ class Meta: 'id', 'url', 'display', 'name', 'status', 'site', 'cluster', 'device', 'role', 'tenant', 'platform', 'primary_ip', 'primary_ip4', 'primary_ip6', 'vcpus', 'memory', 'disk', 'description', 'comments', 'config_template', 'local_context_data', 'tags', 'custom_fields', 'created', 'last_updated', - 'interface_count', 'virtual_disk_count', + 'interface_count', 'virtual_disk_count', 'serial_number', ] brief_fields = ('id', 'url', 'display', 'name', 'description') diff --git a/netbox/virtualization/filtersets.py b/netbox/virtualization/filtersets.py index 55fadd1af42..d3e539ef7e6 100644 --- a/netbox/virtualization/filtersets.py +++ b/netbox/virtualization/filtersets.py @@ -240,7 +240,10 @@ class VirtualMachineFilterSet( class Meta: model = VirtualMachine - fields = ('id', 'cluster', 'vcpus', 'memory', 'disk', 'description', 'interface_count', 'virtual_disk_count') + fields = ( + 'id', 'cluster', 'vcpus', 'memory', 'disk', 'description', 'interface_count', 'virtual_disk_count', + 'serial_number' + ) def search(self, queryset, name, value): if not value.strip(): diff --git a/netbox/virtualization/forms/bulk_import.py b/netbox/virtualization/forms/bulk_import.py index 5d44ddceba9..993da1fd522 100644 --- a/netbox/virtualization/forms/bulk_import.py +++ b/netbox/virtualization/forms/bulk_import.py @@ -137,7 +137,7 @@ class Meta: model = VirtualMachine fields = ( 'name', 'status', 'role', 'site', 'cluster', 'device', 'tenant', 'platform', 'vcpus', 'memory', 'disk', - 'description', 'config_template', 'comments', 'tags', + 'description', 'serial_number', 'config_template', 'comments', 'tags', ) diff --git a/netbox/virtualization/forms/filtersets.py b/netbox/virtualization/forms/filtersets.py index 1cb652a1bf8..6d544989c58 100644 --- a/netbox/virtualization/forms/filtersets.py +++ b/netbox/virtualization/forms/filtersets.py @@ -100,7 +100,7 @@ class VirtualMachineFilterForm( FieldSet('region_id', 'site_group_id', 'site_id', name=_('Location')), FieldSet( 'status', 'role_id', 'platform_id', 'mac_address', 'has_primary_ip', 'config_template_id', - 'local_context_data', name=_('Attributes') + 'local_context_data', 'serial_number', name=_('Attributes') ), FieldSet('tenant_group_id', 'tenant_id', name=_('Tenant')), FieldSet('contact', 'contact_role', 'contact_group', name=_('Contacts')), @@ -178,6 +178,10 @@ class VirtualMachineFilterForm( choices=BOOLEAN_WITH_BLANK_CHOICES ) ) + serial_number = forms.CharField( + required=False, + label=_('Serial number') + ) config_template_id = DynamicModelMultipleChoiceField( queryset=ConfigTemplate.objects.all(), required=False, diff --git a/netbox/virtualization/forms/model_forms.py b/netbox/virtualization/forms/model_forms.py index bfdfc9ada04..01f943679d6 100644 --- a/netbox/virtualization/forms/model_forms.py +++ b/netbox/virtualization/forms/model_forms.py @@ -217,7 +217,7 @@ class VirtualMachineForm(TenancyForm, NetBoxModelForm): comments = CommentField() fieldsets = ( - FieldSet('name', 'role', 'status', 'description', 'tags', name=_('Virtual Machine')), + FieldSet('name', 'role', 'status', 'description', 'serial_number', 'tags', name=_('Virtual Machine')), FieldSet('site', 'cluster', 'device', name=_('Site/Cluster')), FieldSet('tenant_group', 'tenant', name=_('Tenancy')), FieldSet('platform', 'primary_ip4', 'primary_ip6', 'config_template', name=_('Management')), @@ -229,8 +229,8 @@ class Meta: model = VirtualMachine fields = [ 'name', 'status', 'site', 'cluster', 'device', 'role', 'tenant_group', 'tenant', 'platform', 'primary_ip4', - 'primary_ip6', 'vcpus', 'memory', 'disk', 'description', 'comments', 'tags', 'local_context_data', - 'config_template', + 'primary_ip6', 'vcpus', 'memory', 'disk', 'description', 'serial_number', 'comments', 'tags', + 'local_context_data', 'config_template', ] def __init__(self, *args, **kwargs): diff --git a/netbox/virtualization/models/virtualmachines.py b/netbox/virtualization/models/virtualmachines.py index 92f1a947234..1d8db591ca9 100644 --- a/netbox/virtualization/models/virtualmachines.py +++ b/netbox/virtualization/models/virtualmachines.py @@ -127,6 +127,11 @@ class VirtualMachine(ContactsMixin, ImageAttachmentsMixin, RenderConfigMixin, Co null=True, verbose_name=_('disk (GB)') ) + serial_number = models.CharField( + verbose_name=_('serial number'), + blank=True, + max_length=50 + ) # Counter fields interface_count = CounterCacheField( diff --git a/netbox/virtualization/tables/virtualmachines.py b/netbox/virtualization/tables/virtualmachines.py index 9d194d268b8..e26fc37b63b 100644 --- a/netbox/virtualization/tables/virtualmachines.py +++ b/netbox/virtualization/tables/virtualmachines.py @@ -112,7 +112,7 @@ class Meta(NetBoxTable.Meta): fields = ( 'pk', 'id', 'name', 'status', 'site', 'cluster', 'device', 'role', 'tenant', 'tenant_group', 'vcpus', 'memory', 'disk', 'primary_ip4', 'primary_ip6', 'primary_ip', 'description', 'comments', 'config_template', - 'contacts', 'tags', 'created', 'last_updated', + 'serial_number', 'contacts', 'tags', 'created', 'last_updated', ) default_columns = ( 'pk', 'name', 'status', 'site', 'cluster', 'role', 'tenant', 'vcpus', 'memory', 'disk', 'primary_ip', diff --git a/netbox/virtualization/tests/test_filtersets.py b/netbox/virtualization/tests/test_filtersets.py index ff55aba10b8..2c7949c067f 100644 --- a/netbox/virtualization/tests/test_filtersets.py +++ b/netbox/virtualization/tests/test_filtersets.py @@ -327,7 +327,8 @@ def setUpTestData(cls): memory=1, disk=1, description='foobar1', - local_context_data={"foo": 123} + local_context_data={"foo": 123}, + serial_number='111-aaa' ), VirtualMachine( name='Virtual Machine 2', @@ -341,7 +342,8 @@ def setUpTestData(cls): vcpus=2, memory=2, disk=2, - description='foobar2' + description='foobar2', + serial_number='222-bbb' ), VirtualMachine( name='Virtual Machine 3', @@ -518,6 +520,10 @@ def test_primary_ip6(self): params = {'primary_ip6_id': [addresses[2].pk]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 0) + def test_serial_number(self): + params = {'serial_number': ['111-aaa', '222-bbb']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + class VMInterfaceTestCase(TestCase, ChangeLoggedFilterSetTests): queryset = VMInterface.objects.all() diff --git a/netbox/virtualization/tests/test_views.py b/netbox/virtualization/tests/test_views.py index ed6bef1e4b7..eb4ecd37b3b 100644 --- a/netbox/virtualization/tests/test_views.py +++ b/netbox/virtualization/tests/test_views.py @@ -234,6 +234,7 @@ def setUpTestData(cls): 'vcpus': 4, 'memory': 32768, 'disk': 4000, + 'serial_number': 'aaa-111', 'comments': 'Some comments', 'tags': [t.pk for t in tags], 'local_context_data': None, From 26084f293c10c44970c819eb14261d09bdc2eefb Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 4 Jun 2024 11:01:15 -0700 Subject: [PATCH 02/10] 7537 add migration --- .../0039_virtualmachine_serial_number.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 netbox/virtualization/migrations/0039_virtualmachine_serial_number.py diff --git a/netbox/virtualization/migrations/0039_virtualmachine_serial_number.py b/netbox/virtualization/migrations/0039_virtualmachine_serial_number.py new file mode 100644 index 00000000000..9539828ac5e --- /dev/null +++ b/netbox/virtualization/migrations/0039_virtualmachine_serial_number.py @@ -0,0 +1,18 @@ +# Generated by Django 5.0.6 on 2024-06-04 17:09 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('virtualization', '0038_virtualdisk'), + ] + + operations = [ + migrations.AddField( + model_name='virtualmachine', + name='serial_number', + field=models.CharField(blank=True, max_length=50), + ), + ] From 38b86f72ff344384317e829e086cbc9ef125b2bc Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 4 Jun 2024 11:03:34 -0700 Subject: [PATCH 03/10] 7537 add sn to search --- netbox/virtualization/filtersets.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/netbox/virtualization/filtersets.py b/netbox/virtualization/filtersets.py index d3e539ef7e6..944ae2ad230 100644 --- a/netbox/virtualization/filtersets.py +++ b/netbox/virtualization/filtersets.py @@ -253,7 +253,8 @@ def search(self, queryset, name, value): Q(description__icontains=value) | Q(comments__icontains=value) | Q(primary_ip4__address__startswith=value) | - Q(primary_ip6__address__startswith=value) + Q(primary_ip6__address__startswith=value) | + Q(serial_number__icontains=value) ) def _has_primary_ip(self, queryset, name, value): From 5116d21b2b7623d7c287d638d6f691f89ac3b716 Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 4 Jun 2024 11:04:36 -0700 Subject: [PATCH 04/10] 7537 add to model documentation --- docs/models/virtualization/virtualmachine.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/models/virtualization/virtualmachine.md b/docs/models/virtualization/virtualmachine.md index 769d49154e2..7a801ca656f 100644 --- a/docs/models/virtualization/virtualmachine.md +++ b/docs/models/virtualization/virtualmachine.md @@ -51,3 +51,8 @@ The amount of running memory provisioned, in megabytes. ### Disk The amount of disk storage provisioned, in gigabytes. + +### Serial Number + +Optional serial number assigned to this VM. + From 783b16ae5daeaba2224a7bfcbde5c9c0883bda16 Mon Sep 17 00:00:00 2001 From: Arthur Date: Mon, 10 Jun 2024 10:25:52 -0700 Subject: [PATCH 05/10] 8984 move serializer field --- netbox/virtualization/api/serializers_/virtualmachines.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/netbox/virtualization/api/serializers_/virtualmachines.py b/netbox/virtualization/api/serializers_/virtualmachines.py index 77f63dd2ba2..737d2519da7 100644 --- a/netbox/virtualization/api/serializers_/virtualmachines.py +++ b/netbox/virtualization/api/serializers_/virtualmachines.py @@ -49,10 +49,10 @@ class VirtualMachineSerializer(NetBoxModelSerializer): class Meta: model = VirtualMachine fields = [ - 'id', 'url', 'display', 'name', 'status', 'site', 'cluster', 'device', 'role', 'tenant', 'platform', - 'primary_ip', 'primary_ip4', 'primary_ip6', 'vcpus', 'memory', 'disk', 'description', 'comments', - 'config_template', 'local_context_data', 'tags', 'custom_fields', 'created', 'last_updated', - 'interface_count', 'virtual_disk_count', 'serial_number', + 'id', 'url', 'display', 'name', 'status', 'site', 'cluster', 'device', 'serial_number', 'role', 'tenant', + 'platform', 'primary_ip', 'primary_ip4', 'primary_ip6', 'vcpus', 'memory', 'disk', 'description', + 'comments', 'config_template', 'local_context_data', 'tags', 'custom_fields', 'created', 'last_updated', + 'interface_count', 'virtual_disk_count', ] brief_fields = ('id', 'url', 'display', 'name', 'description') From 47ebb51281bf88bab7083e30dbd2fee32d94d4f0 Mon Sep 17 00:00:00 2001 From: Arthur Date: Mon, 10 Jun 2024 10:33:53 -0700 Subject: [PATCH 06/10] 8984 add to detail view and search index --- netbox/templates/virtualization/virtualmachine.html | 4 ++++ netbox/virtualization/search.py | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/netbox/templates/virtualization/virtualmachine.html b/netbox/templates/virtualization/virtualmachine.html index 38432fdfee4..d5ded90ea69 100644 --- a/netbox/templates/virtualization/virtualmachine.html +++ b/netbox/templates/virtualization/virtualmachine.html @@ -31,6 +31,10 @@
{% trans "Virtual Machine" %}
{% trans "Description" %} {{ object.description|placeholder }} + + {% trans "Serial Number" %} + {{ object.serial_number|placeholder }} + {% trans "Tenant" %} diff --git a/netbox/virtualization/search.py b/netbox/virtualization/search.py index c72b3345bae..a6d9ffed078 100644 --- a/netbox/virtualization/search.py +++ b/netbox/virtualization/search.py @@ -40,10 +40,11 @@ class VirtualMachineIndex(SearchIndex): model = models.VirtualMachine fields = ( ('name', 100), + ('serial_number', 300), ('description', 500), ('comments', 5000), ) - display_attrs = ('site', 'cluster', 'device', 'tenant', 'platform', 'status', 'role', 'description') + display_attrs = ('site', 'cluster', 'device', 'tenant', 'platform', 'status', 'serial_number', 'role', 'description') @register_search From f817e657c6d83a2dacee354a1389e173cc976f20 Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 11 Jun 2024 09:50:26 -0700 Subject: [PATCH 07/10] 7537 serial_number -> serial --- netbox/templates/virtualization/virtualmachine.html | 2 +- netbox/virtualization/api/serializers_/virtualmachines.py | 2 +- netbox/virtualization/filtersets.py | 4 ++-- netbox/virtualization/forms/bulk_import.py | 2 +- netbox/virtualization/forms/filtersets.py | 4 ++-- netbox/virtualization/forms/model_forms.py | 4 ++-- .../migrations/0039_virtualmachine_serial_number.py | 2 +- netbox/virtualization/models/virtualmachines.py | 2 +- netbox/virtualization/search.py | 4 ++-- netbox/virtualization/tables/virtualmachines.py | 2 +- netbox/virtualization/tests/test_filtersets.py | 6 +++--- netbox/virtualization/tests/test_views.py | 2 +- 12 files changed, 18 insertions(+), 18 deletions(-) diff --git a/netbox/templates/virtualization/virtualmachine.html b/netbox/templates/virtualization/virtualmachine.html index d5ded90ea69..1591be6f232 100644 --- a/netbox/templates/virtualization/virtualmachine.html +++ b/netbox/templates/virtualization/virtualmachine.html @@ -33,7 +33,7 @@
{% trans "Virtual Machine" %}
{% trans "Serial Number" %} - {{ object.serial_number|placeholder }} + {{ object.serial|placeholder }} {% trans "Tenant" %} diff --git a/netbox/virtualization/api/serializers_/virtualmachines.py b/netbox/virtualization/api/serializers_/virtualmachines.py index 737d2519da7..d9e4f9c6fbb 100644 --- a/netbox/virtualization/api/serializers_/virtualmachines.py +++ b/netbox/virtualization/api/serializers_/virtualmachines.py @@ -49,7 +49,7 @@ class VirtualMachineSerializer(NetBoxModelSerializer): class Meta: model = VirtualMachine fields = [ - 'id', 'url', 'display', 'name', 'status', 'site', 'cluster', 'device', 'serial_number', 'role', 'tenant', + 'id', 'url', 'display', 'name', 'status', 'site', 'cluster', 'device', 'serial', 'role', 'tenant', 'platform', 'primary_ip', 'primary_ip4', 'primary_ip6', 'vcpus', 'memory', 'disk', 'description', 'comments', 'config_template', 'local_context_data', 'tags', 'custom_fields', 'created', 'last_updated', 'interface_count', 'virtual_disk_count', diff --git a/netbox/virtualization/filtersets.py b/netbox/virtualization/filtersets.py index 944ae2ad230..ec0831f9fc4 100644 --- a/netbox/virtualization/filtersets.py +++ b/netbox/virtualization/filtersets.py @@ -242,7 +242,7 @@ class Meta: model = VirtualMachine fields = ( 'id', 'cluster', 'vcpus', 'memory', 'disk', 'description', 'interface_count', 'virtual_disk_count', - 'serial_number' + 'serial' ) def search(self, queryset, name, value): @@ -254,7 +254,7 @@ def search(self, queryset, name, value): Q(comments__icontains=value) | Q(primary_ip4__address__startswith=value) | Q(primary_ip6__address__startswith=value) | - Q(serial_number__icontains=value) + Q(serial__icontains=value) ) def _has_primary_ip(self, queryset, name, value): diff --git a/netbox/virtualization/forms/bulk_import.py b/netbox/virtualization/forms/bulk_import.py index 993da1fd522..17efc567ab4 100644 --- a/netbox/virtualization/forms/bulk_import.py +++ b/netbox/virtualization/forms/bulk_import.py @@ -137,7 +137,7 @@ class Meta: model = VirtualMachine fields = ( 'name', 'status', 'role', 'site', 'cluster', 'device', 'tenant', 'platform', 'vcpus', 'memory', 'disk', - 'description', 'serial_number', 'config_template', 'comments', 'tags', + 'description', 'serial', 'config_template', 'comments', 'tags', ) diff --git a/netbox/virtualization/forms/filtersets.py b/netbox/virtualization/forms/filtersets.py index 6d544989c58..7c040d94856 100644 --- a/netbox/virtualization/forms/filtersets.py +++ b/netbox/virtualization/forms/filtersets.py @@ -100,7 +100,7 @@ class VirtualMachineFilterForm( FieldSet('region_id', 'site_group_id', 'site_id', name=_('Location')), FieldSet( 'status', 'role_id', 'platform_id', 'mac_address', 'has_primary_ip', 'config_template_id', - 'local_context_data', 'serial_number', name=_('Attributes') + 'local_context_data', 'serial', name=_('Attributes') ), FieldSet('tenant_group_id', 'tenant_id', name=_('Tenant')), FieldSet('contact', 'contact_role', 'contact_group', name=_('Contacts')), @@ -178,7 +178,7 @@ class VirtualMachineFilterForm( choices=BOOLEAN_WITH_BLANK_CHOICES ) ) - serial_number = forms.CharField( + serial = forms.CharField( required=False, label=_('Serial number') ) diff --git a/netbox/virtualization/forms/model_forms.py b/netbox/virtualization/forms/model_forms.py index 01f943679d6..2c60cb46fdd 100644 --- a/netbox/virtualization/forms/model_forms.py +++ b/netbox/virtualization/forms/model_forms.py @@ -217,7 +217,7 @@ class VirtualMachineForm(TenancyForm, NetBoxModelForm): comments = CommentField() fieldsets = ( - FieldSet('name', 'role', 'status', 'description', 'serial_number', 'tags', name=_('Virtual Machine')), + FieldSet('name', 'role', 'status', 'description', 'serial', 'tags', name=_('Virtual Machine')), FieldSet('site', 'cluster', 'device', name=_('Site/Cluster')), FieldSet('tenant_group', 'tenant', name=_('Tenancy')), FieldSet('platform', 'primary_ip4', 'primary_ip6', 'config_template', name=_('Management')), @@ -229,7 +229,7 @@ class Meta: model = VirtualMachine fields = [ 'name', 'status', 'site', 'cluster', 'device', 'role', 'tenant_group', 'tenant', 'platform', 'primary_ip4', - 'primary_ip6', 'vcpus', 'memory', 'disk', 'description', 'serial_number', 'comments', 'tags', + 'primary_ip6', 'vcpus', 'memory', 'disk', 'description', 'serial', 'comments', 'tags', 'local_context_data', 'config_template', ] diff --git a/netbox/virtualization/migrations/0039_virtualmachine_serial_number.py b/netbox/virtualization/migrations/0039_virtualmachine_serial_number.py index 9539828ac5e..014cb4caba1 100644 --- a/netbox/virtualization/migrations/0039_virtualmachine_serial_number.py +++ b/netbox/virtualization/migrations/0039_virtualmachine_serial_number.py @@ -12,7 +12,7 @@ class Migration(migrations.Migration): operations = [ migrations.AddField( model_name='virtualmachine', - name='serial_number', + name='serial', field=models.CharField(blank=True, max_length=50), ), ] diff --git a/netbox/virtualization/models/virtualmachines.py b/netbox/virtualization/models/virtualmachines.py index 1d8db591ca9..24f8d4390ff 100644 --- a/netbox/virtualization/models/virtualmachines.py +++ b/netbox/virtualization/models/virtualmachines.py @@ -127,7 +127,7 @@ class VirtualMachine(ContactsMixin, ImageAttachmentsMixin, RenderConfigMixin, Co null=True, verbose_name=_('disk (GB)') ) - serial_number = models.CharField( + serial = models.CharField( verbose_name=_('serial number'), blank=True, max_length=50 diff --git a/netbox/virtualization/search.py b/netbox/virtualization/search.py index a6d9ffed078..d1f192ceec2 100644 --- a/netbox/virtualization/search.py +++ b/netbox/virtualization/search.py @@ -40,11 +40,11 @@ class VirtualMachineIndex(SearchIndex): model = models.VirtualMachine fields = ( ('name', 100), - ('serial_number', 300), + ('serial', 300), ('description', 500), ('comments', 5000), ) - display_attrs = ('site', 'cluster', 'device', 'tenant', 'platform', 'status', 'serial_number', 'role', 'description') + display_attrs = ('site', 'cluster', 'device', 'tenant', 'platform', 'status', 'serial', 'role', 'description') @register_search diff --git a/netbox/virtualization/tables/virtualmachines.py b/netbox/virtualization/tables/virtualmachines.py index e26fc37b63b..7eb7c9397c6 100644 --- a/netbox/virtualization/tables/virtualmachines.py +++ b/netbox/virtualization/tables/virtualmachines.py @@ -112,7 +112,7 @@ class Meta(NetBoxTable.Meta): fields = ( 'pk', 'id', 'name', 'status', 'site', 'cluster', 'device', 'role', 'tenant', 'tenant_group', 'vcpus', 'memory', 'disk', 'primary_ip4', 'primary_ip6', 'primary_ip', 'description', 'comments', 'config_template', - 'serial_number', 'contacts', 'tags', 'created', 'last_updated', + 'serial', 'contacts', 'tags', 'created', 'last_updated', ) default_columns = ( 'pk', 'name', 'status', 'site', 'cluster', 'role', 'tenant', 'vcpus', 'memory', 'disk', 'primary_ip', diff --git a/netbox/virtualization/tests/test_filtersets.py b/netbox/virtualization/tests/test_filtersets.py index 2c7949c067f..d2e6cc05f8e 100644 --- a/netbox/virtualization/tests/test_filtersets.py +++ b/netbox/virtualization/tests/test_filtersets.py @@ -328,7 +328,7 @@ def setUpTestData(cls): disk=1, description='foobar1', local_context_data={"foo": 123}, - serial_number='111-aaa' + serial='111-aaa' ), VirtualMachine( name='Virtual Machine 2', @@ -343,7 +343,7 @@ def setUpTestData(cls): memory=2, disk=2, description='foobar2', - serial_number='222-bbb' + serial='222-bbb' ), VirtualMachine( name='Virtual Machine 3', @@ -521,7 +521,7 @@ def test_primary_ip6(self): self.assertEqual(self.filterset(params, self.queryset).qs.count(), 0) def test_serial_number(self): - params = {'serial_number': ['111-aaa', '222-bbb']} + params = {'serial': ['111-aaa', '222-bbb']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) diff --git a/netbox/virtualization/tests/test_views.py b/netbox/virtualization/tests/test_views.py index eb4ecd37b3b..0daa55a5cdd 100644 --- a/netbox/virtualization/tests/test_views.py +++ b/netbox/virtualization/tests/test_views.py @@ -234,7 +234,7 @@ def setUpTestData(cls): 'vcpus': 4, 'memory': 32768, 'disk': 4000, - 'serial_number': 'aaa-111', + 'serial': 'aaa-111', 'comments': 'Some comments', 'tags': [t.pk for t in tags], 'local_context_data': None, From b2876edcdb140931939a4f0ef2a9a2b946246219 Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 11 Jun 2024 10:47:09 -0700 Subject: [PATCH 08/10] 7537 fix migration --- ...ne_serial_number.py => 0040_virtualmachine_serial_number.py} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename netbox/virtualization/migrations/{0039_virtualmachine_serial_number.py => 0040_virtualmachine_serial_number.py} (86%) diff --git a/netbox/virtualization/migrations/0039_virtualmachine_serial_number.py b/netbox/virtualization/migrations/0040_virtualmachine_serial_number.py similarity index 86% rename from netbox/virtualization/migrations/0039_virtualmachine_serial_number.py rename to netbox/virtualization/migrations/0040_virtualmachine_serial_number.py index 014cb4caba1..5ca72d66dbd 100644 --- a/netbox/virtualization/migrations/0039_virtualmachine_serial_number.py +++ b/netbox/virtualization/migrations/0040_virtualmachine_serial_number.py @@ -6,7 +6,7 @@ class Migration(migrations.Migration): dependencies = [ - ('virtualization', '0038_virtualdisk'), + ('virtualization', '0039_convert_disk_size'), ] operations = [ From d54e3a139c47e8c39ed57e79338318ae946371a9 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 12 Jun 2024 09:56:49 -0400 Subject: [PATCH 09/10] Add missing serial field --- netbox/virtualization/api/serializers_/virtualmachines.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/netbox/virtualization/api/serializers_/virtualmachines.py b/netbox/virtualization/api/serializers_/virtualmachines.py index d9e4f9c6fbb..ea1021a2511 100644 --- a/netbox/virtualization/api/serializers_/virtualmachines.py +++ b/netbox/virtualization/api/serializers_/virtualmachines.py @@ -62,9 +62,9 @@ class VirtualMachineWithConfigContextSerializer(VirtualMachineSerializer): class Meta(VirtualMachineSerializer.Meta): fields = [ - 'id', 'url', 'display', 'name', 'status', 'site', 'cluster', 'device', 'role', 'tenant', 'platform', - 'primary_ip', 'primary_ip4', 'primary_ip6', 'vcpus', 'memory', 'disk', 'description', 'comments', - 'config_template', 'local_context_data', 'tags', 'custom_fields', 'config_context', 'created', + 'id', 'url', 'display', 'name', 'status', 'site', 'cluster', 'device', 'serial', 'role', 'tenant', + 'platform', 'primary_ip', 'primary_ip4', 'primary_ip6', 'vcpus', 'memory', 'disk', 'description', + 'comments', 'config_template', 'local_context_data', 'tags', 'custom_fields', 'config_context', 'created', 'last_updated', 'interface_count', 'virtual_disk_count', ] From db885dceb32cf7fe8e88700e2765f2f24462bf48 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 12 Jun 2024 09:57:22 -0400 Subject: [PATCH 10/10] Give serial field higher precedence for search --- netbox/virtualization/search.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netbox/virtualization/search.py b/netbox/virtualization/search.py index d1f192ceec2..cdaf0c074e5 100644 --- a/netbox/virtualization/search.py +++ b/netbox/virtualization/search.py @@ -39,8 +39,8 @@ class ClusterTypeIndex(SearchIndex): class VirtualMachineIndex(SearchIndex): model = models.VirtualMachine fields = ( + ('serial', 60), ('name', 100), - ('serial', 300), ('description', 500), ('comments', 5000), )