8356 vm disk tables

This commit is contained in:
Arthur 2023-10-19 15:21:05 -07:00
parent 42abd90c07
commit 3f59539ff3
3 changed files with 67 additions and 6 deletions

View File

@ -0,0 +1,14 @@
{% extends 'generic/object_children.html' %}
{% load helpers %}
{% load i18n %}
{% block bulk_edit_controls %}
{{ block.super }}
{% if 'bulk_rename' in actions %}
<button type="submit" name="_rename"
formaction="{% url 'virtualization:vminterface_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

@ -9,6 +9,7 @@ from virtualization.models import VirtualDisk, VirtualMachine, VMInterface
__all__ = ( __all__ = (
'VirtualDiskTable', 'VirtualDiskTable',
'VirtualMachineTable', 'VirtualMachineTable',
'VirtualMachineVirtualDiskTable',
'VirtualMachineVMInterfaceTable', 'VirtualMachineVMInterfaceTable',
'VMInterfaceTable', 'VMInterfaceTable',
) )
@ -161,7 +162,31 @@ class VirtualMachineVMInterfaceTable(VMInterfaceTable):
} }
class VirtualDiskTable(VMInterfaceTable): class VirtualDiskTable(NetBoxTable):
virtual_machine = tables.Column(
verbose_name=_('Virtual Machine'),
linkify=True
)
name = tables.Column(
verbose_name=_('Name'),
linkify=True
)
tags = columns.TagColumn(
url_name='virtualization:virtualdisk_list'
)
class Meta(NetBoxTable.Meta):
model = VirtualDisk
fields = (
'pk', 'id', 'name', 'size', 'tags',
)
default_columns = ('pk', 'name', 'size')
row_attrs = {
'data-name': lambda record: record.name,
}
class VirtualMachineVirtualDiskTable(VirtualDiskTable):
actions = columns.ActionsColumn( actions = columns.ActionsColumn(
actions=('edit', 'delete'), actions=('edit', 'delete'),
) )
@ -169,9 +194,9 @@ class VirtualDiskTable(VMInterfaceTable):
class Meta(NetBoxTable.Meta): class Meta(NetBoxTable.Meta):
model = VirtualDisk model = VirtualDisk
fields = ( fields = (
'pk', 'id', 'name', 'size', 'tags', 'actions', 'pk', 'id', 'name', 'tags', 'actions',
) )
default_columns = ('pk', 'name', 'size') default_columns = ('pk', 'name',)
row_attrs = { row_attrs = {
'data-name': lambda record: record.name, 'data-name': lambda record: record.name,
} }

View File

@ -365,8 +365,31 @@ class VirtualMachineInterfacesView(generic.ObjectChildrenView):
permission='virtualization.view_vminterface', permission='virtualization.view_vminterface',
weight=500 weight=500
) )
actions = ('add', 'import', 'export', 'bulk_edit', 'bulk_delete', 'bulk_rename')
action_perms = defaultdict(set, **{
'add': {'add'},
'import': {'add'},
'bulk_edit': {'change'},
'bulk_delete': {'delete'},
'bulk_rename': {'change'},
})
def get_children(self, request, parent):
return parent.interfaces.restrict(request.user, 'view').prefetch_related(
Prefetch('ip_addresses', queryset=IPAddress.objects.restrict(request.user)),
'tags',
)
@register_model_view(VirtualMachine, 'disks')
class VirtualMachineVirtualDisksView(generic.ObjectChildrenView):
queryset = VirtualMachine.objects.all()
child_model = VirtualDisk
table = tables.VirtualMachineVirtualDiskTable
filterset = filtersets.VirtualDiskFilterSet
template_name = 'virtualization/virtualmachine/virtual_disks.html'
tab = ViewTab( tab = ViewTab(
label=_('Disks'), label=_('Virtual Disks'),
badge=lambda obj: obj.virtual_disk_count, badge=lambda obj: obj.virtual_disk_count,
permission='virtualization.view_virtual_disk', permission='virtualization.view_virtual_disk',
weight=500 weight=500
@ -381,8 +404,7 @@ class VirtualMachineInterfacesView(generic.ObjectChildrenView):
}) })
def get_children(self, request, parent): def get_children(self, request, parent):
return parent.interfaces.restrict(request.user, 'view').prefetch_related( return parent.virtualdisks.restrict(request.user, 'view').prefetch_related(
Prefetch('ip_addresses', queryset=IPAddress.objects.restrict(request.user)),
'tags', 'tags',
) )