mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Closes #5425: Create separate tabs for VMs and devices under the cluster view
This commit is contained in:
@@ -127,6 +127,20 @@ class ClusterTestCase(ViewTestCases.PrimaryObjectViewTestCase):
|
||||
'comments': 'New comments',
|
||||
}
|
||||
|
||||
@override_settings(EXEMPT_VIEW_PERMISSIONS=['*'])
|
||||
def test_cluster_virtualmachines(self):
|
||||
cluster = Cluster.objects.first()
|
||||
|
||||
url = reverse('virtualization:cluster_virtualmachines', kwargs={'pk': cluster.pk})
|
||||
self.assertHttpStatus(self.client.get(url), 200)
|
||||
|
||||
@override_settings(EXEMPT_VIEW_PERMISSIONS=['*'])
|
||||
def test_cluster_devices(self):
|
||||
cluster = Cluster.objects.first()
|
||||
|
||||
url = reverse('virtualization:cluster_devices', kwargs={'pk': cluster.pk})
|
||||
self.assertHttpStatus(self.client.get(url), 200)
|
||||
|
||||
|
||||
class VirtualMachineTestCase(ViewTestCases.PrimaryObjectViewTestCase):
|
||||
model = VirtualMachine
|
||||
@@ -199,7 +213,7 @@ class VirtualMachineTestCase(ViewTestCases.PrimaryObjectViewTestCase):
|
||||
}
|
||||
|
||||
@override_settings(EXEMPT_VIEW_PERMISSIONS=['*'])
|
||||
def test_device_interfaces(self):
|
||||
def test_virtualmachine_interfaces(self):
|
||||
virtualmachine = VirtualMachine.objects.first()
|
||||
vminterfaces = (
|
||||
VMInterface(virtual_machine=virtualmachine, name='Interface 1'),
|
||||
|
||||
@@ -37,6 +37,8 @@ urlpatterns = [
|
||||
path('clusters/edit/', views.ClusterBulkEditView.as_view(), name='cluster_bulk_edit'),
|
||||
path('clusters/delete/', views.ClusterBulkDeleteView.as_view(), name='cluster_bulk_delete'),
|
||||
path('clusters/<int:pk>/', views.ClusterView.as_view(), name='cluster'),
|
||||
path('clusters/<int:pk>/devices/', views.ClusterDevicesView.as_view(), name='cluster_devices'),
|
||||
path('clusters/<int:pk>/virtual-machines/', views.ClusterVirtualMachinesView.as_view(), name='cluster_virtualmachines'),
|
||||
path('clusters/<int:pk>/edit/', views.ClusterEditView.as_view(), name='cluster_edit'),
|
||||
path('clusters/<int:pk>/delete/', views.ClusterDeleteView.as_view(), name='cluster_delete'),
|
||||
path('clusters/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='cluster_changelog', kwargs={'model': Cluster}),
|
||||
|
||||
@@ -155,16 +155,38 @@ class ClusterListView(generic.ObjectListView):
|
||||
class ClusterView(generic.ObjectView):
|
||||
queryset = Cluster.objects.all()
|
||||
|
||||
|
||||
class ClusterVirtualMachinesView(generic.ObjectView):
|
||||
queryset = Cluster.objects.all()
|
||||
template_name = 'virtualization/cluster/virtual_machines.html'
|
||||
|
||||
def get_extra_context(self, request, instance):
|
||||
virtualmachines = VirtualMachine.objects.restrict(request.user, 'view').filter(cluster=instance)
|
||||
virtualmachines_table = tables.VirtualMachineTable(virtualmachines, orderable=False)
|
||||
if request.user.has_perm('virtualization.change_cluster'):
|
||||
virtualmachines_table.columns.show('pk')
|
||||
|
||||
return {
|
||||
'virtualmachines_table': virtualmachines_table,
|
||||
'active_tab': 'virtual-machines',
|
||||
}
|
||||
|
||||
|
||||
class ClusterDevicesView(generic.ObjectView):
|
||||
queryset = Cluster.objects.all()
|
||||
template_name = 'virtualization/cluster/devices.html'
|
||||
|
||||
def get_extra_context(self, request, instance):
|
||||
devices = Device.objects.restrict(request.user, 'view').filter(cluster=instance).prefetch_related(
|
||||
'site', 'rack', 'tenant', 'device_type__manufacturer'
|
||||
)
|
||||
device_table = DeviceTable(list(devices), orderable=False)
|
||||
devices_table = DeviceTable(list(devices), orderable=False)
|
||||
if request.user.has_perm('virtualization.change_cluster'):
|
||||
device_table.columns.show('pk')
|
||||
devices_table.columns.show('pk')
|
||||
|
||||
return {
|
||||
'device_table': device_table,
|
||||
'devices_table': devices_table,
|
||||
'active_tab': 'devices',
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user