From 5dce7c4e48ce1f03edef3bce7e87b220e66965ba Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Thu, 16 Aug 2018 11:57:20 -0400 Subject: [PATCH] Closes #2356: Include cluster site as read-only field in VirtualMachine serializer --- netbox/virtualization/api/serializers.py | 5 +++-- netbox/virtualization/api/views.py | 4 +++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/netbox/virtualization/api/serializers.py b/netbox/virtualization/api/serializers.py index f4e0d5e5c..9dff223d3 100644 --- a/netbox/virtualization/api/serializers.py +++ b/netbox/virtualization/api/serializers.py @@ -92,6 +92,7 @@ class VirtualMachineIPAddressSerializer(WritableNestedSerializer): class VirtualMachineSerializer(TaggitSerializer, CustomFieldModelSerializer): status = ChoiceField(choices=VM_STATUS_CHOICES, required=False) + site = NestedSiteSerializer(read_only=True) cluster = NestedClusterSerializer(required=False, allow_null=True) role = NestedDeviceRoleSerializer(required=False, allow_null=True) tenant = NestedTenantSerializer(required=False, allow_null=True) @@ -104,8 +105,8 @@ class VirtualMachineSerializer(TaggitSerializer, CustomFieldModelSerializer): class Meta: model = VirtualMachine fields = [ - 'id', 'name', 'status', 'cluster', 'role', 'tenant', 'platform', 'primary_ip', 'primary_ip4', 'primary_ip6', - 'vcpus', 'memory', 'disk', 'comments', 'tags', 'custom_fields', 'created', 'last_updated', + 'id', 'name', 'status', 'site', 'cluster', 'role', 'tenant', 'platform', 'primary_ip', 'primary_ip4', + 'primary_ip6', 'vcpus', 'memory', 'disk', 'comments', 'tags', 'custom_fields', 'created', 'last_updated', ] diff --git a/netbox/virtualization/api/views.py b/netbox/virtualization/api/views.py index 01b8792c8..c20b8091e 100644 --- a/netbox/virtualization/api/views.py +++ b/netbox/virtualization/api/views.py @@ -45,7 +45,9 @@ class ClusterViewSet(CustomFieldModelViewSet): # class VirtualMachineViewSet(CustomFieldModelViewSet): - queryset = VirtualMachine.objects.all() + queryset = VirtualMachine.objects.select_related( + 'cluster__site', 'role', 'tenant', 'platform', 'primary_ip4', 'primary_ip6' + ) filter_class = filters.VirtualMachineFilter def get_serializer_class(self):