17032 Convert Virtual Disk Size from GB -> MB (#17033)

* 17032 Convert Virtual Disk size from GB -> MB

* 17032 update migration

* 17032 update migration

* 17032 update migration

* 17032 update migration

* Omit redundant method

* Merge migrations

* Tweak column header

---------

Co-authored-by: Jeremy Stretch <jstretch@netboxlabs.com>
This commit is contained in:
Arthur Hanson 2024-07-31 21:03:25 +07:00 committed by GitHub
parent 954eadcdc5
commit a3edc0472a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 40 additions and 28 deletions

View File

@ -29,7 +29,7 @@
<th scope="row"><i class="mdi mdi-harddisk"></i> {% trans "Size" %}</th> <th scope="row"><i class="mdi mdi-harddisk"></i> {% trans "Size" %}</th>
<td> <td>
{% if object.size %} {% if object.size %}
{{ object.size }} {% trans "GB" context "Abbreviation for gigabyte" %} {{ object.size|humanize_megabytes }}
{% else %} {% else %}
{{ ''|placeholder }} {{ ''|placeholder }}
{% endif %} {% endif %}

View File

@ -1,23 +0,0 @@
# 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
),
]

View File

@ -1,12 +1,10 @@
# Generated by Django 5.0.6 on 2024-06-04 17:09
from django.db import migrations, models from django.db import migrations, models
class Migration(migrations.Migration): class Migration(migrations.Migration):
dependencies = [ dependencies = [
('virtualization', '0039_convert_disk_size'), ('virtualization', '0038_virtualdisk'),
] ]
operations = [ operations = [

View File

@ -0,0 +1,31 @@
from django.db import migrations
from django.db.models import F, Sum
def convert_disk_size(apps, schema_editor):
VirtualMachine = apps.get_model('virtualization', 'VirtualMachine')
VirtualMachine.objects.filter(disk__isnull=False).update(disk=F('disk') * 1000)
VirtualDisk = apps.get_model('virtualization', 'VirtualDisk')
VirtualDisk.objects.filter(size__isnull=False).update(size=F('size') * 1000)
# Recalculate disk size on all VMs with virtual disks
id_list = VirtualDisk.objects.values_list('virtual_machine_id').distinct()
virtual_machines = VirtualMachine.objects.filter(id__in=id_list)
for vm in virtual_machines:
vm.disk = vm.virtualdisks.aggregate(Sum('size', default=0))['size__sum']
VirtualMachine.objects.bulk_update(virtual_machines, fields=['disk'])
class Migration(migrations.Migration):
dependencies = [
('virtualization', '0039_virtualmachine_serial_number'),
]
operations = [
migrations.RunPython(
code=convert_disk_size,
reverse_code=migrations.RunPython.noop
),
]

View File

@ -431,7 +431,7 @@ class VMInterface(ComponentModel, BaseInterface, TrackingModelMixin):
class VirtualDisk(ComponentModel, TrackingModelMixin): class VirtualDisk(ComponentModel, TrackingModelMixin):
size = models.PositiveIntegerField( size = models.PositiveIntegerField(
verbose_name=_('size (GB)'), verbose_name=_('size (MB)'),
) )
class Meta(ComponentModel.Meta): class Meta(ComponentModel.Meta):

View File

@ -194,6 +194,9 @@ class VirtualDiskTable(NetBoxTable):
verbose_name=_('Name'), verbose_name=_('Name'),
linkify=True linkify=True
) )
size = tables.Column(
verbose_name=_('Size')
)
tags = columns.TagColumn( tags = columns.TagColumn(
url_name='virtualization:virtualdisk_list' url_name='virtualization:virtualdisk_list'
) )
@ -208,6 +211,9 @@ class VirtualDiskTable(NetBoxTable):
'data-name': lambda record: record.name, 'data-name': lambda record: record.name,
} }
def render_size(self, value):
return humanize_megabytes(value)
class VirtualMachineVirtualDiskTable(VirtualDiskTable): class VirtualMachineVirtualDiskTable(VirtualDiskTable):
actions = columns.ActionsColumn( actions = columns.ActionsColumn(