mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-23 07:56:44 -06:00
8356 cleanup views
This commit is contained in:
parent
4aeb4d001c
commit
42068090f0
@ -14,7 +14,7 @@ from netbox.api.fields import ChoiceField, SerializedPKRelatedField
|
||||
from netbox.api.serializers import NetBoxModelSerializer
|
||||
from tenancy.api.nested_serializers import NestedTenantSerializer
|
||||
from virtualization.choices import *
|
||||
from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterface
|
||||
from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualDisk, VirtualMachine, VMInterface
|
||||
from .nested_serializers import *
|
||||
|
||||
|
||||
@ -159,3 +159,18 @@ class VMInterfaceSerializer(NetBoxModelSerializer):
|
||||
})
|
||||
|
||||
return super().validate(data)
|
||||
|
||||
|
||||
#
|
||||
# Virtual Disk
|
||||
#
|
||||
|
||||
class VirtualDiskSerializer(NetBoxModelSerializer):
|
||||
virtual_machine = NestedVirtualMachineSerializer()
|
||||
|
||||
class Meta:
|
||||
model = VirtualDisk
|
||||
fields = [
|
||||
'id', 'virtual_machine', 'size', 'tags', 'custom_fields',
|
||||
'created', 'last_updated',
|
||||
]
|
||||
|
@ -13,6 +13,7 @@ router.register('clusters', views.ClusterViewSet)
|
||||
# VirtualMachines
|
||||
router.register('virtual-machines', views.VirtualMachineViewSet)
|
||||
router.register('interfaces', views.VMInterfaceViewSet)
|
||||
router.register('virtual-disks', views.VirtualDiskViewSet)
|
||||
|
||||
app_name = 'virtualization-api'
|
||||
urlpatterns = router.urls
|
||||
|
@ -5,7 +5,7 @@ from extras.api.mixins import ConfigContextQuerySetMixin
|
||||
from netbox.api.viewsets import NetBoxModelViewSet
|
||||
from utilities.utils import count_related
|
||||
from virtualization import filtersets
|
||||
from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterface
|
||||
from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualDisk, VirtualMachine, VMInterface
|
||||
from . import serializers
|
||||
|
||||
|
||||
@ -87,3 +87,12 @@ class VMInterfaceViewSet(NetBoxModelViewSet):
|
||||
serializer_class = serializers.VMInterfaceSerializer
|
||||
filterset_class = filtersets.VMInterfaceFilterSet
|
||||
brief_prefetch_fields = ['virtual_machine']
|
||||
|
||||
|
||||
class VirtualDiskViewSet(NetBoxModelViewSet):
|
||||
queryset = VirtualDisk.objects.prefetch_related(
|
||||
'virtual_machine', 'tags',
|
||||
)
|
||||
serializer_class = serializers.VirtualDiskSerializer
|
||||
filterset_class = filtersets.VirtualDiskFilterSet
|
||||
brief_prefetch_fields = ['virtual_machine']
|
||||
|
@ -228,14 +228,11 @@ class VirtualDiskFilterForm(NetBoxModelFilterSetForm):
|
||||
model = VirtualDisk
|
||||
fieldsets = (
|
||||
(None, ('q', 'filter_id', 'tag')),
|
||||
(_('Virtual Machine'), ('virtual_machine_id')),
|
||||
# (_('Virtual Machine'), ('virtual_machine_id')),
|
||||
)
|
||||
virtual_machine_id = DynamicModelMultipleChoiceField(
|
||||
queryset=VirtualMachine.objects.all(),
|
||||
required=False,
|
||||
query_params={
|
||||
'cluster_id': '$cluster_id'
|
||||
},
|
||||
label=_('Virtual machine')
|
||||
)
|
||||
tag = TagFilterField(model)
|
||||
|
@ -360,7 +360,7 @@ class VirtualDiskForm(NetBoxModelForm):
|
||||
)
|
||||
|
||||
fieldsets = (
|
||||
(_(''), ('virtual_machine', 'name', 'size', 'tags')),
|
||||
(None, ('virtual_machine', 'name', 'size', 'tags')),
|
||||
)
|
||||
|
||||
class Meta:
|
||||
|
@ -390,10 +390,9 @@ class VirtualDisk(NetBoxModel, TrackingModelMixin):
|
||||
blank=True
|
||||
)
|
||||
size = models.PositiveIntegerField(
|
||||
verbose_name=_('size'),
|
||||
verbose_name=_('size (GB)'),
|
||||
blank=True,
|
||||
null=True,
|
||||
help_text=_("Size")
|
||||
)
|
||||
|
||||
class Meta:
|
||||
|
@ -591,35 +591,6 @@ class VirtualDiskListView(generic.ObjectListView):
|
||||
class VirtualDiskView(generic.ObjectView):
|
||||
queryset = VirtualDisk.objects.all()
|
||||
|
||||
def get_extra_context(self, request, instance):
|
||||
|
||||
# Get child interfaces
|
||||
child_interfaces = VirtualDisk.objects.restrict(request.user, 'view').filter(parent=instance)
|
||||
child_interfaces_tables = tables.VirtualDiskTable(
|
||||
child_interfaces,
|
||||
exclude=('virtual_machine',),
|
||||
orderable=False
|
||||
)
|
||||
|
||||
# Get assigned VLANs and annotate whether each is tagged or untagged
|
||||
vlans = []
|
||||
if instance.untagged_vlan is not None:
|
||||
vlans.append(instance.untagged_vlan)
|
||||
vlans[0].tagged = False
|
||||
for vlan in instance.tagged_vlans.restrict(request.user).prefetch_related('site', 'group', 'tenant', 'role'):
|
||||
vlan.tagged = True
|
||||
vlans.append(vlan)
|
||||
vlan_table = InterfaceVLANTable(
|
||||
interface=instance,
|
||||
data=vlans,
|
||||
orderable=False
|
||||
)
|
||||
|
||||
return {
|
||||
'child_interfaces_table': child_interfaces_tables,
|
||||
'vlan_table': vlan_table,
|
||||
}
|
||||
|
||||
|
||||
# class VirtualDiskCreateView(generic.ComponentCreateView):
|
||||
# queryset = VirtualDisk.objects.all()
|
||||
|
Loading…
Reference in New Issue
Block a user