mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
* Enable dynamic field inclusion for REST API serializers * Recurse through nested serializer when resolving prefetches * Remove obsolete calls to prefetch_related() for API views * Remove support for brief_prefetch_fields viewset attribute * Rename query parameter * Fixes #15133: Fix FHRP group representation on assignments endpoint under brief mode (#15134) * Fixes #15133: Fix FHRP group representation on assignments endpoint under brief mode * Update API test * Restore get_queryset() on BriefModeMixin, minus prefetch logic * get_prefetches_for_serializer() should reference serializer field source if set
This commit is contained in:
@ -25,7 +25,7 @@ class VirtualizationRootView(APIRootView):
|
||||
class ClusterTypeViewSet(NetBoxModelViewSet):
|
||||
queryset = ClusterType.objects.annotate(
|
||||
cluster_count=count_related(Cluster, 'type')
|
||||
).prefetch_related('tags')
|
||||
)
|
||||
serializer_class = serializers.ClusterTypeSerializer
|
||||
filterset_class = filtersets.ClusterTypeFilterSet
|
||||
|
||||
@ -33,15 +33,13 @@ class ClusterTypeViewSet(NetBoxModelViewSet):
|
||||
class ClusterGroupViewSet(NetBoxModelViewSet):
|
||||
queryset = ClusterGroup.objects.annotate(
|
||||
cluster_count=count_related(Cluster, 'group')
|
||||
).prefetch_related('tags')
|
||||
)
|
||||
serializer_class = serializers.ClusterGroupSerializer
|
||||
filterset_class = filtersets.ClusterGroupFilterSet
|
||||
|
||||
|
||||
class ClusterViewSet(NetBoxModelViewSet):
|
||||
queryset = Cluster.objects.prefetch_related(
|
||||
'type', 'group', 'tenant', 'site', 'tags'
|
||||
).annotate(
|
||||
queryset = Cluster.objects.annotate(
|
||||
device_count=count_related(Device, 'cluster'),
|
||||
virtualmachine_count=count_related(VirtualMachine, 'cluster')
|
||||
)
|
||||
@ -54,10 +52,7 @@ class ClusterViewSet(NetBoxModelViewSet):
|
||||
#
|
||||
|
||||
class VirtualMachineViewSet(ConfigContextQuerySetMixin, RenderConfigMixin, NetBoxModelViewSet):
|
||||
queryset = VirtualMachine.objects.prefetch_related(
|
||||
'site', 'cluster', 'device', 'role', 'tenant', 'platform', 'primary_ip4', 'primary_ip6', 'config_template',
|
||||
'tags', 'virtualdisks',
|
||||
)
|
||||
queryset = VirtualMachine.objects.all()
|
||||
filterset_class = filtersets.VirtualMachineFilterSet
|
||||
|
||||
def get_serializer_class(self):
|
||||
@ -83,12 +78,12 @@ class VirtualMachineViewSet(ConfigContextQuerySetMixin, RenderConfigMixin, NetBo
|
||||
|
||||
class VMInterfaceViewSet(NetBoxModelViewSet):
|
||||
queryset = VMInterface.objects.prefetch_related(
|
||||
'virtual_machine', 'parent', 'tags', 'untagged_vlan', 'tagged_vlans', 'vrf', 'ip_addresses',
|
||||
'fhrp_group_assignments',
|
||||
'l2vpn_terminations', # Referenced by VMInterfaceSerializer.l2vpn_termination
|
||||
'ip_addresses', # Referenced by VMInterface.count_ipaddresses()
|
||||
'fhrp_group_assignments', # Referenced by VMInterface.count_fhrp_groups()
|
||||
)
|
||||
serializer_class = serializers.VMInterfaceSerializer
|
||||
filterset_class = filtersets.VMInterfaceFilterSet
|
||||
brief_prefetch_fields = ['virtual_machine']
|
||||
|
||||
def get_bulk_destroy_queryset(self):
|
||||
# Ensure child interfaces are deleted prior to their parents
|
||||
@ -96,9 +91,6 @@ class VMInterfaceViewSet(NetBoxModelViewSet):
|
||||
|
||||
|
||||
class VirtualDiskViewSet(NetBoxModelViewSet):
|
||||
queryset = VirtualDisk.objects.prefetch_related(
|
||||
'virtual_machine', 'tags',
|
||||
)
|
||||
queryset = VirtualDisk.objects.all()
|
||||
serializer_class = serializers.VirtualDiskSerializer
|
||||
filterset_class = filtersets.VirtualDiskFilterSet
|
||||
brief_prefetch_fields = ['virtual_machine']
|
||||
|
Reference in New Issue
Block a user