From 13d39a28ce71fefe7adaf4145cb7244f7ddeb952 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Mon, 12 Dec 2022 12:34:05 -0500 Subject: [PATCH] #7854: Misc cleanup --- netbox/dcim/api/serializers.py | 5 ++++- netbox/dcim/api/views.py | 2 ++ netbox/dcim/forms/model_forms.py | 5 ++--- netbox/dcim/tables/devices.py | 9 +++++++-- netbox/dcim/views.py | 5 ++++- 5 files changed, 19 insertions(+), 7 deletions(-) diff --git a/netbox/dcim/api/serializers.py b/netbox/dcim/api/serializers.py index 5ca57480b..728bb1046 100644 --- a/netbox/dcim/api/serializers.py +++ b/netbox/dcim/api/serializers.py @@ -680,11 +680,14 @@ class VirtualDeviceContextSerializer(NetBoxModelSerializer): primary_ip4 = NestedIPAddressSerializer(required=False, allow_null=True) primary_ip6 = NestedIPAddressSerializer(required=False, allow_null=True) + # Related object counts + interface_count = serializers.IntegerField(read_only=True) + class Meta: model = VirtualDeviceContext fields = [ 'id', 'url', 'display', 'name', 'device', 'identifier', 'tenant', 'primary_ip', 'primary_ip4', - 'primary_ip6', 'status', 'comments', 'tags', 'custom_fields', 'created', 'last_updated', + 'primary_ip6', 'status', 'comments', 'tags', 'custom_fields', 'created', 'last_updated', 'interface_count', ] diff --git a/netbox/dcim/api/views.py b/netbox/dcim/api/views.py index 3c5a3171f..954c6a2a5 100644 --- a/netbox/dcim/api/views.py +++ b/netbox/dcim/api/views.py @@ -541,6 +541,8 @@ class DeviceViewSet(ConfigContextQuerySetMixin, NetBoxModelViewSet): class VirtualDeviceContextViewSet(NetBoxModelViewSet): queryset = VirtualDeviceContext.objects.prefetch_related( 'device__device_type', 'device', 'tenant', 'tags', + ).annotate( + interface_count=count_related(Interface, 'vdcs'), ) serializer_class = serializers.VirtualDeviceContextSerializer filterset_class = filtersets.VirtualDeviceContextFilterSet diff --git a/netbox/dcim/forms/model_forms.py b/netbox/dcim/forms/model_forms.py index e13300a67..5b75e0cc6 100644 --- a/netbox/dcim/forms/model_forms.py +++ b/netbox/dcim/forms/model_forms.py @@ -1462,7 +1462,6 @@ class InterfaceForm(InterfaceCommonForm, ModularDeviceComponentForm): required=False, label=_('VRF') ) - wwn = forms.CharField( empty_value=None, required=False, @@ -1470,9 +1469,9 @@ class InterfaceForm(InterfaceCommonForm, ModularDeviceComponentForm): ) fieldsets = ( - ('Interface', ('device', 'module', 'vdcs', 'name', 'label', 'type', 'speed', 'duplex', 'description', 'tags')), + ('Interface', ('device', 'module', 'name', 'label', 'type', 'speed', 'duplex', 'description', 'tags')), ('Addressing', ('vrf', 'mac_address', 'wwn')), - ('Operation', ('mtu', 'tx_power', 'enabled', 'mgmt_only', 'mark_connected')), + ('Operation', ('vdcs', 'mtu', 'tx_power', 'enabled', 'mgmt_only', 'mark_connected')), ('Related Interfaces', ('parent', 'bridge', 'lag')), ('PoE', ('poe_mode', 'poe_type')), ('802.1Q Switching', ('mode', 'vlan_group', 'untagged_vlan', 'tagged_vlans')), diff --git a/netbox/dcim/tables/devices.py b/netbox/dcim/tables/devices.py index 6a9c58eb1..7b8ea1ed3 100644 --- a/netbox/dcim/tables/devices.py +++ b/netbox/dcim/tables/devices.py @@ -916,6 +916,11 @@ class VirtualDeviceContextTable(TenancyColumnsMixin, NetBoxTable): linkify=True, verbose_name='IPv6 Address' ) + interface_count = columns.LinkedCountColumn( + viewname='dcim:interface_list', + url_params={'vdc_id': 'pk'}, + verbose_name='Interfaces' + ) comments = columns.MarkdownColumn() @@ -926,8 +931,8 @@ class VirtualDeviceContextTable(TenancyColumnsMixin, NetBoxTable): class Meta(NetBoxTable.Meta): model = models.VirtualDeviceContext fields = ( - 'pk', 'id', 'name', 'status', 'identifier', 'tenant', 'tenant_group', - 'primary_ip', 'primary_ip4', 'primary_ip6', 'comments', 'tags', 'created', 'last_updated', + 'pk', 'id', 'name', 'status', 'identifier', 'tenant', 'tenant_group', 'primary_ip', 'primary_ip4', + 'primary_ip6', 'comments', 'tags', 'interface_count', 'created', 'last_updated', ) default_columns = ( 'pk', 'name', 'identifier', 'status', 'tenant', 'primary_ip', diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py index 9ddf76ea2..06a486534 100644 --- a/netbox/dcim/views.py +++ b/netbox/dcim/views.py @@ -3611,7 +3611,9 @@ register_model_view(PowerFeed, 'trace', kwargs={'model': PowerFeed})(PathTraceVi # VDC class VirtualDeviceContextListView(generic.ObjectListView): - queryset = VirtualDeviceContext.objects.all() + queryset = VirtualDeviceContext.objects.annotate( + interface_count=count_related(Interface, 'vdcs'), + ) filterset = filtersets.VirtualDeviceContextFilterSet filterset_form = forms.VirtualDeviceContextFilterForm table = tables.VirtualDeviceContextTable @@ -3624,6 +3626,7 @@ class VirtualDeviceContextView(generic.ObjectView): def get_extra_context(self, request, instance): interfaces_table = tables.InterfaceTable(instance.interfaces, user=request.user) interfaces_table.configure(request) + interfaces_table.columns.hide('device') return { 'interfaces_table': interfaces_table,