Merge "hardware: Raise useful error for invalid mempage size"

This commit is contained in:
Zuul
2020-05-22 11:41:17 +00:00
committed by Gerrit Code Review
2 changed files with 17 additions and 15 deletions

View File

@@ -2431,15 +2431,23 @@ class VirtMemoryPagesTestCase(test.NoDBTestCase):
spec={"hw:mem_page_size": "2048"}))
def test_get_requested_mempages_pagesize_from_flavor_invalid(self):
self.assertRaises(
ex = self.assertRaises(
exception.MemoryPageSizeInvalid,
self._test_get_requested_mempages_pagesize,
{"hw:mem_page_size": "foo"})
self.assertIn("foo", str(ex))
self.assertRaises(
ex = self.assertRaises(
exception.MemoryPageSizeInvalid,
self._test_get_requested_mempages_pagesize,
{"hw:mem_page_size": "-42"})
self.assertIn("-42", str(ex))
ex = self.assertRaises(
exception.MemoryPageSizeInvalid,
self._test_get_requested_mempages_pagesize,
{"hw:mem_page_size": "2M"})
self.assertIn("2M", str(ex))
def test_get_requested_mempages_pagesizes_from_flavor_suffix_sweep(self):
self.assertEqual(

View File

@@ -1343,20 +1343,14 @@ def _get_numa_pagesize_constraint(flavor, image_meta):
return MEMPAGES_LARGE
elif request == "small":
return MEMPAGES_SMALL
else:
try:
request = int(request)
except ValueError:
try:
request = strutils.string_to_bytes(
request, return_int=True) / units.Ki
except ValueError:
request = 0
elif request.isdigit():
return int(request)
if request <= 0:
raise exception.MemoryPageSizeInvalid(pagesize=request)
return request
try:
return strutils.string_to_bytes(
request, return_int=True) / units.Ki
except ValueError:
raise exception.MemoryPageSizeInvalid(pagesize=request) from None
flavor_request, image_request = _get_flavor_image_meta(
'mem_page_size', flavor, image_meta)