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

Add a description field to all organizational models

Jeremy Stretch 6 лет назад
Родитель
Сommit
cebe580484

+ 6 - 4
netbox/dcim/api/serializers.py

@@ -64,7 +64,7 @@ class RegionSerializer(serializers.ModelSerializer):
 
 
     class Meta:
     class Meta:
         model = Region
         model = Region
-        fields = ['id', 'name', 'slug', 'parent', 'site_count']
+        fields = ['id', 'name', 'slug', 'parent', 'description', 'site_count']
 
 
 
 
 class SiteSerializer(TaggitSerializer, CustomFieldModelSerializer):
 class SiteSerializer(TaggitSerializer, CustomFieldModelSerializer):
@@ -101,7 +101,7 @@ class RackGroupSerializer(ValidatedModelSerializer):
 
 
     class Meta:
     class Meta:
         model = RackGroup
         model = RackGroup
-        fields = ['id', 'name', 'slug', 'site', 'parent', 'rack_count']
+        fields = ['id', 'name', 'slug', 'site', 'parent', 'description', 'rack_count']
 
 
 
 
 class RackRoleSerializer(ValidatedModelSerializer):
 class RackRoleSerializer(ValidatedModelSerializer):
@@ -219,7 +219,9 @@ class ManufacturerSerializer(ValidatedModelSerializer):
 
 
     class Meta:
     class Meta:
         model = Manufacturer
         model = Manufacturer
-        fields = ['id', 'name', 'slug', 'devicetype_count', 'inventoryitem_count', 'platform_count']
+        fields = [
+            'id', 'name', 'slug', 'description', 'devicetype_count', 'inventoryitem_count', 'platform_count',
+        ]
 
 
 
 
 class DeviceTypeSerializer(TaggitSerializer, CustomFieldModelSerializer):
 class DeviceTypeSerializer(TaggitSerializer, CustomFieldModelSerializer):
@@ -356,7 +358,7 @@ class PlatformSerializer(ValidatedModelSerializer):
     class Meta:
     class Meta:
         model = Platform
         model = Platform
         fields = [
         fields = [
-            'id', 'name', 'slug', 'manufacturer', 'napalm_driver', 'napalm_args', 'device_count',
+            'id', 'name', 'slug', 'manufacturer', 'napalm_driver', 'napalm_args', 'description', 'device_count',
             'virtualmachine_count',
             'virtualmachine_count',
         ]
         ]
 
 

+ 4 - 4
netbox/dcim/filters.py

@@ -74,7 +74,7 @@ class RegionFilterSet(BaseFilterSet, NameSlugSearchFilterSet):
 
 
     class Meta:
     class Meta:
         model = Region
         model = Region
-        fields = ['id', 'name', 'slug']
+        fields = ['id', 'name', 'slug', 'description']
 
 
 
 
 class SiteFilterSet(BaseFilterSet, TenancyFilterSet, CustomFieldFilterSet, CreatedUpdatedFilterSet):
 class SiteFilterSet(BaseFilterSet, TenancyFilterSet, CustomFieldFilterSet, CreatedUpdatedFilterSet):
@@ -166,7 +166,7 @@ class RackGroupFilterSet(BaseFilterSet, NameSlugSearchFilterSet):
 
 
     class Meta:
     class Meta:
         model = RackGroup
         model = RackGroup
-        fields = ['id', 'name', 'slug']
+        fields = ['id', 'name', 'slug', 'description']
 
 
 
 
 class RackRoleFilterSet(BaseFilterSet, NameSlugSearchFilterSet):
 class RackRoleFilterSet(BaseFilterSet, NameSlugSearchFilterSet):
@@ -318,7 +318,7 @@ class ManufacturerFilterSet(BaseFilterSet, NameSlugSearchFilterSet):
 
 
     class Meta:
     class Meta:
         model = Manufacturer
         model = Manufacturer
-        fields = ['id', 'name', 'slug']
+        fields = ['id', 'name', 'slug', 'description']
 
 
 
 
 class DeviceTypeFilterSet(BaseFilterSet, CustomFieldFilterSet, CreatedUpdatedFilterSet):
 class DeviceTypeFilterSet(BaseFilterSet, CustomFieldFilterSet, CreatedUpdatedFilterSet):
@@ -493,7 +493,7 @@ class PlatformFilterSet(BaseFilterSet, NameSlugSearchFilterSet):
 
 
     class Meta:
     class Meta:
         model = Platform
         model = Platform
-        fields = ['id', 'name', 'slug', 'napalm_driver']
+        fields = ['id', 'name', 'slug', 'napalm_driver', 'description']
 
 
 
 
 class DeviceFilterSet(
 class DeviceFilterSet(

+ 4 - 4
netbox/dcim/forms.py

@@ -192,7 +192,7 @@ class RegionForm(BootstrapMixin, forms.ModelForm):
     class Meta:
     class Meta:
         model = Region
         model = Region
         fields = (
         fields = (
-            'parent', 'name', 'slug',
+            'parent', 'name', 'slug', 'description',
         )
         )
 
 
 
 
@@ -404,7 +404,7 @@ class RackGroupForm(BootstrapMixin, forms.ModelForm):
     class Meta:
     class Meta:
         model = RackGroup
         model = RackGroup
         fields = (
         fields = (
-            'site', 'parent', 'name', 'slug',
+            'site', 'parent', 'name', 'slug', 'description',
         )
         )
 
 
 
 
@@ -983,7 +983,7 @@ class ManufacturerForm(BootstrapMixin, forms.ModelForm):
     class Meta:
     class Meta:
         model = Manufacturer
         model = Manufacturer
         fields = [
         fields = [
-            'name', 'slug',
+            'name', 'slug', 'description',
         ]
         ]
 
 
 
 
@@ -1768,7 +1768,7 @@ class PlatformForm(BootstrapMixin, forms.ModelForm):
     class Meta:
     class Meta:
         model = Platform
         model = Platform
         fields = [
         fields = [
-            'name', 'slug', 'manufacturer', 'napalm_driver', 'napalm_args',
+            'name', 'slug', 'manufacturer', 'napalm_driver', 'napalm_args', 'description',
         ]
         ]
         widgets = {
         widgets = {
             'napalm_args': SmallTextarea(),
             'napalm_args': SmallTextarea(),

+ 24 - 4
netbox/dcim/models/__init__.py

@@ -94,8 +94,12 @@ class Region(MPTTModel, ChangeLoggedModel):
     slug = models.SlugField(
     slug = models.SlugField(
         unique=True
         unique=True
     )
     )
+    description = models.CharField(
+        max_length=200,
+        blank=True
+    )
 
 
-    csv_headers = ['name', 'slug', 'parent']
+    csv_headers = ['name', 'slug', 'parent', 'description']
 
 
     class MPTTMeta:
     class MPTTMeta:
         order_insertion_by = ['name']
         order_insertion_by = ['name']
@@ -111,6 +115,7 @@ class Region(MPTTModel, ChangeLoggedModel):
             self.name,
             self.name,
             self.slug,
             self.slug,
             self.parent.name if self.parent else None,
             self.parent.name if self.parent else None,
+            self.description,
         )
         )
 
 
     def get_site_count(self):
     def get_site_count(self):
@@ -306,8 +311,12 @@ class RackGroup(MPTTModel, ChangeLoggedModel):
         null=True,
         null=True,
         db_index=True
         db_index=True
     )
     )
+    description = models.CharField(
+        max_length=200,
+        blank=True
+    )
 
 
-    csv_headers = ['site', 'parent', 'name', 'slug']
+    csv_headers = ['site', 'parent', 'name', 'slug', 'description']
 
 
     class Meta:
     class Meta:
         ordering = ['site', 'name']
         ordering = ['site', 'name']
@@ -331,6 +340,7 @@ class RackGroup(MPTTModel, ChangeLoggedModel):
             self.parent.name if self.parent else '',
             self.parent.name if self.parent else '',
             self.name,
             self.name,
             self.slug,
             self.slug,
+            self.description,
         )
         )
 
 
     def to_objectchange(self, action):
     def to_objectchange(self, action):
@@ -858,8 +868,12 @@ class Manufacturer(ChangeLoggedModel):
     slug = models.SlugField(
     slug = models.SlugField(
         unique=True
         unique=True
     )
     )
+    description = models.CharField(
+        max_length=200,
+        blank=True
+    )
 
 
-    csv_headers = ['name', 'slug']
+    csv_headers = ['name', 'slug', 'description']
 
 
     class Meta:
     class Meta:
         ordering = ['name']
         ordering = ['name']
@@ -874,6 +888,7 @@ class Manufacturer(ChangeLoggedModel):
         return (
         return (
             self.name,
             self.name,
             self.slug,
             self.slug,
+            self.description
         )
         )
 
 
 
 
@@ -1198,8 +1213,12 @@ class Platform(ChangeLoggedModel):
         verbose_name='NAPALM arguments',
         verbose_name='NAPALM arguments',
         help_text='Additional arguments to pass when initiating the NAPALM driver (JSON format)'
         help_text='Additional arguments to pass when initiating the NAPALM driver (JSON format)'
     )
     )
+    description = models.CharField(
+        max_length=200,
+        blank=True
+    )
 
 
-    csv_headers = ['name', 'slug', 'manufacturer', 'napalm_driver', 'napalm_args']
+    csv_headers = ['name', 'slug', 'manufacturer', 'napalm_driver', 'napalm_args', 'description']
 
 
     class Meta:
     class Meta:
         ordering = ['name']
         ordering = ['name']
@@ -1217,6 +1236,7 @@ class Platform(ChangeLoggedModel):
             self.manufacturer.name if self.manufacturer else None,
             self.manufacturer.name if self.manufacturer else None,
             self.napalm_driver,
             self.napalm_driver,
             self.napalm_args,
             self.napalm_args,
+            self.description,
         )
         )
 
 
 
 

+ 8 - 4
netbox/dcim/tables.py

@@ -225,7 +225,7 @@ class RegionTable(BaseTable):
 
 
     class Meta(BaseTable.Meta):
     class Meta(BaseTable.Meta):
         model = Region
         model = Region
-        fields = ('pk', 'name', 'site_count', 'slug', 'actions')
+        fields = ('pk', 'name', 'site_count', 'description', 'slug', 'actions')
 
 
 
 
 #
 #
@@ -271,7 +271,7 @@ class RackGroupTable(BaseTable):
 
 
     class Meta(BaseTable.Meta):
     class Meta(BaseTable.Meta):
         model = RackGroup
         model = RackGroup
-        fields = ('pk', 'name', 'site', 'rack_count', 'slug', 'actions')
+        fields = ('pk', 'name', 'site', 'rack_count', 'description', 'slug', 'actions')
 
 
 
 
 #
 #
@@ -383,7 +383,9 @@ class ManufacturerTable(BaseTable):
 
 
     class Meta(BaseTable.Meta):
     class Meta(BaseTable.Meta):
         model = Manufacturer
         model = Manufacturer
-        fields = ('pk', 'name', 'devicetype_count', 'inventoryitem_count', 'platform_count', 'slug', 'actions')
+        fields = (
+            'pk', 'name', 'devicetype_count', 'inventoryitem_count', 'platform_count', 'description', 'slug', 'actions',
+        )
 
 
 
 
 #
 #
@@ -659,7 +661,9 @@ class PlatformTable(BaseTable):
 
 
     class Meta(BaseTable.Meta):
     class Meta(BaseTable.Meta):
         model = Platform
         model = Platform
-        fields = ('pk', 'name', 'manufacturer', 'device_count', 'vm_count', 'slug', 'napalm_driver', 'actions')
+        fields = (
+            'pk', 'name', 'manufacturer', 'device_count', 'vm_count', 'slug', 'napalm_driver', 'description', 'actions',
+        )
 
 
 
 
 #
 #

+ 34 - 17
netbox/dcim/tests/test_filters.py

@@ -17,14 +17,15 @@ from virtualization.models import Cluster, ClusterType
 
 
 class RegionTestCase(TestCase):
 class RegionTestCase(TestCase):
     queryset = Region.objects.all()
     queryset = Region.objects.all()
+    filterset = RegionFilterSet
 
 
     @classmethod
     @classmethod
     def setUpTestData(cls):
     def setUpTestData(cls):
 
 
         regions = (
         regions = (
-            Region(name='Region 1', slug='region-1'),
-            Region(name='Region 2', slug='region-2'),
-            Region(name='Region 3', slug='region-3'),
+            Region(name='Region 1', slug='region-1', description='A'),
+            Region(name='Region 2', slug='region-2', description='B'),
+            Region(name='Region 3', slug='region-3', description='C'),
         )
         )
         for region in regions:
         for region in regions:
             region.save()
             region.save()
@@ -43,22 +44,26 @@ class RegionTestCase(TestCase):
     def test_id(self):
     def test_id(self):
         id_list = self.queryset.values_list('id', flat=True)[:2]
         id_list = self.queryset.values_list('id', flat=True)[:2]
         params = {'id': [str(id) for id in id_list]}
         params = {'id': [str(id) for id in id_list]}
-        self.assertEqual(RegionFilterSet(params, self.queryset).qs.count(), 2)
+        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
     def test_name(self):
     def test_name(self):
         params = {'name': ['Region 1', 'Region 2']}
         params = {'name': ['Region 1', 'Region 2']}
-        self.assertEqual(RegionFilterSet(params, self.queryset).qs.count(), 2)
+        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
     def test_slug(self):
     def test_slug(self):
         params = {'slug': ['region-1', 'region-2']}
         params = {'slug': ['region-1', 'region-2']}
-        self.assertEqual(RegionFilterSet(params, self.queryset).qs.count(), 2)
+        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
+
+    def test_description(self):
+        params = {'description': ['A', 'B']}
+        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
     def test_parent(self):
     def test_parent(self):
         parent_regions = Region.objects.filter(parent__isnull=True)[:2]
         parent_regions = Region.objects.filter(parent__isnull=True)[:2]
         params = {'parent_id': [parent_regions[0].pk, parent_regions[1].pk]}
         params = {'parent_id': [parent_regions[0].pk, parent_regions[1].pk]}
-        self.assertEqual(RegionFilterSet(params, self.queryset).qs.count(), 4)
+        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
         params = {'parent': [parent_regions[0].slug, parent_regions[1].slug]}
         params = {'parent': [parent_regions[0].slug, parent_regions[1].slug]}
-        self.assertEqual(RegionFilterSet(params, self.queryset).qs.count(), 4)
+        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
 
 
 
 
 class SiteTestCase(TestCase):
 class SiteTestCase(TestCase):
@@ -196,9 +201,9 @@ class RackGroupTestCase(TestCase):
             rackgroup.save()
             rackgroup.save()
 
 
         rack_groups = (
         rack_groups = (
-            RackGroup(name='Rack Group 1', slug='rack-group-1', site=sites[0], parent=parent_rack_groups[0]),
-            RackGroup(name='Rack Group 2', slug='rack-group-2', site=sites[1], parent=parent_rack_groups[1]),
-            RackGroup(name='Rack Group 3', slug='rack-group-3', site=sites[2], parent=parent_rack_groups[2]),
+            RackGroup(name='Rack Group 1', slug='rack-group-1', site=sites[0], parent=parent_rack_groups[0], description='A'),
+            RackGroup(name='Rack Group 2', slug='rack-group-2', site=sites[1], parent=parent_rack_groups[1], description='B'),
+            RackGroup(name='Rack Group 3', slug='rack-group-3', site=sites[2], parent=parent_rack_groups[2], description='C'),
         )
         )
         for rackgroup in rack_groups:
         for rackgroup in rack_groups:
             rackgroup.save()
             rackgroup.save()
@@ -216,6 +221,10 @@ class RackGroupTestCase(TestCase):
         params = {'slug': ['rack-group-1', 'rack-group-2']}
         params = {'slug': ['rack-group-1', 'rack-group-2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
+    def test_description(self):
+        params = {'description': ['A', 'B']}
+        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
+
     def test_region(self):
     def test_region(self):
         regions = Region.objects.all()[:2]
         regions = Region.objects.all()[:2]
         params = {'region_id': [regions[0].pk, regions[1].pk]}
         params = {'region_id': [regions[0].pk, regions[1].pk]}
@@ -535,9 +544,9 @@ class ManufacturerTestCase(TestCase):
     def setUpTestData(cls):
     def setUpTestData(cls):
 
 
         manufacturers = (
         manufacturers = (
-            Manufacturer(name='Manufacturer 1', slug='manufacturer-1'),
-            Manufacturer(name='Manufacturer 2', slug='manufacturer-2'),
-            Manufacturer(name='Manufacturer 3', slug='manufacturer-3'),
+            Manufacturer(name='Manufacturer 1', slug='manufacturer-1', description='A'),
+            Manufacturer(name='Manufacturer 2', slug='manufacturer-2', description='B'),
+            Manufacturer(name='Manufacturer 3', slug='manufacturer-3', description='C'),
         )
         )
         Manufacturer.objects.bulk_create(manufacturers)
         Manufacturer.objects.bulk_create(manufacturers)
 
 
@@ -554,6 +563,10 @@ class ManufacturerTestCase(TestCase):
         params = {'slug': ['manufacturer-1', 'manufacturer-2']}
         params = {'slug': ['manufacturer-1', 'manufacturer-2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
+    def test_description(self):
+        params = {'description': ['A', 'B']}
+        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
+
 
 
 class DeviceTypeTestCase(TestCase):
 class DeviceTypeTestCase(TestCase):
     queryset = DeviceType.objects.all()
     queryset = DeviceType.objects.all()
@@ -1081,9 +1094,9 @@ class PlatformTestCase(TestCase):
         Manufacturer.objects.bulk_create(manufacturers)
         Manufacturer.objects.bulk_create(manufacturers)
 
 
         platforms = (
         platforms = (
-            Platform(name='Platform 1', slug='platform-1', manufacturer=manufacturers[0], napalm_driver='driver-1'),
-            Platform(name='Platform 2', slug='platform-2', manufacturer=manufacturers[1], napalm_driver='driver-2'),
-            Platform(name='Platform 3', slug='platform-3', manufacturer=manufacturers[2], napalm_driver='driver-3'),
+            Platform(name='Platform 1', slug='platform-1', manufacturer=manufacturers[0], napalm_driver='driver-1', description='A'),
+            Platform(name='Platform 2', slug='platform-2', manufacturer=manufacturers[1], napalm_driver='driver-2', description='B'),
+            Platform(name='Platform 3', slug='platform-3', manufacturer=manufacturers[2], napalm_driver='driver-3', description='C'),
         )
         )
         Platform.objects.bulk_create(platforms)
         Platform.objects.bulk_create(platforms)
 
 
@@ -1100,6 +1113,10 @@ class PlatformTestCase(TestCase):
         params = {'slug': ['platform-1', 'platform-2']}
         params = {'slug': ['platform-1', 'platform-2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
+    def test_description(self):
+        params = {'description': ['A', 'B']}
+        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
+
     def test_napalm_driver(self):
     def test_napalm_driver(self):
         params = {'napalm_driver': ['driver-1', 'driver-2']}
         params = {'napalm_driver': ['driver-1', 'driver-2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)

+ 20 - 16
netbox/dcim/tests/test_views.py

@@ -46,13 +46,14 @@ class RegionTestCase(ViewTestCases.OrganizationalObjectViewTestCase):
             'name': 'Region X',
             'name': 'Region X',
             'slug': 'region-x',
             'slug': 'region-x',
             'parent': regions[2].pk,
             'parent': regions[2].pk,
+            'description': 'A new region',
         }
         }
 
 
         cls.csv_data = (
         cls.csv_data = (
-            "name,slug",
-            "Region 4,region-4",
-            "Region 5,region-5",
-            "Region 6,region-6",
+            "name,slug,description",
+            "Region 4,region-4,Fourth region",
+            "Region 5,region-5,Fifth region",
+            "Region 6,region-6,Sixth region",
         )
         )
 
 
 
 
@@ -134,13 +135,14 @@ class RackGroupTestCase(ViewTestCases.OrganizationalObjectViewTestCase):
             'name': 'Rack Group X',
             'name': 'Rack Group X',
             'slug': 'rack-group-x',
             'slug': 'rack-group-x',
             'site': site.pk,
             'site': site.pk,
+            'description': 'A new rack group',
         }
         }
 
 
         cls.csv_data = (
         cls.csv_data = (
-            "site,name,slug",
-            "Site 1,Rack Group 4,rack-group-4",
-            "Site 1,Rack Group 5,rack-group-5",
-            "Site 1,Rack Group 6,rack-group-6",
+            "site,name,slug,description",
+            "Site 1,Rack Group 4,rack-group-4,Fourth rack group",
+            "Site 1,Rack Group 5,rack-group-5,Fifth rack group",
+            "Site 1,Rack Group 6,rack-group-6,Sixth rack group",
         )
         )
 
 
 
 
@@ -309,13 +311,14 @@ class ManufacturerTestCase(ViewTestCases.OrganizationalObjectViewTestCase):
         cls.form_data = {
         cls.form_data = {
             'name': 'Manufacturer X',
             'name': 'Manufacturer X',
             'slug': 'manufacturer-x',
             'slug': 'manufacturer-x',
+            'description': 'A new manufacturer',
         }
         }
 
 
         cls.csv_data = (
         cls.csv_data = (
-            "name,slug",
-            "Manufacturer 4,manufacturer-4",
-            "Manufacturer 5,manufacturer-5",
-            "Manufacturer 6,manufacturer-6",
+            "name,slug,description",
+            "Manufacturer 4,manufacturer-4,Fourth manufacturer",
+            "Manufacturer 5,manufacturer-5,Fifth manufacturer",
+            "Manufacturer 6,manufacturer-6,Sixth manufacturer",
         )
         )
 
 
 
 
@@ -868,13 +871,14 @@ class PlatformTestCase(ViewTestCases.OrganizationalObjectViewTestCase):
             'manufacturer': manufacturer.pk,
             'manufacturer': manufacturer.pk,
             'napalm_driver': 'junos',
             'napalm_driver': 'junos',
             'napalm_args': None,
             'napalm_args': None,
+            'description': 'A new platform',
         }
         }
 
 
         cls.csv_data = (
         cls.csv_data = (
-            "name,slug",
-            "Platform 4,platform-4",
-            "Platform 5,platform-5",
-            "Platform 6,platform-6",
+            "name,slug,description",
+            "Platform 4,platform-4,Fourth platform",
+            "Platform 5,platform-5,Fifth platform",
+            "Platform 6,platform-6,Sixth platform",
         )
         )
 
 
 
 

+ 2 - 2
netbox/ipam/api/serializers.py

@@ -45,7 +45,7 @@ class RIRSerializer(ValidatedModelSerializer):
 
 
     class Meta:
     class Meta:
         model = RIR
         model = RIR
-        fields = ['id', 'name', 'slug', 'is_private', 'aggregate_count']
+        fields = ['id', 'name', 'slug', 'is_private', 'description', 'aggregate_count']
 
 
 
 
 class AggregateSerializer(TaggitSerializer, CustomFieldModelSerializer):
 class AggregateSerializer(TaggitSerializer, CustomFieldModelSerializer):
@@ -81,7 +81,7 @@ class VLANGroupSerializer(ValidatedModelSerializer):
 
 
     class Meta:
     class Meta:
         model = VLANGroup
         model = VLANGroup
-        fields = ['id', 'name', 'slug', 'site', 'vlan_count']
+        fields = ['id', 'name', 'slug', 'site', 'description', 'vlan_count']
         validators = []
         validators = []
 
 
     def validate(self, data):
     def validate(self, data):

+ 2 - 2
netbox/ipam/filters.py

@@ -54,7 +54,7 @@ class RIRFilterSet(BaseFilterSet, NameSlugSearchFilterSet):
 
 
     class Meta:
     class Meta:
         model = RIR
         model = RIR
-        fields = ['name', 'slug', 'is_private']
+        fields = ['name', 'slug', 'is_private', 'description']
 
 
 
 
 class AggregateFilterSet(BaseFilterSet, CustomFieldFilterSet, CreatedUpdatedFilterSet):
 class AggregateFilterSet(BaseFilterSet, CustomFieldFilterSet, CreatedUpdatedFilterSet):
@@ -419,7 +419,7 @@ class VLANGroupFilterSet(BaseFilterSet, NameSlugSearchFilterSet):
 
 
     class Meta:
     class Meta:
         model = VLANGroup
         model = VLANGroup
-        fields = ['id', 'name', 'slug']
+        fields = ['id', 'name', 'slug', 'description']
 
 
 
 
 class VLANFilterSet(BaseFilterSet, TenancyFilterSet, CustomFieldFilterSet, CreatedUpdatedFilterSet):
 class VLANFilterSet(BaseFilterSet, TenancyFilterSet, CustomFieldFilterSet, CreatedUpdatedFilterSet):

+ 2 - 2
netbox/ipam/forms.py

@@ -119,7 +119,7 @@ class RIRForm(BootstrapMixin, forms.ModelForm):
     class Meta:
     class Meta:
         model = RIR
         model = RIR
         fields = [
         fields = [
-            'name', 'slug', 'is_private',
+            'name', 'slug', 'is_private', 'description',
         ]
         ]
 
 
 
 
@@ -1048,7 +1048,7 @@ class VLANGroupForm(BootstrapMixin, forms.ModelForm):
     class Meta:
     class Meta:
         model = VLANGroup
         model = VLANGroup
         fields = [
         fields = [
-            'site', 'name', 'slug',
+            'site', 'name', 'slug', 'description',
         ]
         ]
 
 
 
 

+ 12 - 2
netbox/ipam/models.py

@@ -123,8 +123,12 @@ class RIR(ChangeLoggedModel):
         verbose_name='Private',
         verbose_name='Private',
         help_text='IP space managed by this RIR is considered private'
         help_text='IP space managed by this RIR is considered private'
     )
     )
+    description = models.CharField(
+        max_length=200,
+        blank=True
+    )
 
 
-    csv_headers = ['name', 'slug', 'is_private']
+    csv_headers = ['name', 'slug', 'is_private', 'description']
 
 
     class Meta:
     class Meta:
         ordering = ['name']
         ordering = ['name']
@@ -142,6 +146,7 @@ class RIR(ChangeLoggedModel):
             self.name,
             self.name,
             self.slug,
             self.slug,
             self.is_private,
             self.is_private,
+            self.description,
         )
         )
 
 
 
 
@@ -812,8 +817,12 @@ class VLANGroup(ChangeLoggedModel):
         blank=True,
         blank=True,
         null=True
         null=True
     )
     )
+    description = models.CharField(
+        max_length=200,
+        blank=True
+    )
 
 
-    csv_headers = ['name', 'slug', 'site']
+    csv_headers = ['name', 'slug', 'site', 'description']
 
 
     class Meta:
     class Meta:
         ordering = ('site', 'name', 'pk')  # (site, name) may be non-unique
         ordering = ('site', 'name', 'pk')  # (site, name) may be non-unique
@@ -835,6 +844,7 @@ class VLANGroup(ChangeLoggedModel):
             self.name,
             self.name,
             self.slug,
             self.slug,
             self.site.name if self.site else None,
             self.site.name if self.site else None,
+            self.description,
         )
         )
 
 
     def get_next_available_vid(self):
     def get_next_available_vid(self):

+ 2 - 2
netbox/ipam/tables.py

@@ -211,7 +211,7 @@ class RIRTable(BaseTable):
 
 
     class Meta(BaseTable.Meta):
     class Meta(BaseTable.Meta):
         model = RIR
         model = RIR
-        fields = ('pk', 'name', 'is_private', 'aggregate_count', 'actions')
+        fields = ('pk', 'name', 'is_private', 'aggregate_count', 'description', 'actions')
 
 
 
 
 class RIRDetailTable(RIRTable):
 class RIRDetailTable(RIRTable):
@@ -410,7 +410,7 @@ class VLANGroupTable(BaseTable):
 
 
     class Meta(BaseTable.Meta):
     class Meta(BaseTable.Meta):
         model = VLANGroup
         model = VLANGroup
-        fields = ('pk', 'name', 'site', 'vlan_count', 'slug', 'actions')
+        fields = ('pk', 'name', 'site', 'vlan_count', 'slug', 'description', 'actions')
 
 
 
 
 #
 #

+ 17 - 9
netbox/ipam/tests/test_filters.py

@@ -77,12 +77,12 @@ class RIRTestCase(TestCase):
     def setUpTestData(cls):
     def setUpTestData(cls):
 
 
         rirs = (
         rirs = (
-            RIR(name='RIR 1', slug='rir-1', is_private=False),
-            RIR(name='RIR 2', slug='rir-2', is_private=False),
-            RIR(name='RIR 3', slug='rir-3', is_private=False),
-            RIR(name='RIR 4', slug='rir-4', is_private=True),
-            RIR(name='RIR 5', slug='rir-5', is_private=True),
-            RIR(name='RIR 6', slug='rir-6', is_private=True),
+            RIR(name='RIR 1', slug='rir-1', is_private=False, description='A'),
+            RIR(name='RIR 2', slug='rir-2', is_private=False, description='B'),
+            RIR(name='RIR 3', slug='rir-3', is_private=False, description='C'),
+            RIR(name='RIR 4', slug='rir-4', is_private=True, description='D'),
+            RIR(name='RIR 5', slug='rir-5', is_private=True, description='E'),
+            RIR(name='RIR 6', slug='rir-6', is_private=True, description='F'),
         )
         )
         RIR.objects.bulk_create(rirs)
         RIR.objects.bulk_create(rirs)
 
 
@@ -94,6 +94,10 @@ class RIRTestCase(TestCase):
         params = {'slug': ['rir-1', 'rir-2']}
         params = {'slug': ['rir-1', 'rir-2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
+    def test_description(self):
+        params = {'description': ['A', 'B']}
+        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
+
     def test_is_private(self):
     def test_is_private(self):
         params = {'is_private': 'true'}
         params = {'is_private': 'true'}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3)
@@ -519,9 +523,9 @@ class VLANGroupTestCase(TestCase):
         Site.objects.bulk_create(sites)
         Site.objects.bulk_create(sites)
 
 
         vlan_groups = (
         vlan_groups = (
-            VLANGroup(name='VLAN Group 1', slug='vlan-group-1', site=sites[0]),
-            VLANGroup(name='VLAN Group 2', slug='vlan-group-2', site=sites[1]),
-            VLANGroup(name='VLAN Group 3', slug='vlan-group-3', site=sites[2]),
+            VLANGroup(name='VLAN Group 1', slug='vlan-group-1', site=sites[0], description='A'),
+            VLANGroup(name='VLAN Group 2', slug='vlan-group-2', site=sites[1], description='B'),
+            VLANGroup(name='VLAN Group 3', slug='vlan-group-3', site=sites[2], description='C'),
             VLANGroup(name='VLAN Group 4', slug='vlan-group-4', site=None),
             VLANGroup(name='VLAN Group 4', slug='vlan-group-4', site=None),
         )
         )
         VLANGroup.objects.bulk_create(vlan_groups)
         VLANGroup.objects.bulk_create(vlan_groups)
@@ -539,6 +543,10 @@ class VLANGroupTestCase(TestCase):
         params = {'slug': ['vlan-group-1', 'vlan-group-2']}
         params = {'slug': ['vlan-group-1', 'vlan-group-2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
+    def test_description(self):
+        params = {'description': ['A', 'B']}
+        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
+
     def test_region(self):
     def test_region(self):
         regions = Region.objects.all()[:2]
         regions = Region.objects.all()[:2]
         params = {'region_id': [regions[0].pk, regions[1].pk]}
         params = {'region_id': [regions[0].pk, regions[1].pk]}

+ 10 - 8
netbox/ipam/tests/test_views.py

@@ -59,13 +59,14 @@ class RIRTestCase(ViewTestCases.OrganizationalObjectViewTestCase):
             'name': 'RIR X',
             'name': 'RIR X',
             'slug': 'rir-x',
             'slug': 'rir-x',
             'is_private': True,
             'is_private': True,
+            'description': 'A new RIR',
         }
         }
 
 
         cls.csv_data = (
         cls.csv_data = (
-            "name,slug",
-            "RIR 4,rir-4",
-            "RIR 5,rir-5",
-            "RIR 6,rir-6",
+            "name,slug,description",
+            "RIR 4,rir-4,Fourth RIR",
+            "RIR 5,rir-5,Fifth RIR",
+            "RIR 6,rir-6,Sixth RIR",
         )
         )
 
 
 
 
@@ -261,13 +262,14 @@ class VLANGroupTestCase(ViewTestCases.OrganizationalObjectViewTestCase):
             'name': 'VLAN Group X',
             'name': 'VLAN Group X',
             'slug': 'vlan-group-x',
             'slug': 'vlan-group-x',
             'site': site.pk,
             'site': site.pk,
+            'description': 'A new VLAN group',
         }
         }
 
 
         cls.csv_data = (
         cls.csv_data = (
-            "name,slug",
-            "VLAN Group 4,vlan-group-4",
-            "VLAN Group 5,vlan-group-5",
-            "VLAN Group 6,vlan-group-6",
+            "name,slug,description",
+            "VLAN Group 4,vlan-group-4,Fourth VLAN group",
+            "VLAN Group 5,vlan-group-5,Fifth VLAN group",
+            "VLAN Group 6,vlan-group-6,Sixth VLAN group",
         )
         )
 
 
 
 

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

@@ -17,7 +17,7 @@ class TenantGroupSerializer(ValidatedModelSerializer):
 
 
     class Meta:
     class Meta:
         model = TenantGroup
         model = TenantGroup
-        fields = ['id', 'name', 'slug', 'parent', 'tenant_count']
+        fields = ['id', 'name', 'slug', 'parent', 'description', 'tenant_count']
 
 
 
 
 class TenantSerializer(TaggitSerializer, CustomFieldModelSerializer):
 class TenantSerializer(TaggitSerializer, CustomFieldModelSerializer):

+ 1 - 1
netbox/tenancy/filters.py

@@ -27,7 +27,7 @@ class TenantGroupFilterSet(BaseFilterSet, NameSlugSearchFilterSet):
 
 
     class Meta:
     class Meta:
         model = TenantGroup
         model = TenantGroup
-        fields = ['id', 'name', 'slug']
+        fields = ['id', 'name', 'slug', 'description']
 
 
 
 
 class TenantFilterSet(BaseFilterSet, CustomFieldFilterSet, CreatedUpdatedFilterSet):
 class TenantFilterSet(BaseFilterSet, CustomFieldFilterSet, CreatedUpdatedFilterSet):

+ 1 - 1
netbox/tenancy/forms.py

@@ -28,7 +28,7 @@ class TenantGroupForm(BootstrapMixin, forms.ModelForm):
     class Meta:
     class Meta:
         model = TenantGroup
         model = TenantGroup
         fields = [
         fields = [
-            'parent', 'name', 'slug',
+            'parent', 'name', 'slug', 'description',
         ]
         ]
 
 
 
 

+ 6 - 1
netbox/tenancy/models.py

@@ -34,8 +34,12 @@ class TenantGroup(MPTTModel, ChangeLoggedModel):
         null=True,
         null=True,
         db_index=True
         db_index=True
     )
     )
+    description = models.CharField(
+        max_length=200,
+        blank=True
+    )
 
 
-    csv_headers = ['name', 'slug', 'parent']
+    csv_headers = ['name', 'slug', 'parent', 'description']
 
 
     class Meta:
     class Meta:
         ordering = ['name']
         ordering = ['name']
@@ -54,6 +58,7 @@ class TenantGroup(MPTTModel, ChangeLoggedModel):
             self.name,
             self.name,
             self.slug,
             self.slug,
             self.parent.name if self.parent else '',
             self.parent.name if self.parent else '',
+            self.description,
         )
         )
 
 
     def to_objectchange(self, action):
     def to_objectchange(self, action):

+ 1 - 1
netbox/tenancy/tables.py

@@ -53,7 +53,7 @@ class TenantGroupTable(BaseTable):
 
 
     class Meta(BaseTable.Meta):
     class Meta(BaseTable.Meta):
         model = TenantGroup
         model = TenantGroup
-        fields = ('pk', 'name', 'tenant_count', 'slug', 'actions')
+        fields = ('pk', 'name', 'tenant_count', 'description', 'slug', 'actions')
 
 
 
 
 #
 #

+ 7 - 3
netbox/tenancy/tests/test_filters.py

@@ -20,9 +20,9 @@ class TenantGroupTestCase(TestCase):
             tenantgroup.save()
             tenantgroup.save()
 
 
         tenant_groups = (
         tenant_groups = (
-            TenantGroup(name='Tenant Group 1', slug='tenant-group-1', parent=parent_tenant_groups[0]),
-            TenantGroup(name='Tenant Group 2', slug='tenant-group-2', parent=parent_tenant_groups[1]),
-            TenantGroup(name='Tenant Group 3', slug='tenant-group-3', parent=parent_tenant_groups[2]),
+            TenantGroup(name='Tenant Group 1', slug='tenant-group-1', parent=parent_tenant_groups[0], description='A'),
+            TenantGroup(name='Tenant Group 2', slug='tenant-group-2', parent=parent_tenant_groups[1], description='B'),
+            TenantGroup(name='Tenant Group 3', slug='tenant-group-3', parent=parent_tenant_groups[2], description='C'),
         )
         )
         for tenantgroup in tenant_groups:
         for tenantgroup in tenant_groups:
             tenantgroup.save()
             tenantgroup.save()
@@ -40,6 +40,10 @@ class TenantGroupTestCase(TestCase):
         params = {'slug': ['tenant-group-1', 'tenant-group-2']}
         params = {'slug': ['tenant-group-1', 'tenant-group-2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
+    def test_description(self):
+        params = {'description': ['A', 'B']}
+        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
+
     def test_parent(self):
     def test_parent(self):
         parent_groups = TenantGroup.objects.filter(name__startswith='Parent')[:2]
         parent_groups = TenantGroup.objects.filter(name__startswith='Parent')[:2]
         params = {'parent_id': [parent_groups[0].pk, parent_groups[1].pk]}
         params = {'parent_id': [parent_groups[0].pk, parent_groups[1].pk]}

+ 5 - 4
netbox/tenancy/tests/test_views.py

@@ -19,13 +19,14 @@ class TenantGroupTestCase(ViewTestCases.OrganizationalObjectViewTestCase):
         cls.form_data = {
         cls.form_data = {
             'name': 'Tenant Group X',
             'name': 'Tenant Group X',
             'slug': 'tenant-group-x',
             'slug': 'tenant-group-x',
+            'description': 'A new tenant group',
         }
         }
 
 
         cls.csv_data = (
         cls.csv_data = (
-            "name,slug",
-            "Tenant Group 4,tenant-group-4",
-            "Tenant Group 5,tenant-group-5",
-            "Tenant Group 6,tenant-group-6",
+            "name,slug,description",
+            "Tenant Group 4,tenant-group-4,Fourth tenant group",
+            "Tenant Group 5,tenant-group-5,Fifth tenant group",
+            "Tenant Group 6,tenant-group-6,Sixth tenant group",
         )
         )
 
 
 
 

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

@@ -24,7 +24,7 @@ class ClusterTypeSerializer(ValidatedModelSerializer):
 
 
     class Meta:
     class Meta:
         model = ClusterType
         model = ClusterType
-        fields = ['id', 'name', 'slug', 'cluster_count']
+        fields = ['id', 'name', 'slug', 'description', 'cluster_count']
 
 
 
 
 class ClusterGroupSerializer(ValidatedModelSerializer):
 class ClusterGroupSerializer(ValidatedModelSerializer):
@@ -32,7 +32,7 @@ class ClusterGroupSerializer(ValidatedModelSerializer):
 
 
     class Meta:
     class Meta:
         model = ClusterGroup
         model = ClusterGroup
-        fields = ['id', 'name', 'slug', 'cluster_count']
+        fields = ['id', 'name', 'slug', 'description', 'cluster_count']
 
 
 
 
 class ClusterSerializer(TaggitSerializer, CustomFieldModelSerializer):
 class ClusterSerializer(TaggitSerializer, CustomFieldModelSerializer):

+ 2 - 2
netbox/virtualization/filters.py

@@ -24,14 +24,14 @@ class ClusterTypeFilterSet(BaseFilterSet, NameSlugSearchFilterSet):
 
 
     class Meta:
     class Meta:
         model = ClusterType
         model = ClusterType
-        fields = ['id', 'name', 'slug']
+        fields = ['id', 'name', 'slug', 'description']
 
 
 
 
 class ClusterGroupFilterSet(BaseFilterSet, NameSlugSearchFilterSet):
 class ClusterGroupFilterSet(BaseFilterSet, NameSlugSearchFilterSet):
 
 
     class Meta:
     class Meta:
         model = ClusterGroup
         model = ClusterGroup
-        fields = ['id', 'name', 'slug']
+        fields = ['id', 'name', 'slug', 'description']
 
 
 
 
 class ClusterFilterSet(BaseFilterSet, TenancyFilterSet, CustomFieldFilterSet, CreatedUpdatedFilterSet):
 class ClusterFilterSet(BaseFilterSet, TenancyFilterSet, CustomFieldFilterSet, CreatedUpdatedFilterSet):

+ 2 - 2
netbox/virtualization/forms.py

@@ -31,7 +31,7 @@ class ClusterTypeForm(BootstrapMixin, forms.ModelForm):
     class Meta:
     class Meta:
         model = ClusterType
         model = ClusterType
         fields = [
         fields = [
-            'name', 'slug',
+            'name', 'slug', 'description',
         ]
         ]
 
 
 
 
@@ -56,7 +56,7 @@ class ClusterGroupForm(BootstrapMixin, forms.ModelForm):
     class Meta:
     class Meta:
         model = ClusterGroup
         model = ClusterGroup
         fields = [
         fields = [
-            'name', 'slug',
+            'name', 'slug', 'description',
         ]
         ]
 
 
 
 

+ 12 - 2
netbox/virtualization/models.py

@@ -34,8 +34,12 @@ class ClusterType(ChangeLoggedModel):
     slug = models.SlugField(
     slug = models.SlugField(
         unique=True
         unique=True
     )
     )
+    description = models.CharField(
+        max_length=200,
+        blank=True
+    )
 
 
-    csv_headers = ['name', 'slug']
+    csv_headers = ['name', 'slug', 'description']
 
 
     class Meta:
     class Meta:
         ordering = ['name']
         ordering = ['name']
@@ -50,6 +54,7 @@ class ClusterType(ChangeLoggedModel):
         return (
         return (
             self.name,
             self.name,
             self.slug,
             self.slug,
+            self.description,
         )
         )
 
 
 
 
@@ -68,8 +73,12 @@ class ClusterGroup(ChangeLoggedModel):
     slug = models.SlugField(
     slug = models.SlugField(
         unique=True
         unique=True
     )
     )
+    description = models.CharField(
+        max_length=200,
+        blank=True
+    )
 
 
-    csv_headers = ['name', 'slug']
+    csv_headers = ['name', 'slug', 'description']
 
 
     class Meta:
     class Meta:
         ordering = ['name']
         ordering = ['name']
@@ -84,6 +93,7 @@ class ClusterGroup(ChangeLoggedModel):
         return (
         return (
             self.name,
             self.name,
             self.slug,
             self.slug,
+            self.description,
         )
         )
 
 
 
 

+ 2 - 2
netbox/virtualization/tables.py

@@ -55,7 +55,7 @@ class ClusterTypeTable(BaseTable):
 
 
     class Meta(BaseTable.Meta):
     class Meta(BaseTable.Meta):
         model = ClusterType
         model = ClusterType
-        fields = ('pk', 'name', 'cluster_count', 'actions')
+        fields = ('pk', 'name', 'cluster_count', 'description', 'actions')
 
 
 
 
 #
 #
@@ -74,7 +74,7 @@ class ClusterGroupTable(BaseTable):
 
 
     class Meta(BaseTable.Meta):
     class Meta(BaseTable.Meta):
         model = ClusterGroup
         model = ClusterGroup
-        fields = ('pk', 'name', 'cluster_count', 'actions')
+        fields = ('pk', 'name', 'cluster_count', 'description', 'actions')
 
 
 
 
 #
 #

+ 14 - 6
netbox/virtualization/tests/test_filters.py

@@ -15,9 +15,9 @@ class ClusterTypeTestCase(TestCase):
     def setUpTestData(cls):
     def setUpTestData(cls):
 
 
         cluster_types = (
         cluster_types = (
-            ClusterType(name='Cluster Type 1', slug='cluster-type-1'),
-            ClusterType(name='Cluster Type 2', slug='cluster-type-2'),
-            ClusterType(name='Cluster Type 3', slug='cluster-type-3'),
+            ClusterType(name='Cluster Type 1', slug='cluster-type-1', description='A'),
+            ClusterType(name='Cluster Type 2', slug='cluster-type-2', description='B'),
+            ClusterType(name='Cluster Type 3', slug='cluster-type-3', description='C'),
         )
         )
         ClusterType.objects.bulk_create(cluster_types)
         ClusterType.objects.bulk_create(cluster_types)
 
 
@@ -34,6 +34,10 @@ class ClusterTypeTestCase(TestCase):
         params = {'slug': ['cluster-type-1', 'cluster-type-2']}
         params = {'slug': ['cluster-type-1', 'cluster-type-2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
+    def test_description(self):
+        params = {'description': ['A', 'B']}
+        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
+
 
 
 class ClusterGroupTestCase(TestCase):
 class ClusterGroupTestCase(TestCase):
     queryset = ClusterGroup.objects.all()
     queryset = ClusterGroup.objects.all()
@@ -43,9 +47,9 @@ class ClusterGroupTestCase(TestCase):
     def setUpTestData(cls):
     def setUpTestData(cls):
 
 
         cluster_groups = (
         cluster_groups = (
-            ClusterGroup(name='Cluster Group 1', slug='cluster-group-1'),
-            ClusterGroup(name='Cluster Group 2', slug='cluster-group-2'),
-            ClusterGroup(name='Cluster Group 3', slug='cluster-group-3'),
+            ClusterGroup(name='Cluster Group 1', slug='cluster-group-1', description='A'),
+            ClusterGroup(name='Cluster Group 2', slug='cluster-group-2', description='B'),
+            ClusterGroup(name='Cluster Group 3', slug='cluster-group-3', description='C'),
         )
         )
         ClusterGroup.objects.bulk_create(cluster_groups)
         ClusterGroup.objects.bulk_create(cluster_groups)
 
 
@@ -62,6 +66,10 @@ class ClusterGroupTestCase(TestCase):
         params = {'slug': ['cluster-group-1', 'cluster-group-2']}
         params = {'slug': ['cluster-group-1', 'cluster-group-2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
+    def test_description(self):
+        params = {'description': ['A', 'B']}
+        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
+
 
 
 class ClusterTestCase(TestCase):
 class ClusterTestCase(TestCase):
     queryset = Cluster.objects.all()
     queryset = Cluster.objects.all()

+ 10 - 8
netbox/virtualization/tests/test_views.py

@@ -23,13 +23,14 @@ class ClusterGroupTestCase(ViewTestCases.OrganizationalObjectViewTestCase):
         cls.form_data = {
         cls.form_data = {
             'name': 'Cluster Group X',
             'name': 'Cluster Group X',
             'slug': 'cluster-group-x',
             'slug': 'cluster-group-x',
+            'description': 'A new cluster group',
         }
         }
 
 
         cls.csv_data = (
         cls.csv_data = (
-            "name,slug",
-            "Cluster Group 4,cluster-group-4",
-            "Cluster Group 5,cluster-group-5",
-            "Cluster Group 6,cluster-group-6",
+            "name,slug,description",
+            "Cluster Group 4,cluster-group-4,Fourth cluster group",
+            "Cluster Group 5,cluster-group-5,Fifth cluster group",
+            "Cluster Group 6,cluster-group-6,Sixth cluster group",
         )
         )
 
 
 
 
@@ -48,13 +49,14 @@ class ClusterTypeTestCase(ViewTestCases.OrganizationalObjectViewTestCase):
         cls.form_data = {
         cls.form_data = {
             'name': 'Cluster Type X',
             'name': 'Cluster Type X',
             'slug': 'cluster-type-x',
             'slug': 'cluster-type-x',
+            'description': 'A new cluster type',
         }
         }
 
 
         cls.csv_data = (
         cls.csv_data = (
-            "name,slug",
-            "Cluster Type 4,cluster-type-4",
-            "Cluster Type 5,cluster-type-5",
-            "Cluster Type 6,cluster-type-6",
+            "name,slug,description",
+            "Cluster Type 4,cluster-type-4,Fourth cluster type",
+            "Cluster Type 5,cluster-type-5,Fifth cluster type",
+            "Cluster Type 6,cluster-type-6,Sixth cluster type",
         )
         )