8356 news tests add rename

This commit is contained in:
Arthur 2023-10-20 11:52:53 -07:00
parent 30bcd3636b
commit c119ade4f2
7 changed files with 137 additions and 2 deletions

View File

@ -1,3 +1,14 @@
{% extends 'generic/object_children.html' %} {% extends 'generic/object_children.html' %}
{% load helpers %} {% load helpers %}
{% load i18n %} {% load i18n %}
{% block bulk_edit_controls %}
{{ block.super }}
{% if 'bulk_rename' in actions %}
<button type="submit" name="_rename"
formaction="{% url 'virtualization:virtualdisk_bulk_rename' %}?return_url={{ return_url }}"
class="btn btn-outline-warning btn-sm">
<i class="mdi mdi-pencil-outline" aria-hidden="true"></i> {% trans "Rename" %}
</button>
{% endif %}
{% endblock bulk_edit_controls %}

View File

@ -16,6 +16,7 @@ __all__ = (
'ClusterFilterSet', 'ClusterFilterSet',
'ClusterGroupFilterSet', 'ClusterGroupFilterSet',
'ClusterTypeFilterSet', 'ClusterTypeFilterSet',
'VirtualDiskFilterSet',
'VirtualMachineFilterSet', 'VirtualMachineFilterSet',
'VMInterfaceFilterSet', 'VMInterfaceFilterSet',
) )

View File

@ -19,6 +19,7 @@ __all__ = (
'ClusterGroupBulkEditForm', 'ClusterGroupBulkEditForm',
'ClusterTypeBulkEditForm', 'ClusterTypeBulkEditForm',
'VirtualDiskBulkEditForm', 'VirtualDiskBulkEditForm',
'VirtualDiskBulkRenameForm',
'VirtualMachineBulkEditForm', 'VirtualMachineBulkEditForm',
'VMInterfaceBulkEditForm', 'VMInterfaceBulkEditForm',
'VMInterfaceBulkRenameForm', 'VMInterfaceBulkRenameForm',
@ -336,3 +337,10 @@ class VirtualDiskBulkEditForm(NetBoxModelBulkEditForm):
(None, ('size',)), (None, ('size',)),
) )
nullable_fields = () nullable_fields = ()
class VirtualDiskBulkRenameForm(BulkRenameForm):
pk = forms.ModelMultipleChoiceField(
queryset=VirtualDisk.objects.all(),
widget=forms.MultipleHiddenInput()
)

View File

@ -6,7 +6,7 @@ from tenancy.models import Tenant, TenantGroup
from utilities.testing import ChangeLoggedFilterSetTests, create_test_device from utilities.testing import ChangeLoggedFilterSetTests, create_test_device
from virtualization.choices import * from virtualization.choices import *
from virtualization.filtersets import * from virtualization.filtersets import *
from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterface from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualDisk, VirtualMachine, VMInterface
class ClusterTypeTestCase(TestCase, ChangeLoggedFilterSetTests): class ClusterTypeTestCase(TestCase, ChangeLoggedFilterSetTests):
@ -516,3 +516,54 @@ class VMInterfaceTestCase(TestCase, ChangeLoggedFilterSetTests):
def test_description(self): def test_description(self):
params = {'description': ['foobar1', 'foobar2']} params = {'description': ['foobar1', 'foobar2']}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
class VirtualDiskTestCase(TestCase, ChangeLoggedFilterSetTests):
queryset = VirtualDisk.objects.all()
filterset = VirtualDiskFilterSet
@classmethod
def setUpTestData(cls):
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.objects.bulk_create(cluster_types)
clusters = (
Cluster(name='Cluster 1', type=cluster_types[0]),
Cluster(name='Cluster 2', type=cluster_types[1]),
Cluster(name='Cluster 3', type=cluster_types[2]),
)
Cluster.objects.bulk_create(clusters)
vms = (
VirtualMachine(name='Virtual Machine 1', cluster=clusters[0]),
VirtualMachine(name='Virtual Machine 2', cluster=clusters[1]),
VirtualMachine(name='Virtual Machine 3', cluster=clusters[2]),
)
VirtualMachine.objects.bulk_create(vms)
disks = (
VirtualDisk(virtual_machine=vms[0], name='Disk 1', size=123,),
VirtualDisk(virtual_machine=vms[1], name='Disk 2', size=456,),
VirtualDisk(virtual_machine=vms[2], name='Disk 3', size=789,),
)
VirtualDisk.objects.bulk_create(disks)
def test_name(self):
params = {'name': ['Disk 1', 'Disk 2']}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
def test_size(self):
params = {'size': [1, 2]}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
def test_virtual_machine(self):
vms = VirtualMachine.objects.all()[:2]
params = {'virtual_machine_id': [vms[0].pk, vms[1].pk]}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
params = {'virtual_machine': [vms[0].name, vms[1].name]}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)

View File

@ -7,7 +7,7 @@ from dcim.models import DeviceRole, Platform, Site
from ipam.models import VLAN, VRF from ipam.models import VLAN, VRF
from utilities.testing import ViewTestCases, create_tags, create_test_device from utilities.testing import ViewTestCases, create_tags, create_test_device
from virtualization.choices import * from virtualization.choices import *
from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterface from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualDisk, VirtualMachine, VMInterface
class ClusterGroupTestCase(ViewTestCases.OrganizationalObjectViewTestCase): class ClusterGroupTestCase(ViewTestCases.OrganizationalObjectViewTestCase):
@ -374,3 +374,61 @@ class VMInterfaceTestCase(ViewTestCases.DeviceComponentViewTestCase):
'untagged_vlan': vlans[0].pk, 'untagged_vlan': vlans[0].pk,
'tagged_vlans': [v.pk for v in vlans[1:4]], 'tagged_vlans': [v.pk for v in vlans[1:4]],
} }
class VirtualDiskTestCase(ViewTestCases.DeviceComponentViewTestCase):
model = VirtualDisk
validation_excluded_fields = ('name',)
@classmethod
def setUpTestData(cls):
site = Site.objects.create(name='Site 1', slug='site-1')
role = DeviceRole.objects.create(name='Device Role 1', slug='device-role-1')
clustertype = ClusterType.objects.create(name='Cluster Type 1', slug='cluster-type-1')
cluster = Cluster.objects.create(name='Cluster 1', type=clustertype, site=site)
virtualmachines = (
VirtualMachine(name='Virtual Machine 1', site=site, cluster=cluster, role=role),
VirtualMachine(name='Virtual Machine 2', site=site, cluster=cluster, role=role),
)
VirtualMachine.objects.bulk_create(virtualmachines)
disks = VirtualDisk.objects.bulk_create([
VirtualDisk(virtual_machine=virtualmachines[0], name='Disk 1'),
VirtualDisk(virtual_machine=virtualmachines[0], name='Disk 2'),
VirtualDisk(virtual_machine=virtualmachines[0], name='Disk 3'),
])
tags = create_tags('Alpha', 'Bravo', 'Charlie')
cls.form_data = {
'virtual_machine': virtualmachines[0].pk,
'name': 'Interface X',
'size': 123,
'tags': [t.pk for t in tags],
}
cls.bulk_create_data = {
'virtual_machine': virtualmachines[1].pk,
'name': 'Interface [4-6]',
'size': 456,
'tags': [t.pk for t in tags],
}
cls.csv_data = (
f"virtual_machine,name,size",
f"Virtual Machine 2,Disk 4,111",
f"Virtual Machine 2,Disk 5,222",
f"Virtual Machine 2,Disk 6,333",
)
cls.csv_update_data = (
f"id,name,size",
f"{disks[0].pk},Disk 7,777",
f"{disks[1].pk},Disk 8,888",
f"{disks[2].pk},Disk 9,999",
)
cls.bulk_edit_data = {
'size': 444,
}

View File

@ -53,6 +53,7 @@ urlpatterns = [
path('disks/add/', views.VirtualDiskEditView.as_view(), name='virtualdisk_add'), path('disks/add/', views.VirtualDiskEditView.as_view(), name='virtualdisk_add'),
path('disks/import/', views.VirtualDiskBulkImportView.as_view(), name='virtualdisk_import'), path('disks/import/', views.VirtualDiskBulkImportView.as_view(), name='virtualdisk_import'),
path('disks/edit/', views.VirtualDiskBulkEditView.as_view(), name='virtualdisk_bulk_edit'), path('disks/edit/', views.VirtualDiskBulkEditView.as_view(), name='virtualdisk_bulk_edit'),
path('disks/rename/', views.VirtualDiskBulkRenameView.as_view(), name='virtualdisk_bulk_rename'),
path('disks/delete/', views.VirtualDiskBulkDeleteView.as_view(), name='virtualdisk_bulk_delete'), path('disks/delete/', views.VirtualDiskBulkDeleteView.as_view(), name='virtualdisk_bulk_delete'),
path('disks/<int:pk>/', include(get_model_urls('virtualization', 'virtualdisk'))), path('disks/<int:pk>/', include(get_model_urls('virtualization', 'virtualdisk'))),
path('virtual-machines/disks/add/', views.VirtualMachineBulkAddVirtualDiskView.as_view(), name='virtualmachine_bulk_add_virtualdisk'), path('virtual-machines/disks/add/', views.VirtualMachineBulkAddVirtualDiskView.as_view(), name='virtualmachine_bulk_add_virtualdisk'),

View File

@ -625,6 +625,11 @@ class VirtualDiskBulkEditView(generic.BulkEditView):
form = forms.VirtualDiskBulkEditForm form = forms.VirtualDiskBulkEditForm
class VirtualDiskBulkRenameView(generic.BulkRenameView):
queryset = VirtualDisk.objects.all()
form = forms.VirtualDiskBulkRenameForm
class VirtualDiskBulkDeleteView(generic.BulkDeleteView): class VirtualDiskBulkDeleteView(generic.BulkDeleteView):
queryset = VirtualDisk.objects.all() queryset = VirtualDisk.objects.all()
filterset = filtersets.VirtualDiskFilterSet filterset = filtersets.VirtualDiskFilterSet