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 netbox.api.serializers import NetBoxModelSerializer
|
||||||
from tenancy.api.nested_serializers import NestedTenantSerializer
|
from tenancy.api.nested_serializers import NestedTenantSerializer
|
||||||
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
|
||||||
from .nested_serializers import *
|
from .nested_serializers import *
|
||||||
|
|
||||||
|
|
||||||
@ -159,3 +159,18 @@ class VMInterfaceSerializer(NetBoxModelSerializer):
|
|||||||
})
|
})
|
||||||
|
|
||||||
return super().validate(data)
|
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
|
# VirtualMachines
|
||||||
router.register('virtual-machines', views.VirtualMachineViewSet)
|
router.register('virtual-machines', views.VirtualMachineViewSet)
|
||||||
router.register('interfaces', views.VMInterfaceViewSet)
|
router.register('interfaces', views.VMInterfaceViewSet)
|
||||||
|
router.register('virtual-disks', views.VirtualDiskViewSet)
|
||||||
|
|
||||||
app_name = 'virtualization-api'
|
app_name = 'virtualization-api'
|
||||||
urlpatterns = router.urls
|
urlpatterns = router.urls
|
||||||
|
@ -5,7 +5,7 @@ from extras.api.mixins import ConfigContextQuerySetMixin
|
|||||||
from netbox.api.viewsets import NetBoxModelViewSet
|
from netbox.api.viewsets import NetBoxModelViewSet
|
||||||
from utilities.utils import count_related
|
from utilities.utils import count_related
|
||||||
from virtualization import filtersets
|
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
|
from . import serializers
|
||||||
|
|
||||||
|
|
||||||
@ -87,3 +87,12 @@ class VMInterfaceViewSet(NetBoxModelViewSet):
|
|||||||
serializer_class = serializers.VMInterfaceSerializer
|
serializer_class = serializers.VMInterfaceSerializer
|
||||||
filterset_class = filtersets.VMInterfaceFilterSet
|
filterset_class = filtersets.VMInterfaceFilterSet
|
||||||
brief_prefetch_fields = ['virtual_machine']
|
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
|
model = VirtualDisk
|
||||||
fieldsets = (
|
fieldsets = (
|
||||||
(None, ('q', 'filter_id', 'tag')),
|
(None, ('q', 'filter_id', 'tag')),
|
||||||
(_('Virtual Machine'), ('virtual_machine_id')),
|
# (_('Virtual Machine'), ('virtual_machine_id')),
|
||||||
)
|
)
|
||||||
virtual_machine_id = DynamicModelMultipleChoiceField(
|
virtual_machine_id = DynamicModelMultipleChoiceField(
|
||||||
queryset=VirtualMachine.objects.all(),
|
queryset=VirtualMachine.objects.all(),
|
||||||
required=False,
|
required=False,
|
||||||
query_params={
|
|
||||||
'cluster_id': '$cluster_id'
|
|
||||||
},
|
|
||||||
label=_('Virtual machine')
|
label=_('Virtual machine')
|
||||||
)
|
)
|
||||||
tag = TagFilterField(model)
|
tag = TagFilterField(model)
|
||||||
|
@ -360,7 +360,7 @@ class VirtualDiskForm(NetBoxModelForm):
|
|||||||
)
|
)
|
||||||
|
|
||||||
fieldsets = (
|
fieldsets = (
|
||||||
(_(''), ('virtual_machine', 'name', 'size', 'tags')),
|
(None, ('virtual_machine', 'name', 'size', 'tags')),
|
||||||
)
|
)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
@ -390,10 +390,9 @@ class VirtualDisk(NetBoxModel, TrackingModelMixin):
|
|||||||
blank=True
|
blank=True
|
||||||
)
|
)
|
||||||
size = models.PositiveIntegerField(
|
size = models.PositiveIntegerField(
|
||||||
verbose_name=_('size'),
|
verbose_name=_('size (GB)'),
|
||||||
blank=True,
|
blank=True,
|
||||||
null=True,
|
null=True,
|
||||||
help_text=_("Size")
|
|
||||||
)
|
)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
@ -591,35 +591,6 @@ class VirtualDiskListView(generic.ObjectListView):
|
|||||||
class VirtualDiskView(generic.ObjectView):
|
class VirtualDiskView(generic.ObjectView):
|
||||||
queryset = VirtualDisk.objects.all()
|
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):
|
# class VirtualDiskCreateView(generic.ComponentCreateView):
|
||||||
# queryset = VirtualDisk.objects.all()
|
# queryset = VirtualDisk.objects.all()
|
||||||
|
Loading…
Reference in New Issue
Block a user