Просмотр исходного кода

Closes #2356: Include cluster site as read-only field in VirtualMachine serializer

Jeremy Stretch 7 лет назад
Родитель
Сommit
5dce7c4e48
2 измененных файлов с 6 добавлено и 3 удалено
  1. 3 2
      netbox/virtualization/api/serializers.py
  2. 3 1
      netbox/virtualization/api/views.py

+ 3 - 2
netbox/virtualization/api/serializers.py

@@ -92,6 +92,7 @@ class VirtualMachineIPAddressSerializer(WritableNestedSerializer):
 
 
 class VirtualMachineSerializer(TaggitSerializer, CustomFieldModelSerializer):
 class VirtualMachineSerializer(TaggitSerializer, CustomFieldModelSerializer):
     status = ChoiceField(choices=VM_STATUS_CHOICES, required=False)
     status = ChoiceField(choices=VM_STATUS_CHOICES, required=False)
+    site = NestedSiteSerializer(read_only=True)
     cluster = NestedClusterSerializer(required=False, allow_null=True)
     cluster = NestedClusterSerializer(required=False, allow_null=True)
     role = NestedDeviceRoleSerializer(required=False, allow_null=True)
     role = NestedDeviceRoleSerializer(required=False, allow_null=True)
     tenant = NestedTenantSerializer(required=False, allow_null=True)
     tenant = NestedTenantSerializer(required=False, allow_null=True)
@@ -104,8 +105,8 @@ class VirtualMachineSerializer(TaggitSerializer, CustomFieldModelSerializer):
     class Meta:
     class Meta:
         model = VirtualMachine
         model = VirtualMachine
         fields = [
         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',
         ]
         ]
 
 
 
 

+ 3 - 1
netbox/virtualization/api/views.py

@@ -45,7 +45,9 @@ class ClusterViewSet(CustomFieldModelViewSet):
 #
 #
 
 
 class VirtualMachineViewSet(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
     filter_class = filters.VirtualMachineFilter
 
 
     def get_serializer_class(self):
     def get_serializer_class(self):