Bladeren bron

Closes #1931: Added a count of assigned IP addresses to the interface API serializer

Jeremy Stretch 7 jaren geleden
bovenliggende
commit
46e594f1f1
3 gewijzigde bestanden met toevoegingen van 7 en 3 verwijderingen
  1. 1 1
      netbox/dcim/api/serializers.py
  2. 2 2
      netbox/dcim/api/views.py
  3. 4 0
      netbox/dcim/models.py

+ 1 - 1
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):

+ 2 - 2
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

+ 4 - 0
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