1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

closes #4340 - Enforce unique constraints for device and virtual machine names in the API

This commit is contained in:
John Anderson
2020-03-10 19:15:24 -04:00
parent 55558cb272
commit a504f5f309
4 changed files with 33 additions and 0 deletions

View File

@ -1,5 +1,11 @@
# NetBox v2.7 Release Notes
## v2.7.11 (FUTURE)
### Bug Fixes
* [#4340](https://github.com/netbox-community/netbox/issues/4340) - Enforce unique constraints for device and virtual machine names in the API
## v2.7.10 (2020-03-10)
**Note:** If your deployment requires any non-core Python packages (such as `napalm`, `django-storages`, or `django-auth-ldap`), list them in a file named `local_requirements.txt` in the NetBox root directory (alongside `requirements.txt`). This will ensure they are detected and re-installed by the upgrade script when the Python virtual environment is rebuilt.

View File

@ -2089,6 +2089,20 @@ class DeviceTest(APITestCase):
self.assertFalse('config_context' in response.data['results'][0])
def test_unique_name_per_site_constraint(self):
data = {
'device_type': self.devicetype1.pk,
'device_role': self.devicerole1.pk,
'name': 'Test Device 1',
'site': self.site1.pk,
}
url = reverse('dcim-api:device-list')
response = self.client.post(url, data, format='json', **self.header)
self.assertHttpStatus(response, status.HTTP_400_BAD_REQUEST)
class ConsolePortTest(APITestCase):

View File

@ -234,6 +234,7 @@ class ValidatedModelSerializer(ModelSerializer):
for k, v in attrs.items():
setattr(instance, k, v)
instance.clean()
instance.validate_unique()
return data

View File

@ -501,6 +501,18 @@ class VirtualMachineTest(APITestCase):
self.assertFalse('config_context' in response.data['results'][0])
def test_unique_name_per_cluster_constraint(self):
data = {
'name': 'Test Virtual Machine 1',
'cluster': self.cluster1.pk,
}
url = reverse('virtualization-api:virtualmachine-list')
response = self.client.post(url, data, format='json', **self.header)
self.assertHttpStatus(response, status.HTTP_400_BAD_REQUEST)
class InterfaceTest(APITestCase):