From 973c410db212549fe3e335930f676988cd3599b0 Mon Sep 17 00:00:00 2001 From: Arthur Hanson Date: Wed, 13 Nov 2024 12:11:35 -0800 Subject: [PATCH] 11279 refactor VirtualDisk --- netbox/virtualization/graphql/types.py | 2 +- ...6_alter_virtualmachine_options_and_more.py | 13 +++++---- .../virtualization/models/virtualmachines.py | 29 +++++++++++-------- 3 files changed, 26 insertions(+), 18 deletions(-) diff --git a/netbox/virtualization/graphql/types.py b/netbox/virtualization/graphql/types.py index f405705fb..8476eac7e 100644 --- a/netbox/virtualization/graphql/types.py +++ b/netbox/virtualization/graphql/types.py @@ -25,7 +25,6 @@ class ComponentType(NetBoxObjectType): """ Base type for device/VM components """ - _name: str virtual_machine: Annotated["VirtualMachineType", strawberry.lazy('virtualization.graphql.types')] @@ -101,6 +100,7 @@ class VirtualMachineType(ConfigContextMixin, ContactsMixin, NetBoxObjectType): filters=VMInterfaceFilter ) class VMInterfaceType(IPAddressesMixin, ComponentType): + _name: str mac_address: str | None parent: Annotated["VMInterfaceType", strawberry.lazy('virtualization.graphql.types')] | None bridge: Annotated["VMInterfaceType", strawberry.lazy('virtualization.graphql.types')] | None diff --git a/netbox/virtualization/migrations/0046_alter_virtualmachine_options_and_more.py b/netbox/virtualization/migrations/0046_alter_virtualmachine_options_and_more.py index 1bb077143..a8080d540 100644 --- a/netbox/virtualization/migrations/0046_alter_virtualmachine_options_and_more.py +++ b/netbox/virtualization/migrations/0046_alter_virtualmachine_options_and_more.py @@ -15,6 +15,10 @@ class Migration(migrations.Migration): name='virtualmachine', options={'ordering': ('name', 'pk')}, ), + migrations.AlterModelOptions( + name='virtualdisk', + options={'ordering': ('virtual_machine', 'name')}, + ), migrations.RemoveField( model_name='virtualmachine', name='_name', @@ -29,14 +33,13 @@ class Migration(migrations.Migration): name='name', field=models.CharField(db_collation='natural_sort', max_length=64), ), - migrations.AlterField( - model_name='vminterface', - name='name', - field=models.CharField(db_collation='natural_sort', max_length=64), - ), migrations.AlterField( model_name='cluster', name='name', field=models.CharField(db_collation='natural_sort', max_length=100), ), + migrations.RemoveField( + model_name='virtualdisk', + name='_name', + ), ] diff --git a/netbox/virtualization/models/virtualmachines.py b/netbox/virtualization/models/virtualmachines.py index c83d76f02..7e048b950 100644 --- a/netbox/virtualization/models/virtualmachines.py +++ b/netbox/virtualization/models/virtualmachines.py @@ -267,17 +267,6 @@ class ComponentModel(NetBoxModel): on_delete=models.CASCADE, related_name='%(class)ss' ) - name = models.CharField( - verbose_name=_('name'), - max_length=64, - db_collation="natural_sort" - ) - _name = NaturalOrderingField( - target_field='name', - naturalize_function=naturalize_interface, - max_length=100, - blank=True - ) description = models.CharField( verbose_name=_('description'), max_length=200, @@ -286,7 +275,6 @@ class ComponentModel(NetBoxModel): class Meta: abstract = True - ordering = ('virtual_machine', CollateAsChar('_name')) constraints = ( models.UniqueConstraint( fields=('virtual_machine', 'name'), @@ -308,6 +296,16 @@ class ComponentModel(NetBoxModel): class VMInterface(ComponentModel, BaseInterface, TrackingModelMixin): + name = models.CharField( + verbose_name=_('name'), + max_length=64, + ) + _name = NaturalOrderingField( + target_field='name', + naturalize_function=naturalize_interface, + max_length=100, + blank=True + ) virtual_machine = models.ForeignKey( to='virtualization.VirtualMachine', on_delete=models.CASCADE, @@ -355,6 +353,7 @@ class VMInterface(ComponentModel, BaseInterface, TrackingModelMixin): class Meta(ComponentModel.Meta): verbose_name = _('interface') verbose_name_plural = _('interfaces') + ordering = ('virtual_machine', CollateAsChar('_name')) def clean(self): super().clean() @@ -406,6 +405,11 @@ class VMInterface(ComponentModel, BaseInterface, TrackingModelMixin): class VirtualDisk(ComponentModel, TrackingModelMixin): + name = models.CharField( + verbose_name=_('name'), + max_length=64, + db_collation="natural_sort" + ) size = models.PositiveIntegerField( verbose_name=_('size (MB)'), ) @@ -413,3 +417,4 @@ class VirtualDisk(ComponentModel, TrackingModelMixin): class Meta(ComponentModel.Meta): verbose_name = _('virtual disk') verbose_name_plural = _('virtual disks') + ordering = ('virtual_machine', 'name')