From 80080150823449cf57e9459400e32a58248a31e3 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Fri, 29 Jun 2018 15:18:30 -0400 Subject: [PATCH] Tweaked API error reporting from #2181 --- netbox/ipam/api/views.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/netbox/ipam/api/views.py b/netbox/ipam/api/views.py index ac5ccd972..31e899afd 100644 --- a/netbox/ipam/api/views.py +++ b/netbox/ipam/api/views.py @@ -101,20 +101,28 @@ class PrefixViewSet(CustomFieldModelViewSet): for i, requested_prefix in enumerate(requested_prefixes): # Validate requested prefix size + error_msg = None if 'prefix_length' not in requested_prefix: - raise ValidationError("Item {}: prefix_length field missing".format(i)) + error_msg = "Item {}: prefix_length field missing".format(i) elif not isinstance(requested_prefix['prefix_length'], int): - raise ValidationError("Item {}: Invalid prefix length ({})".format( + error_msg = "Item {}: Invalid prefix length ({})".format( i, requested_prefix['prefix_length'] - )) + ) elif prefix.family == 4 and requested_prefix['prefix_length'] > 32: - raise ValidationError("Item {}: Invalid prefix length ({}) for IPv4".format( + error_msg = "Item {}: Invalid prefix length ({}) for IPv4".format( i, requested_prefix['prefix_length'] - )) + ) elif prefix.family == 6 and requested_prefix['prefix_length'] > 128: - raise ValidationError("Item {}: Invalid prefix length ({}) for IPv6".format( + error_msg = "Item {}: Invalid prefix length ({}) for IPv6".format( i, requested_prefix['prefix_length'] - )) + ) + if error_msg: + return Response( + { + "detail": error_msg + }, + status=status.HTTP_400_BAD_REQUEST + ) # Find the first available prefix equal to or larger than the requested size for available_prefix in available_prefixes.iter_cidrs():