diff --git a/netbox/netbox/utils.py b/netbox/netbox/utils.py
index f8f6bcc65..f27d1b5f7 100644
--- a/netbox/netbox/utils.py
+++ b/netbox/netbox/utils.py
@@ -24,22 +24,3 @@ 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 the value is less than 6 digits, it understands the value is expressed according to the unit.
- if len(str(value)) < 6:
- return value
- value_converted = float(value) / factors[unit]
- return value_converted
- return 0
diff --git a/netbox/templates/virtualization/cluster.html b/netbox/templates/virtualization/cluster.html
index d74ead0fa..7628bf876 100644
--- a/netbox/templates/virtualization/cluster.html
+++ b/netbox/templates/virtualization/cluster.html
@@ -59,7 +59,7 @@
{% trans "Memory" %} |
{% if memory_sum %}
- {{ memory_sum }} {% trans "MB" context "Abbreviation for megabyte" %}
+ {{ memory_sum|humanize_megabytes }}
{% else %}
{{ ''|placeholder }}
{% endif %}
diff --git a/netbox/utilities/templatetags/helpers.py b/netbox/utilities/templatetags/helpers.py
index e8686f8c6..175d283a3 100644
--- a/netbox/utilities/templatetags/helpers.py
+++ b/netbox/utilities/templatetags/helpers.py
@@ -96,11 +96,13 @@ def humanize_megabytes(mb):
"""
if not mb:
return ''
+ if len(str(mb)) < 6:
+ return mb
if not mb % 1048576: # 1024^2
return f'{int(mb / 1048576)} TB'
if not mb % 1024:
return f'{int(mb / 1024)} GB'
- return f'{mb} MB'
+ return f'{float(mb)/(1048576):.2f} MB'
@register.filter()
diff --git a/netbox/virtualization/views.py b/netbox/virtualization/views.py
index 064a362ca..1ddd2c92d 100644
--- a/netbox/virtualization/views.py
+++ b/netbox/virtualization/views.py
@@ -16,7 +16,6 @@ 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
@@ -173,17 +172,7 @@ class ClusterView(generic.ObjectView):
queryset = Cluster.objects.all()
def get_extra_context(self, request, instance):
- 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:.2f}"
- extra_content['disk_sum'] = f"{disk_sum:.2f}"
-
- return extra_content
+ return instance.virtual_machines.aggregate(vcpus_sum=Sum('vcpus'), memory_sum=Sum('memory'), disk_sum=Sum('disk'))
@register_model_view(Cluster, 'virtualmachines', path='virtual-machines')
|