Revert disk space annotation

This commit is contained in:
Jeremy Stretch 2023-11-14 14:04:57 -05:00
parent 031632162a
commit f4aa2e9f62
5 changed files with 7 additions and 33 deletions

View File

@ -92,16 +92,10 @@ class VirtualMachineSerializer(NetBoxModelSerializer):
'id', 'url', 'display', 'name', 'status', 'site', 'cluster', 'device', 'role', 'tenant', 'platform', 'id', 'url', 'display', 'name', 'status', 'site', 'cluster', 'device', 'role', 'tenant', 'platform',
'primary_ip', 'primary_ip4', 'primary_ip6', 'vcpus', 'memory', 'disk', 'description', 'comments', 'primary_ip', 'primary_ip4', 'primary_ip6', 'vcpus', 'memory', 'disk', 'description', 'comments',
'config_template', 'local_context_data', 'tags', 'custom_fields', 'created', 'last_updated', 'config_template', 'local_context_data', 'tags', 'custom_fields', 'created', 'last_updated',
'interface_count', 'virtual_disk_count', 'disk_space', 'interface_count', 'virtual_disk_count',
] ]
validators = [] validators = []
def get_disk(self, obj):
if obj.disk:
return obj.disk
return obj.disk_space
class VirtualMachineWithConfigContextSerializer(VirtualMachineSerializer): class VirtualMachineWithConfigContextSerializer(VirtualMachineSerializer):
config_context = serializers.SerializerMethodField() config_context = serializers.SerializerMethodField()

View File

@ -1,7 +1,6 @@
from rest_framework.routers import APIRootView from rest_framework.routers import APIRootView
from dcim.models import Device from dcim.models import Device
from django.db.models import Sum
from extras.api.mixins import ConfigContextQuerySetMixin from extras.api.mixins import ConfigContextQuerySetMixin
from netbox.api.viewsets import NetBoxModelViewSet from netbox.api.viewsets import NetBoxModelViewSet
from utilities.query_functions import CollateAsChar from utilities.query_functions import CollateAsChar

View File

@ -242,10 +242,6 @@ class VirtualMachine(ContactsMixin, RenderConfigMixin, ConfigContextModel, Prima
else: else:
return None return None
@property
def disk_space(self):
return sum([disk.size for disk in self.virtualdisks.all()])
class VMInterface(NetBoxModel, BaseInterface, TrackingModelMixin): class VMInterface(NetBoxModel, BaseInterface, TrackingModelMixin):
virtual_machine = models.ForeignKey( virtual_machine = models.ForeignKey(

View File

@ -93,30 +93,18 @@ class VirtualMachineTable(TenancyColumnsMixin, ContactsColumnMixin, NetBoxTable)
verbose_name=_('Config Template'), verbose_name=_('Config Template'),
linkify=True linkify=True
) )
disk_space = tables.Column(
empty_values=(),
verbose_name=_('Disk Size (GB)'),
)
class Meta(NetBoxTable.Meta): class Meta(NetBoxTable.Meta):
model = VirtualMachine model = VirtualMachine
fields = ( fields = (
'pk', 'id', 'name', 'status', 'site', 'cluster', 'device', 'role', 'tenant', 'tenant_group', 'platform', 'pk', 'id', 'name', 'status', 'site', 'cluster', 'device', 'role', 'tenant', 'tenant_group', 'platform',
'vcpus', 'memory', 'disk_space', 'primary_ip4', 'primary_ip6', 'primary_ip', 'description', 'comments', 'vcpus', 'memory', 'disk', 'primary_ip4', 'primary_ip6', 'primary_ip', 'description', 'comments',
'config_template', 'contacts', 'tags', 'created', 'last_updated', 'config_template', 'contacts', 'tags', 'created', 'last_updated',
) )
default_columns = ( default_columns = (
'pk', 'name', 'status', 'site', 'cluster', 'role', 'tenant', 'vcpus', 'memory', 'disk_space', 'primary_ip', 'pk', 'name', 'status', 'site', 'cluster', 'role', 'tenant', 'vcpus', 'memory', 'disk', 'primary_ip',
) )
def render_disk_space(self, value, record):
if record.disk:
return record.disk
elif record.disk_space:
return record.disk_space
else:
return ''
# #
# VM components # VM components
# #

View File

@ -2,7 +2,7 @@ import traceback
from django.contrib import messages from django.contrib import messages
from django.db import transaction from django.db import transaction
from django.db.models import F, Prefetch, Sum from django.db.models import Prefetch, Sum
from django.http import HttpResponse from django.http import HttpResponse
from django.shortcuts import get_object_or_404, redirect, render from django.shortcuts import get_object_or_404, redirect, render
from django.urls import reverse from django.urls import reverse
@ -24,11 +24,11 @@ from utilities.views import ViewTab, register_model_view
from . import filtersets, forms, tables from . import filtersets, forms, tables
from .models import * from .models import *
# #
# Cluster types # Cluster types
# #
class ClusterTypeListView(generic.ObjectListView): class ClusterTypeListView(generic.ObjectListView):
queryset = ClusterType.objects.annotate( queryset = ClusterType.objects.annotate(
cluster_count=count_related(Cluster, 'type') cluster_count=count_related(Cluster, 'type')
@ -341,9 +341,7 @@ class ClusterContactsView(ObjectContactsView):
# #
class VirtualMachineListView(generic.ObjectListView): class VirtualMachineListView(generic.ObjectListView):
queryset = VirtualMachine.objects.annotate( queryset = VirtualMachine.objects.prefetch_related('primary_ip4', 'primary_ip6')
disk_size=Sum('virtualdisks__size')
).prefetch_related('primary_ip4', 'primary_ip6')
filterset = filtersets.VirtualMachineFilterSet filterset = filtersets.VirtualMachineFilterSet
filterset_form = forms.VirtualMachineFilterForm filterset_form = forms.VirtualMachineFilterForm
table = tables.VirtualMachineTable table = tables.VirtualMachineTable
@ -352,8 +350,7 @@ class VirtualMachineListView(generic.ObjectListView):
@register_model_view(VirtualMachine) @register_model_view(VirtualMachine)
class VirtualMachineView(generic.ObjectView): class VirtualMachineView(generic.ObjectView):
queryset = VirtualMachine.objects.all().annotate( queryset = VirtualMachine.objects.all()
disk_size=Sum('virtualdisks__size'))
@register_model_view(VirtualMachine, 'interfaces') @register_model_view(VirtualMachine, 'interfaces')