diff --git a/netbox/virtualization/api/views.py b/netbox/virtualization/api/views.py index c91370623..9cca93385 100644 --- a/netbox/virtualization/api/views.py +++ b/netbox/virtualization/api/views.py @@ -54,10 +54,8 @@ class ClusterViewSet(NetBoxModelViewSet): # class VirtualMachineViewSet(ConfigContextQuerySetMixin, NetBoxModelViewSet): - queryset = VirtualMachine.objects.annotate( - virtual_disk_space=Sum('virtualdisks__size') - ).prefetch_related( - 'site', 'cluster', 'device', 'role', 'tenant', 'platform', 'primary_ip4', 'primary_ip6', 'tags' + queryset = VirtualMachine.objects.prefetch_related( + 'site', 'cluster', 'device', 'role', 'tenant', 'platform', 'primary_ip4', 'primary_ip6', 'tags', 'virtualdisks', ) filterset_class = filtersets.VirtualMachineFilterSet diff --git a/netbox/virtualization/models/virtualmachines.py b/netbox/virtualization/models/virtualmachines.py index 970167bf3..dae1f9b7b 100644 --- a/netbox/virtualization/models/virtualmachines.py +++ b/netbox/virtualization/models/virtualmachines.py @@ -242,6 +242,10 @@ class VirtualMachine(ContactsMixin, RenderConfigMixin, ConfigContextModel, Prima else: return None + @property + def virtual_disk_space(self): + return sum([disk.size for disk in self.virtualdisks.all()]) + class VMInterface(NetBoxModel, BaseInterface, TrackingModelMixin): virtual_machine = models.ForeignKey( diff --git a/netbox/virtualization/tables/virtualmachines.py b/netbox/virtualization/tables/virtualmachines.py index ec3f1dde1..30d4bc174 100644 --- a/netbox/virtualization/tables/virtualmachines.py +++ b/netbox/virtualization/tables/virtualmachines.py @@ -112,8 +112,8 @@ class VirtualMachineTable(TenancyColumnsMixin, ContactsColumnMixin, NetBoxTable) def render_disk(self, value, record): if record.disk: return record.disk - elif record.disk_size: - return record.disk_size + elif record.virtual_disk_space: + return record.virtual_disk_space else: return '—'