From 46e594f1f1b1e1d4a9eb8f107e6e76a7aa3ad18c Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Mon, 5 Nov 2018 14:32:22 -0500 Subject: [PATCH] Closes #1931: Added a count of assigned IP addresses to the interface API serializer --- netbox/dcim/api/serializers.py | 2 +- netbox/dcim/api/views.py | 4 ++-- netbox/dcim/models.py | 4 ++++ 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/netbox/dcim/api/serializers.py b/netbox/dcim/api/serializers.py index 882e12310..bc0995d49 100644 --- a/netbox/dcim/api/serializers.py +++ b/netbox/dcim/api/serializers.py @@ -712,7 +712,7 @@ class InterfaceSerializer(TaggitSerializer, ValidatedModelSerializer): model = Interface fields = [ 'id', 'device', 'name', 'form_factor', 'enabled', 'lag', 'mtu', 'mac_address', 'mgmt_only', 'description', - 'connected_endpoint', 'cable', 'mode', 'untagged_vlan', 'tagged_vlans', 'tags', + 'connected_endpoint', 'cable', 'mode', 'untagged_vlan', 'tagged_vlans', 'tags', 'count_ipaddresses', ] def validate(self, data): diff --git a/netbox/dcim/api/views.py b/netbox/dcim/api/views.py index 6a0b29d96..b615a83c0 100644 --- a/netbox/dcim/api/views.py +++ b/netbox/dcim/api/views.py @@ -1,7 +1,7 @@ from collections import OrderedDict from django.conf import settings -from django.db.models import F, Q +from django.db.models import Count, F, Q from django.http import HttpResponseForbidden from django.shortcuts import get_object_or_404 from drf_yasg import openapi @@ -409,7 +409,7 @@ class InterfaceViewSet(CableTraceMixin, ModelViewSet): queryset = Interface.objects.select_related( 'device', '_connected_interface', '_connected_circuittermination', 'cable' ).prefetch_related( - 'tags' + 'ip_addresses', 'tags' ) serializer_class = serializers.InterfaceSerializer filterset_class = filters.InterfaceFilter diff --git a/netbox/dcim/models.py b/netbox/dcim/models.py index e332dafd2..a79118077 100644 --- a/netbox/dcim/models.py +++ b/netbox/dcim/models.py @@ -2091,6 +2091,10 @@ class Interface(CableTermination, ComponentModel): def is_lag(self): return self.form_factor == IFACE_FF_LAG + @property + def count_ipaddresses(self): + return self.ip_addresses.count() + # # Pass-through ports