Closes #17143: Deprecate the use of dedicated nested API serializers

This commit is contained in:
Jeremy Stretch
2024-08-14 15:26:16 -04:00
parent b3dfe8622d
commit 0f37da1523
40 changed files with 345 additions and 217 deletions

View File

@@ -1,9 +1,11 @@
import warnings
from drf_spectacular.utils import extend_schema_serializer
from rest_framework import serializers
from netbox.api.fields import RelatedObjectCountField
from netbox.api.serializers import WritableNestedSerializer
from virtualization.models import *
from .serializers_.nested import NestedVirtualMachineSerializer, NestedVMInterfaceSerializer
__all__ = [
'NestedClusterGroupSerializer',
@@ -14,11 +16,17 @@ __all__ = [
'NestedVirtualMachineSerializer',
]
# TODO: Remove in v4.2
warnings.warn(
f"Dedicated nested serializers will be removed in NetBox v4.2. Use Serializer(nested=True) instead.",
DeprecationWarning
)
#
# Clusters
#
@extend_schema_serializer(
exclude_fields=('cluster_count',),
)
@@ -56,21 +64,6 @@ class NestedClusterSerializer(WritableNestedSerializer):
# Virtual machines
#
class NestedVirtualMachineSerializer(WritableNestedSerializer):
class Meta:
model = VirtualMachine
fields = ['id', 'url', 'display_url', 'display', 'name']
class NestedVMInterfaceSerializer(WritableNestedSerializer):
virtual_machine = NestedVirtualMachineSerializer(read_only=True)
class Meta:
model = VMInterface
fields = ['id', 'url', 'display_url', 'display', 'virtual_machine', 'name']
class NestedVirtualDiskSerializer(WritableNestedSerializer):
virtual_machine = NestedVirtualMachineSerializer(read_only=True)

View File

@@ -1,3 +1,2 @@
from .serializers_.clusters import *
from .serializers_.virtualmachines import *
from .nested_serializers import *

View File

@@ -0,0 +1,22 @@
from netbox.api.serializers import WritableNestedSerializer
from virtualization import models
__all__ = (
'NestedVirtualMachineSerializer',
'NestedVMInterfaceSerializer',
)
class NestedVirtualMachineSerializer(WritableNestedSerializer):
class Meta:
model = models.VirtualMachine
fields = ['id', 'url', 'display_url', 'display', 'name']
class NestedVMInterfaceSerializer(WritableNestedSerializer):
virtual_machine = NestedVirtualMachineSerializer(read_only=True)
class Meta:
model = models.VMInterface
fields = ['id', 'url', 'display_url', 'display', 'virtual_machine', 'name']

View File

@@ -18,7 +18,7 @@ from virtualization.choices import *
from virtualization.models import VirtualDisk, VirtualMachine, VMInterface
from vpn.api.serializers_.l2vpn import L2VPNTerminationSerializer
from .clusters import ClusterSerializer
from ..nested_serializers import *
from .nested import NestedVMInterfaceSerializer
__all__ = (
'VMInterfaceSerializer',