mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-21 19:47:20 -06:00
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:
parent
954eadcdc5
commit
a3edc0472a
@ -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 %}
|
||||||
|
@ -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
|
|
||||||
),
|
|
||||||
]
|
|
@ -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 = [
|
31
netbox/virtualization/migrations/0040_convert_disk_size.py
Normal file
31
netbox/virtualization/migrations/0040_convert_disk_size.py
Normal 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
|
||||||
|
),
|
||||||
|
]
|
@ -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):
|
||||||
|
@ -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(
|
||||||
|
Loading…
Reference in New Issue
Block a user