diff --git a/netbox/templates/virtualization/virtualdisk.html b/netbox/templates/virtualization/virtualdisk.html
index 222e97146..413491085 100644
--- a/netbox/templates/virtualization/virtualdisk.html
+++ b/netbox/templates/virtualization/virtualdisk.html
@@ -7,9 +7,7 @@
{% block breadcrumbs %}
{{ block.super }}
- {% comment %}
- {{ object.virtual_machine }}
- {% endcomment %}
+ {{ object.virtual_machine }}
{% endblock %}
diff --git a/netbox/templates/virtualization/virtualmachine.html b/netbox/templates/virtualization/virtualmachine.html
index 27f5ea114..86d4dfba0 100644
--- a/netbox/templates/virtualization/virtualmachine.html
+++ b/netbox/templates/virtualization/virtualmachine.html
@@ -139,7 +139,7 @@
- {% trans "Disk Space" %} |
+ {% trans "Disk Space (deprecated)" %} |
{% if object.disk %}
{{ object.disk }} {% trans "GB" context "Abbreviation for gigabyte" %}
@@ -148,6 +148,16 @@
{% endif %}
|
+
+ {% trans "Virtual Disk Space" %} |
+
+ {% if object.disk_size %}
+ {{ object.disk_size }} {% trans "GB" context "Abbreviation for gigabyte" %}
+ {% else %}
+ {{ ''|placeholder }}
+ {% endif %}
+ |
+
diff --git a/netbox/virtualization/models/virtualmachines.py b/netbox/virtualization/models/virtualmachines.py
index 0fdddf9be..c264bb2db 100644
--- a/netbox/virtualization/models/virtualmachines.py
+++ b/netbox/virtualization/models/virtualmachines.py
@@ -124,7 +124,8 @@ class VirtualMachine(ContactsMixin, RenderConfigMixin, ConfigContextModel, Prima
disk = models.PositiveIntegerField(
blank=True,
null=True,
- verbose_name=_('disk (GB)')
+ verbose_name=_('disk (GB)'),
+ help_text=_('deprecated - use Virtual Disks')
)
# Counter fields
diff --git a/netbox/virtualization/tables/virtualmachines.py b/netbox/virtualization/tables/virtualmachines.py
index a9c815e10..caf22369d 100644
--- a/netbox/virtualization/tables/virtualmachines.py
+++ b/netbox/virtualization/tables/virtualmachines.py
@@ -93,16 +93,19 @@ class VirtualMachineTable(TenancyColumnsMixin, ContactsColumnMixin, NetBoxTable)
verbose_name=_('Config Template'),
linkify=True
)
+ disk_size = tables.Column(
+ verbose_name=_('Disk Size (GB)'),
+ )
class Meta(NetBoxTable.Meta):
model = VirtualMachine
fields = (
'pk', 'id', 'name', 'status', 'site', 'cluster', 'device', 'role', 'tenant', 'tenant_group', 'platform',
- 'vcpus', 'memory', 'disk', 'primary_ip4', 'primary_ip6', 'primary_ip', 'description', 'comments',
+ 'vcpus', 'memory', 'disk', 'disk_size', 'primary_ip4', 'primary_ip6', 'primary_ip', 'description', 'comments',
'config_template', 'contacts', 'tags', 'created', 'last_updated',
)
default_columns = (
- 'pk', 'name', 'status', 'site', 'cluster', 'role', 'tenant', 'vcpus', 'memory', 'disk', 'primary_ip',
+ 'pk', 'name', 'status', 'site', 'cluster', 'role', 'tenant', 'vcpus', 'memory', 'disk_size', 'primary_ip',
)
diff --git a/netbox/virtualization/views.py b/netbox/virtualization/views.py
index 4d12dcdd1..f7f7612e9 100644
--- a/netbox/virtualization/views.py
+++ b/netbox/virtualization/views.py
@@ -3,7 +3,7 @@ from collections import defaultdict
from django.contrib import messages
from django.db import transaction
-from django.db.models import Prefetch, Sum
+from django.db.models import F, Prefetch, Sum
from django.http import HttpResponse
from django.shortcuts import get_object_or_404, redirect, render
from django.urls import reverse
@@ -341,7 +341,8 @@ class ClusterContactsView(ObjectContactsView):
#
class VirtualMachineListView(generic.ObjectListView):
- queryset = VirtualMachine.objects.prefetch_related('primary_ip4', 'primary_ip6')
+ queryset = VirtualMachine.objects.annotate(
+ disk_size=Sum('virtualdisks__size')).prefetch_related('primary_ip4', 'primary_ip6')
filterset = filtersets.VirtualMachineFilterSet
filterset_form = forms.VirtualMachineFilterForm
table = tables.VirtualMachineTable
@@ -350,7 +351,8 @@ class VirtualMachineListView(generic.ObjectListView):
@register_model_view(VirtualMachine)
class VirtualMachineView(generic.ObjectView):
- queryset = VirtualMachine.objects.all()
+ queryset = VirtualMachine.objects.all().annotate(
+ disk_size=Sum('virtualdisks__size'))
@register_model_view(VirtualMachine, 'interfaces')