From c7108bb3f7c77d7b1d777ae1cf0ac103dcd3bd53 Mon Sep 17 00:00:00 2001 From: kkthxbye <400797+kkthxbye-code@users.noreply.github.com> Date: Tue, 27 Dec 2022 16:15:28 +0100 Subject: [PATCH 1/2] Fixes #11280 - Fix exporting interfaces and FHRP group rows with multiple IP's assigned (#11285) undefined --- netbox/dcim/tables/devices.py | 3 +++ netbox/ipam/tables/fhrp.py | 3 +++ 2 files changed, 6 insertions(+) diff --git a/netbox/dcim/tables/devices.py b/netbox/dcim/tables/devices.py index 7b8ea1ed3..7a2ea50ba 100644 --- a/netbox/dcim/tables/devices.py +++ b/netbox/dcim/tables/devices.py @@ -506,6 +506,9 @@ class BaseInterfaceTable(NetBoxTable): verbose_name='Tagged VLANs' ) + def value_ip_addresses(self, value): + return ",".join([str(obj.address) for obj in value.all()]) + class InterfaceTable(ModularDeviceComponentTable, BaseInterfaceTable, PathEndpointTable): device = tables.Column( diff --git a/netbox/ipam/tables/fhrp.py b/netbox/ipam/tables/fhrp.py index 89aa16e65..7d7b03bb8 100644 --- a/netbox/ipam/tables/fhrp.py +++ b/netbox/ipam/tables/fhrp.py @@ -33,6 +33,9 @@ class FHRPGroupTable(NetBoxTable): url_name='ipam:fhrpgroup_list' ) + def value_ip_addresses(self, value): + return ",".join([str(obj.address) for obj in value.all()]) + class Meta(NetBoxTable.Meta): model = FHRPGroup fields = ( From 735fa4aa3118da66a794c314d9d1668617734cc2 Mon Sep 17 00:00:00 2001 From: kkthxbye-code Date: Mon, 19 Dec 2022 14:57:35 +0100 Subject: [PATCH 2/2] Add summed resource card to cluster view --- netbox/templates/virtualization/cluster.html | 31 ++++++++++++++++++++ netbox/virtualization/views.py | 5 +++- 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/netbox/templates/virtualization/cluster.html b/netbox/templates/virtualization/cluster.html index 510c5a48e..5f34a82c5 100644 --- a/netbox/templates/virtualization/cluster.html +++ b/netbox/templates/virtualization/cluster.html @@ -55,6 +55,37 @@ {% plugin_left_page object %}
+
+
Allocated Resources
+
+ + + + + + + + + + + + + +
Virtual CPUs{{ vcpus_sum|placeholder }}
Memory + {% if memory_sum %} + {{ memory_sum|humanize_megabytes }} + {% else %} + {{ ''|placeholder }} + {% endif %} +
Disk Space + {% if disk_sum %} + {{ disk_sum }} GB + {% else %} + {{ ''|placeholder }} + {% endif %} +
+
+
{% include 'inc/panels/custom_fields.html' %} {% include 'inc/panels/tags.html' %} {% include 'inc/panels/contacts.html' %} diff --git a/netbox/virtualization/views.py b/netbox/virtualization/views.py index b97b966b4..af130fcce 100644 --- a/netbox/virtualization/views.py +++ b/netbox/virtualization/views.py @@ -1,6 +1,6 @@ from django.contrib import messages from django.db import transaction -from django.db.models import Prefetch +from django.db.models import Prefetch, Sum from django.shortcuts import get_object_or_404, redirect, render from django.urls import reverse from django.utils.translation import gettext as _ @@ -169,6 +169,9 @@ class ClusterListView(generic.ObjectListView): class ClusterView(generic.ObjectView): queryset = Cluster.objects.all() + def get_extra_context(self, request, instance): + 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') class ClusterVirtualMachinesView(generic.ObjectChildrenView):