From d98aa03e9d012715bb4d47d92e7dec92fd30fa6e Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Fri, 29 Jun 2018 14:52:37 -0400 Subject: [PATCH] Fixes #2173: Fixed IndexError when automaticating allocating IP addresses from large IPv6 prefixes --- netbox/ipam/api/views.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/netbox/ipam/api/views.py b/netbox/ipam/api/views.py index f6a55b618..127fe77d9 100644 --- a/netbox/ipam/api/views.py +++ b/netbox/ipam/api/views.py @@ -160,8 +160,8 @@ class PrefixViewSet(CustomFieldModelViewSet): requested_ips = request.data if isinstance(request.data, list) else [request.data] # Determine if the requested number of IPs is available - available_ips = list(prefix.get_available_ips()) - if len(available_ips) < len(requested_ips): + available_ips = prefix.get_available_ips() + if available_ips.size < len(requested_ips): return Response( { "detail": "An insufficient number of IP addresses are available within the prefix {} ({} " @@ -171,8 +171,9 @@ class PrefixViewSet(CustomFieldModelViewSet): ) # Assign addresses from the list of available IPs and copy VRF assignment from the parent prefix + available_ips = iter(available_ips) for requested_ip in requested_ips: - requested_ip['address'] = available_ips.pop(0) + requested_ip['address'] = next(available_ips) requested_ip['vrf'] = prefix.vrf.pk if prefix.vrf else None # Initialize the serializer with a list or a single object depending on what was requested