mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-23 07:56:44 -06:00
8356 vm disk tables
This commit is contained in:
parent
42abd90c07
commit
3f59539ff3
@ -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 %}
|
@ -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,
|
||||||
}
|
}
|
||||||
|
@ -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',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user