mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
* 8356 add virtual disk model * 8356 add supplemental forms * 8356 add menu * 8356 cleanup views * 8356 virtual machine tab * 8356 migrations * 8356 vm disk tables * 8356 cleanup * 8356 graphql * 8356 graphql * 8356 add components button * 8356 bulk add on virtualmachine * 8356 bulk add fixes * 8356 api tests * 8356 news tests add rename * 8356 VirtualDiskCreateForm * 8356 fix test * 8356 add todo to remove disk from vm * 8356 review changes * 8356 fix test * 8356 deprecate disk field * 8356 review changes * 8356 fix test * 8356 fix test * Simplify view actions * 8356 review changes * 8356 split trans tag * 8356 add total virtual disk size to api * 8356 add virtual disk list to virtual machine detail view * 8356 move virtual disk size to property * 8356 revert property * Tweak display of deprecated disk field * 8356 render single disk field * 8356 update serializer * 8356 model property * 8356 fix test * 8356 review changes * Revert disk space annotation * Use existing disk field to store aggregate virtual disk size * Introduce abstract ComponentModel for VM components * Add search index for VirtualDisk * Misc cleanup --------- Co-authored-by: Jeremy Stretch <jstretch@netboxlabs.com>
85 lines
2.6 KiB
Python
85 lines
2.6 KiB
Python
from drf_spectacular.utils import extend_schema_serializer
|
|
from rest_framework import serializers
|
|
|
|
from netbox.api.serializers import WritableNestedSerializer
|
|
from virtualization.models import *
|
|
|
|
__all__ = [
|
|
'NestedClusterGroupSerializer',
|
|
'NestedClusterSerializer',
|
|
'NestedClusterTypeSerializer',
|
|
'NestedVirtualDiskSerializer',
|
|
'NestedVMInterfaceSerializer',
|
|
'NestedVirtualMachineSerializer',
|
|
]
|
|
|
|
#
|
|
# Clusters
|
|
#
|
|
|
|
|
|
@extend_schema_serializer(
|
|
exclude_fields=('cluster_count',),
|
|
)
|
|
class NestedClusterTypeSerializer(WritableNestedSerializer):
|
|
url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:clustertype-detail')
|
|
cluster_count = serializers.IntegerField(read_only=True)
|
|
|
|
class Meta:
|
|
model = ClusterType
|
|
fields = ['id', 'url', 'display', 'name', 'slug', 'cluster_count']
|
|
|
|
|
|
@extend_schema_serializer(
|
|
exclude_fields=('cluster_count',),
|
|
)
|
|
class NestedClusterGroupSerializer(WritableNestedSerializer):
|
|
url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:clustergroup-detail')
|
|
cluster_count = serializers.IntegerField(read_only=True)
|
|
|
|
class Meta:
|
|
model = ClusterGroup
|
|
fields = ['id', 'url', 'display', 'name', 'slug', 'cluster_count']
|
|
|
|
|
|
@extend_schema_serializer(
|
|
exclude_fields=('virtualmachine_count',),
|
|
)
|
|
class NestedClusterSerializer(WritableNestedSerializer):
|
|
url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:cluster-detail')
|
|
virtualmachine_count = serializers.IntegerField(read_only=True)
|
|
|
|
class Meta:
|
|
model = Cluster
|
|
fields = ['id', 'url', 'display', 'name', 'virtualmachine_count']
|
|
|
|
|
|
#
|
|
# Virtual machines
|
|
#
|
|
|
|
class NestedVirtualMachineSerializer(WritableNestedSerializer):
|
|
url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:virtualmachine-detail')
|
|
|
|
class Meta:
|
|
model = VirtualMachine
|
|
fields = ['id', 'url', 'display', 'name']
|
|
|
|
|
|
class NestedVMInterfaceSerializer(WritableNestedSerializer):
|
|
url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:vminterface-detail')
|
|
virtual_machine = NestedVirtualMachineSerializer(read_only=True)
|
|
|
|
class Meta:
|
|
model = VMInterface
|
|
fields = ['id', 'url', 'display', 'virtual_machine', 'name']
|
|
|
|
|
|
class NestedVirtualDiskSerializer(WritableNestedSerializer):
|
|
url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:virtualdisk-detail')
|
|
virtual_machine = NestedVirtualMachineSerializer(read_only=True)
|
|
|
|
class Meta:
|
|
model = VirtualDisk
|
|
fields = ['id', 'url', 'display', 'virtual_machine', 'name', 'size']
|