Skip to content

Commit 75aeaab

Browse files
authored
12596 Add Allocated Resources to Cluster API (#17956)
* 12596 Add Allocated Resources to Cluster API * 12596 Add Allocated Resources to Cluster API * 12596 Add Allocated Resources to Cluster API * 12596 Add Allocated Resources to Cluster API * 12596 review changes * 12596 review changes
1 parent 03d4135 commit 75aeaab

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

netbox/virtualization/api/serializers_/clusters.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,14 @@ class ClusterSerializer(NetBoxModelSerializer):
5959
)
6060
scope_id = serializers.IntegerField(allow_null=True, required=False, default=None)
6161
scope = serializers.SerializerMethodField(read_only=True)
62+
allocated_vcpus = serializers.DecimalField(
63+
read_only=True,
64+
max_digits=8,
65+
decimal_places=2,
66+
67+
)
68+
allocated_memory = serializers.IntegerField(read_only=True)
69+
allocated_disk = serializers.IntegerField(read_only=True)
6270

6371
# Related object counts
6472
device_count = RelatedObjectCountField('devices')
@@ -69,7 +77,7 @@ class Meta:
6977
fields = [
7078
'id', 'url', 'display_url', 'display', 'name', 'type', 'group', 'status', 'tenant', 'scope_type', 'scope_id', 'scope',
7179
'description', 'comments', 'tags', 'custom_fields', 'created', 'last_updated', 'device_count',
72-
'virtualmachine_count',
80+
'virtualmachine_count', 'allocated_vcpus', 'allocated_memory', 'allocated_disk'
7381
]
7482
brief_fields = ('id', 'url', 'display', 'name', 'description', 'virtualmachine_count')
7583

netbox/virtualization/api/views.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from django.db.models import Sum
12
from rest_framework.routers import APIRootView
23

34
from extras.api.mixins import ConfigContextQuerySetMixin, RenderConfigMixin
@@ -33,7 +34,11 @@ class ClusterGroupViewSet(NetBoxModelViewSet):
3334

3435

3536
class ClusterViewSet(NetBoxModelViewSet):
36-
queryset = Cluster.objects.all()
37+
queryset = Cluster.objects.prefetch_related('virtual_machines').annotate(
38+
allocated_vcpus=Sum('virtual_machines__vcpus'),
39+
allocated_memory=Sum('virtual_machines__memory'),
40+
allocated_disk=Sum('virtual_machines__disk'),
41+
)
3742
serializer_class = serializers.ClusterSerializer
3843
filterset_class = filtersets.ClusterFilterSet
3944

0 commit comments

Comments
 (0)