Merge "Handle requirements set to empty strings"

This commit is contained in:
Zuul 2018-10-09 18:40:55 +00:00 committed by Gerrit Code Review
commit edfdd625fa
2 changed files with 13 additions and 0 deletions

View File

@ -29,6 +29,13 @@ class TestPluginsUtils(tests.TestCase):
result = plugins_utils.convert_requirements(request)
self.assertEqual([], result)
def test_convert_requirements_empty_string(self):
# NOTE(priteau): Currently, empty requirements can be persisted in the
# database as empty strings, which are not valid JSON objects.
request = ''
result = plugins_utils.convert_requirements(request)
self.assertEqual([], result)
def test_convert_requirements_small(self):
request = '["=", "$memory", "4096"]'
result = plugins_utils.convert_requirements(request)

View File

@ -28,6 +28,12 @@ def convert_requirements(requirements):
# TODO(frossigneux) Support the "or" operator
# Convert text to json
if isinstance(requirements, six.string_types):
# Treat empty string as an empty JSON array, to avoid raising a
# ValueError exception while loading JSON
#
# TODO(priteau): Only persist valid JSON to the database
if requirements == '':
requirements = '[]'
try:
requirements = jsonutils.loads(requirements)
except ValueError: