diff --git a/netbox/ipam/api/views.py b/netbox/ipam/api/views.py index 30a987f74..e32688343 100644 --- a/netbox/ipam/api/views.py +++ b/netbox/ipam/api/views.py @@ -140,10 +140,11 @@ class PrefixViewSet(CustomFieldModelViewSet): available_prefixes.remove(allocated_prefix) # Initialize the serializer with a list or a single object depending on what was requested + context = {'request': request} if isinstance(request.data, list): - serializer = serializers.PrefixSerializer(data=requested_prefixes, many=True) + serializer = serializers.PrefixSerializer(data=requested_prefixes, many=True, context=context) else: - serializer = serializers.PrefixSerializer(data=requested_prefixes[0]) + serializer = serializers.PrefixSerializer(data=requested_prefixes[0], context=context) # Create the new Prefix(es) if serializer.is_valid(): @@ -199,10 +200,11 @@ class PrefixViewSet(CustomFieldModelViewSet): 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 + context = {'request': request} if isinstance(request.data, list): - serializer = serializers.IPAddressSerializer(data=requested_ips, many=True) + serializer = serializers.IPAddressSerializer(data=requested_ips, many=True, context=context) else: - serializer = serializers.IPAddressSerializer(data=requested_ips[0]) + serializer = serializers.IPAddressSerializer(data=requested_ips[0], context=context) # Create the new IP address(es) if serializer.is_valid(): diff --git a/netbox/ipam/tests/test_api.py b/netbox/ipam/tests/test_api.py index f295bee29..0ff87d5cf 100644 --- a/netbox/ipam/tests/test_api.py +++ b/netbox/ipam/tests/test_api.py @@ -494,7 +494,8 @@ class PrefixTest(APITestCase): def test_create_single_available_prefix(self): - prefix = Prefix.objects.create(prefix=IPNetwork('192.0.2.0/28'), is_pool=True) + vrf = VRF.objects.create(name='Test VRF 1', rd='1234') + prefix = Prefix.objects.create(prefix=IPNetwork('192.0.2.0/28'), vrf=vrf, is_pool=True) url = reverse('ipam-api:prefix-available-prefixes', kwargs={'pk': prefix.pk}) # Create four available prefixes with individual requests @@ -512,6 +513,7 @@ class PrefixTest(APITestCase): response = self.client.post(url, data, format='json', **self.header) self.assertHttpStatus(response, status.HTTP_201_CREATED) self.assertEqual(response.data['prefix'], prefixes_to_be_created[i]) + self.assertEqual(response.data['vrf']['id'], vrf.pk) self.assertEqual(response.data['description'], data['description']) # Try to create one more prefix @@ -562,7 +564,8 @@ class PrefixTest(APITestCase): def test_create_single_available_ip(self): - prefix = Prefix.objects.create(prefix=IPNetwork('192.0.2.0/30'), is_pool=True) + vrf = VRF.objects.create(name='Test VRF 1', rd='1234') + prefix = Prefix.objects.create(prefix=IPNetwork('192.0.2.0/30'), vrf=vrf, is_pool=True) url = reverse('ipam-api:prefix-available-ips', kwargs={'pk': prefix.pk}) # Create all four available IPs with individual requests @@ -572,6 +575,7 @@ class PrefixTest(APITestCase): } response = self.client.post(url, data, format='json', **self.header) self.assertHttpStatus(response, status.HTTP_201_CREATED) + self.assertEqual(response.data['vrf']['id'], vrf.pk) self.assertEqual(response.data['description'], data['description']) # Try to create one more IP