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

Closes #1943: Relax uniqueness constraint on cluster names

This commit is contained in:
jeremystretch
2021-10-19 13:06:41 -04:00
parent 0afd3e6189
commit 8375995680
5 changed files with 30 additions and 5 deletions

View File

@ -1,5 +1,5 @@
# Clusters # Clusters
A cluster is a logical grouping of physical resources within which virtual machines run. A cluster must be assigned a type (technological classification), and may optionally be assigned to a cluster group, site, and/or tenant. A cluster is a logical grouping of physical resources within which virtual machines run. A cluster must be assigned a type (technological classification), and may optionally be assigned to a cluster group, site, and/or tenant. Each cluster must have a unique name within its assigned group and/or site, if any.
Physical devices may be associated with clusters as hosts. This allows users to track on which host(s) a particular virtual machine may reside. However, NetBox does not support pinning a specific VM within a cluster to a particular host device. Physical devices may be associated with clusters as hosts. This allows users to track on which host(s) a particular virtual machine may reside. However, NetBox does not support pinning a specific VM within a cluster to a particular host device.

View File

@ -10,6 +10,7 @@
### Enhancements ### Enhancements
* [#1337](https://github.com/netbox-community/netbox/issues/1337) - Add WWN field to interfaces * [#1337](https://github.com/netbox-community/netbox/issues/1337) - Add WWN field to interfaces
* [#1943](https://github.com/netbox-community/netbox/issues/1943) - Relax uniqueness constraint on cluster names
* [#3839](https://github.com/netbox-community/netbox/issues/3839) - Add `airflow` field for devices types and devices * [#3839](https://github.com/netbox-community/netbox/issues/3839) - Add `airflow` field for devices types and devices
* [#6711](https://github.com/netbox-community/netbox/issues/6711) - Add `longtext` custom field type with Markdown support * [#6711](https://github.com/netbox-community/netbox/issues/6711) - Add `longtext` custom field type with Markdown support
* [#6715](https://github.com/netbox-community/netbox/issues/6715) - Add tenant assignment for cables * [#6715](https://github.com/netbox-community/netbox/issues/6715) - Add tenant assignment for cables

View File

@ -44,9 +44,9 @@ class ClusterGroupSerializer(OrganizationalModelSerializer):
class ClusterSerializer(PrimaryModelSerializer): class ClusterSerializer(PrimaryModelSerializer):
url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:cluster-detail') url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:cluster-detail')
type = NestedClusterTypeSerializer() type = NestedClusterTypeSerializer()
group = NestedClusterGroupSerializer(required=False, allow_null=True) group = NestedClusterGroupSerializer(required=False, allow_null=True, default=None)
tenant = NestedTenantSerializer(required=False, allow_null=True) tenant = NestedTenantSerializer(required=False, allow_null=True)
site = NestedSiteSerializer(required=False, allow_null=True) site = NestedSiteSerializer(required=False, allow_null=True, default=None)
device_count = serializers.IntegerField(read_only=True) device_count = serializers.IntegerField(read_only=True)
virtualmachine_count = serializers.IntegerField(read_only=True) virtualmachine_count = serializers.IntegerField(read_only=True)

View File

@ -0,0 +1,21 @@
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('dcim', '0136_device_airflow'),
('virtualization', '0023_virtualmachine_natural_ordering'),
]
operations = [
migrations.AlterField(
model_name='cluster',
name='name',
field=models.CharField(max_length=100),
),
migrations.AlterUniqueTogether(
name='cluster',
unique_together={('site', 'name'), ('group', 'name')},
),
]

View File

@ -115,8 +115,7 @@ class Cluster(PrimaryModel):
A cluster of VirtualMachines. Each Cluster may optionally be associated with one or more Devices. A cluster of VirtualMachines. Each Cluster may optionally be associated with one or more Devices.
""" """
name = models.CharField( name = models.CharField(
max_length=100, max_length=100
unique=True
) )
type = models.ForeignKey( type = models.ForeignKey(
to=ClusterType, to=ClusterType,
@ -167,6 +166,10 @@ class Cluster(PrimaryModel):
class Meta: class Meta:
ordering = ['name'] ordering = ['name']
unique_together = (
('group', 'name'),
('site', 'name'),
)
def __str__(self): def __str__(self):
return self.name return self.name