From c1d7696b2a0c22c142122d9cb65e5b1c868a08cb Mon Sep 17 00:00:00 2001 From: Arthur Hanson Date: Tue, 11 Jun 2024 06:19:57 -0700 Subject: [PATCH] 14692 Convert VM disk size (#16434) * 14692 convert disk size to MB * 14692 fix list display * 14692 fix migration * Update netbox/virtualization/migrations/0039_convert_disk_size.py Co-authored-by: Jeremy Stretch --------- Co-authored-by: Jeremy Stretch --- .../virtualization/virtualmachine.html | 2 +- .../migrations/0039_convert_disk_size.py | 23 +++++++++++++++++++ .../virtualization/models/virtualmachines.py | 2 +- .../virtualization/tables/virtualmachines.py | 7 ++++++ 4 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 netbox/virtualization/migrations/0039_convert_disk_size.py diff --git a/netbox/templates/virtualization/virtualmachine.html b/netbox/templates/virtualization/virtualmachine.html index ed8980f5c..d2603ddd2 100644 --- a/netbox/templates/virtualization/virtualmachine.html +++ b/netbox/templates/virtualization/virtualmachine.html @@ -137,7 +137,7 @@ {% if object.disk %} - {{ object.disk }} {% trans "GB" context "Abbreviation for gigabyte" %} + {{ object.disk|humanize_megabytes }} {% else %} {{ ''|placeholder }} {% endif %} diff --git a/netbox/virtualization/migrations/0039_convert_disk_size.py b/netbox/virtualization/migrations/0039_convert_disk_size.py new file mode 100644 index 000000000..5bd6c13de --- /dev/null +++ b/netbox/virtualization/migrations/0039_convert_disk_size.py @@ -0,0 +1,23 @@ +# Generated by Django 5.0.6 on 2024-06-06 17:46 + +from django.db import migrations +from django.db.models import F + + +def convert_disk_size(apps, schema_editor): + VirtualMachine = apps.get_model('virtualization', 'VirtualMachine') + VirtualMachine.objects.filter(disk__isnull=False).update(disk=F('disk') * 1000) + + +class Migration(migrations.Migration): + + dependencies = [ + ('virtualization', '0038_virtualdisk'), + ] + + operations = [ + migrations.RunPython( + code=convert_disk_size, + reverse_code=migrations.RunPython.noop + ), + ] diff --git a/netbox/virtualization/models/virtualmachines.py b/netbox/virtualization/models/virtualmachines.py index 92f1a9472..fc446922b 100644 --- a/netbox/virtualization/models/virtualmachines.py +++ b/netbox/virtualization/models/virtualmachines.py @@ -125,7 +125,7 @@ class VirtualMachine(ContactsMixin, ImageAttachmentsMixin, RenderConfigMixin, Co disk = models.PositiveIntegerField( blank=True, null=True, - verbose_name=_('disk (GB)') + verbose_name=_('disk (MB)') ) # Counter fields diff --git a/netbox/virtualization/tables/virtualmachines.py b/netbox/virtualization/tables/virtualmachines.py index 9d194d268..f37a1bebc 100644 --- a/netbox/virtualization/tables/virtualmachines.py +++ b/netbox/virtualization/tables/virtualmachines.py @@ -4,6 +4,7 @@ from django.utils.translation import gettext_lazy as _ from dcim.tables.devices import BaseInterfaceTable from netbox.tables import NetBoxTable, columns from tenancy.tables import ContactsColumnMixin, TenancyColumnsMixin +from utilities.templatetags.helpers import humanize_megabytes from virtualization.models import VirtualDisk, VirtualMachine, VMInterface __all__ = ( @@ -106,6 +107,9 @@ class VirtualMachineTable(TenancyColumnsMixin, ContactsColumnMixin, NetBoxTable) verbose_name=_('Config Template'), linkify=True ) + disk = tables.Column( + verbose_name=_('Disk'), + ) class Meta(NetBoxTable.Meta): model = VirtualMachine @@ -118,6 +122,9 @@ class VirtualMachineTable(TenancyColumnsMixin, ContactsColumnMixin, NetBoxTable) 'pk', 'name', 'status', 'site', 'cluster', 'role', 'tenant', 'vcpus', 'memory', 'disk', 'primary_ip', ) + def render_disk(self, value): + return humanize_megabytes(value) + # # VM components