From 17a2b535219ab9efab7154dda8a62df5e45afe2c Mon Sep 17 00:00:00 2001 From: Brian Tiemann Date: Thu, 14 Nov 2024 15:24:43 -0500 Subject: [PATCH] Simplify serializer and add ip_addresses --- netbox/dcim/api/serializers_/device_components.py | 9 ++++----- netbox/dcim/models/device_components.py | 2 +- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/netbox/dcim/api/serializers_/device_components.py b/netbox/dcim/api/serializers_/device_components.py index 83e671411..9e3aa4d37 100644 --- a/netbox/dcim/api/serializers_/device_components.py +++ b/netbox/dcim/api/serializers_/device_components.py @@ -10,6 +10,7 @@ from dcim.models import ( ) from ipam.api.serializers_.vlans import VLANSerializer, VLANTranslationPolicySerializer from ipam.api.serializers_.vrfs import VRFSerializer +from ipam.api.serializers_.ip import IPAddressSerializer from ipam.models import VLAN from netbox.api.fields import ChoiceField, ContentTypeField, SerializedPKRelatedField from netbox.api.serializers import NetBoxModelSerializer, WritableNestedSerializer @@ -211,13 +212,11 @@ class InterfaceSerializer(NetBoxModelSerializer, CabledObjectSerializer, Connect count_ipaddresses = serializers.IntegerField(read_only=True) count_fhrp_groups = serializers.IntegerField(read_only=True) mac_address = serializers.CharField( - required=False, - default=None, - allow_blank=True, allow_null=True, read_only=True ) - mac_addresses = MACAddressSerializer(many=True, read_only=True) + mac_addresses = MACAddressSerializer(many=True, nested=True, read_only=True, allow_null=True) + ip_addresses = IPAddressSerializer(many=True, nested=True, read_only=True, allow_null=True) wwn = serializers.CharField(required=False, default=None, allow_blank=True, allow_null=True) class Meta: @@ -230,7 +229,7 @@ class InterfaceSerializer(NetBoxModelSerializer, CabledObjectSerializer, Connect 'cable', 'cable_end', 'wireless_link', 'link_peers', 'link_peers_type', 'wireless_lans', 'vrf', 'l2vpn_termination', 'connected_endpoints', 'connected_endpoints_type', 'connected_endpoints_reachable', 'tags', 'custom_fields', 'created', 'last_updated', 'count_ipaddresses', 'count_fhrp_groups', '_occupied', - 'mac_addresses', + 'mac_addresses', 'ip_addresses', ] brief_fields = ('id', 'url', 'display', 'device', 'name', 'description', 'cable', '_occupied') diff --git a/netbox/dcim/models/device_components.py b/netbox/dcim/models/device_components.py index b2a7e3188..c663ee34a 100644 --- a/netbox/dcim/models/device_components.py +++ b/netbox/dcim/models/device_components.py @@ -608,7 +608,7 @@ class BaseInterface(models.Model): def count_fhrp_groups(self): return self.fhrp_group_assignments.count() - @property + @cached_property def mac_address(self): if macaddress := self.mac_addresses.order_by('-is_primary').first(): return macaddress.mac_address