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

Fixes #2589: Virtual machine API serializer should require cluster assignment

Jeremy Stretch 7 лет назад
Родитель
Сommit
23cde65add
3 измененных файлов с 14 добавлено и 1 удалено
  1. 1 0
      CHANGELOG.md
  2. 1 1
      netbox/virtualization/api/serializers.py
  3. 12 0
      netbox/virtualization/tests/test_api.py

+ 1 - 0
CHANGELOG.md

@@ -11,6 +11,7 @@ v2.4.8 (FUTURE)
 * [#2565](https://github.com/digitalocean/netbox/issues/2565) - Improved rendering of Markdown tables
 * [#2575](https://github.com/digitalocean/netbox/issues/2575) - Correct model specified for rack roles table
 * [#2588](https://github.com/digitalocean/netbox/issues/2588) - Catch all exceptions from failed NAPALM API Calls
+* [#2589](https://github.com/digitalocean/netbox/issues/2589) - Virtual machine API serializer should require cluster assignment
 
 ---
 

+ 1 - 1
netbox/virtualization/api/serializers.py

@@ -93,7 +93,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)
+    cluster = NestedClusterSerializer()
     role = NestedDeviceRoleSerializer(required=False, allow_null=True)
     tenant = NestedTenantSerializer(required=False, allow_null=True)
     platform = NestedPlatformSerializer(required=False, allow_null=True)

+ 12 - 0
netbox/virtualization/tests/test_api.py

@@ -380,6 +380,18 @@ class VirtualMachineTest(APITestCase):
         self.assertEqual(virtualmachine4.name, data['name'])
         self.assertEqual(virtualmachine4.cluster.pk, data['cluster'])
 
+    def test_create_virtualmachine_without_cluster(self):
+
+        data = {
+            'name': 'Test Virtual Machine 4',
+        }
+
+        url = reverse('virtualization-api:virtualmachine-list')
+        response = self.client.post(url, data, format='json', **self.header)
+
+        self.assertHttpStatus(response, status.HTTP_400_BAD_REQUEST)
+        self.assertEqual(VirtualMachine.objects.count(), 3)
+
     def test_create_virtualmachine_bulk(self):
 
         data = [