8356 model property

This commit is contained in:
Arthur 2023-10-30 13:22:37 -07:00
parent c53f8a0ceb
commit e25f58768b
3 changed files with 8 additions and 6 deletions

View File

@ -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

View File

@ -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(

View File

@ -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 ''