예제 #1
0
 def test_suggest_range_invalid(self):
     prefix = IP("10.0.0.0/24")
     prefixlen = 23
     candidates = suggest_range(prefix, prefixlen)["candidates"]
     # a too large range should only return the original prefix
     self.assertEqual(len(candidates), 1)
     self.assertEqual(IP(candidates[0]["prefix"]), prefix)
예제 #2
0
 def test_suggest_range_valid(self):
     prefix = IP("10.0.0.0/8")
     prefixlen = 24
     n = 16
     suggested_ranges = suggest_range(prefix, prefixlen, n=n)
     self.assertEqual(len(suggested_ranges["candidates"]), 16)
     # make sure all suggestions are within bounds
     for suggested_range in suggested_ranges["candidates"]:
         self.assertTrue(suggested_range["prefix"] in prefix)
예제 #3
0
 def suggest(self, request, *args, **kwargs):
     "Suggests subnets of size=?number_of_hosts for ?prefix"
     params = SuggestParams(data=request.query_params)
     if not params.is_valid():
         return Response(data=params.errors,
                         status=status.HTTP_400_BAD_REQUEST)
     params = params.validated_data
     payload = suggest_range(params["prefix"], offset=params["offset"],
                             prefixlen=params["prefixlen"], n=params["n"])
     return Response(payload, status=status.HTTP_200_OK)