diff --git a/netbox/ipam/api/serializers.py b/netbox/ipam/api/serializers.py index a5b64fca6..36394dad2 100644 --- a/netbox/ipam/api/serializers.py +++ b/netbox/ipam/api/serializers.py @@ -240,12 +240,22 @@ class WritablePrefixSerializer(CustomFieldModelSerializer): # IP addresses # +class IPAddressInterfaceSerializer(InterfaceSerializer): + virtual_machine = NestedVirtualMachineSerializer() + + class Meta(InterfaceSerializer.Meta): + fields = [ + 'id', 'device', 'virtual_machine', 'name', 'form_factor', 'enabled', 'lag', 'mtu', 'mac_address', + 'mgmt_only', 'description', 'is_connected', 'interface_connection', 'circuit_termination', + ] + + class IPAddressSerializer(CustomFieldModelSerializer): vrf = NestedVRFSerializer() tenant = NestedTenantSerializer() status = ChoiceFieldSerializer(choices=IPADDRESS_STATUS_CHOICES) role = ChoiceFieldSerializer(choices=IPADDRESS_ROLE_CHOICES) - interface = InterfaceSerializer() + interface = IPAddressInterfaceSerializer() class Meta: model = IPAddress @@ -262,6 +272,7 @@ class NestedIPAddressSerializer(serializers.ModelSerializer): model = IPAddress fields = ['id', 'url', 'family', 'address'] + IPAddressSerializer._declared_fields['nat_inside'] = NestedIPAddressSerializer() IPAddressSerializer._declared_fields['nat_outside'] = NestedIPAddressSerializer() diff --git a/netbox/ipam/api/views.py b/netbox/ipam/api/views.py index dabb518ae..b615b470f 100644 --- a/netbox/ipam/api/views.py +++ b/netbox/ipam/api/views.py @@ -151,7 +151,7 @@ class IPAddressViewSet(WritableSerializerMixin, CustomFieldModelViewSet): queryset = IPAddress.objects.select_related( 'vrf__tenant', 'tenant', 'nat_inside' ).prefetch_related( - 'interface__device' + 'interface__device', 'interface__virtual_machine' ) serializer_class = serializers.IPAddressSerializer write_serializer_class = serializers.WritableIPAddressSerializer