Created "convert_byte_size" method to convert the memory and disk size according to unit informed.

Changed "get_extra_context" method from "ClusterView" to use the method above and convert all the disks and memories from VMs to normalize the units.
This commit is contained in:
Julio-Oliveira-Encora 2024-04-30 14:58:05 -03:00
parent 5af3c659a5
commit 1ba2dd04fa
3 changed files with 32 additions and 3 deletions

View File

@ -24,3 +24,21 @@ def register_data_backend():
return cls
return _wrapper
def convert_byte_size(value, unit="mega"):
"""
Convert a size value to unit.
"""
factors = {
"kilo": 1024,
"mega": 1024 ** 2,
"giga": 1024 ** 3,
"tera": 1024 ** 4,
}
if value:
if len(str(value)) < 6:
return value
value_converted = float(value) / factors[unit]
return value_converted
return 0

View File

@ -59,7 +59,7 @@
<th scope="row"><i class="mdi mdi-chip"></i> {% trans "Memory" %}</th>
<td>
{% if memory_sum %}
{{ memory_sum|humanize_megabytes }}
{{ memory_sum }} {% trans "MB" context "Abbreviation for megabyte" %}
{% else %}
{{ ''|placeholder }}
{% endif %}

View File

@ -16,6 +16,7 @@ from extras.views import ObjectConfigContextView
from ipam.models import IPAddress
from ipam.tables import InterfaceVLANTable
from netbox.constants import DEFAULT_ACTION_PERMISSIONS
from netbox.utils import convert_byte_size
from netbox.views import generic
from tenancy.views import ObjectContactsView
from utilities.query import count_related
@ -172,7 +173,17 @@ class ClusterView(generic.ObjectView):
queryset = Cluster.objects.all()
def get_extra_context(self, request, instance):
return instance.virtual_machines.aggregate(vcpus_sum=Sum('vcpus'), memory_sum=Sum('memory'), disk_sum=Sum('disk'))
vm_memory = [convert_byte_size(item.memory, 'mega') for item in instance.virtual_machines.all() if item.memory]
vm_disk = [convert_byte_size(item.disk, 'giga') for item in instance.virtual_machines.all() if item.disk]
memory_sum = sum(vm_memory)
disk_sum = sum(vm_disk)
extra_content = instance.virtual_machines.aggregate(vcpus_sum=Sum('vcpus'))
extra_content['memory_sum'] = f"{memory_sum:.0f}"
extra_content['disk_sum'] = f"{disk_sum:.0f}"
return extra_content
@register_model_view(Cluster, 'virtualmachines', path='virtual-machines')