Merge "Let schema validate image metadata type and key lengths"
This commit is contained in:
commit
1fe03feb49
|
@ -290,19 +290,6 @@ def check_img_metadata_properties_quota(context, metadata):
|
|||
expl = _("Image metadata limit exceeded")
|
||||
raise webob.exc.HTTPForbidden(explanation=expl)
|
||||
|
||||
# check the key length.
|
||||
if isinstance(metadata, dict):
|
||||
for key, value in six.iteritems(metadata):
|
||||
if len(key) == 0:
|
||||
expl = _("Image metadata key cannot be blank")
|
||||
raise webob.exc.HTTPBadRequest(explanation=expl)
|
||||
if len(key) > 255:
|
||||
expl = _("Image metadata key too long")
|
||||
raise webob.exc.HTTPBadRequest(explanation=expl)
|
||||
else:
|
||||
expl = _("Invalid image metadata")
|
||||
raise webob.exc.HTTPBadRequest(explanation=expl)
|
||||
|
||||
|
||||
def get_networks_for_instance_from_nw_info(nw_info):
|
||||
networks = collections.OrderedDict()
|
||||
|
|
|
@ -28,9 +28,7 @@ create_backup = {
|
|||
'type': 'string',
|
||||
},
|
||||
'rotation': parameter_types.non_negative_integer,
|
||||
'metadata': {
|
||||
'type': 'object',
|
||||
}
|
||||
'metadata': parameter_types.metadata,
|
||||
},
|
||||
'required': ['name', 'backup_type', 'rotation'],
|
||||
'additionalProperties': False,
|
||||
|
|
|
@ -30,7 +30,6 @@ from nova.compute import vm_states
|
|||
from nova import exception
|
||||
from nova import test
|
||||
from nova.tests.unit.api.openstack import fakes
|
||||
from nova.tests.unit import utils
|
||||
|
||||
|
||||
NS = "{http://docs.openstack.org/compute/api/v1.1}"
|
||||
|
@ -374,41 +373,6 @@ class MiscFunctionsTest(test.TestCase):
|
|||
else:
|
||||
self.fail("webob.exc.HTTPConflict was not raised")
|
||||
|
||||
def test_check_img_metadata_properties_quota_valid_metadata(self):
|
||||
ctxt = utils.get_test_admin_context()
|
||||
metadata1 = {"key": "value"}
|
||||
actual = common.check_img_metadata_properties_quota(ctxt, metadata1)
|
||||
self.assertIsNone(actual)
|
||||
|
||||
metadata2 = {"key": "v" * 260}
|
||||
actual = common.check_img_metadata_properties_quota(ctxt, metadata2)
|
||||
self.assertIsNone(actual)
|
||||
|
||||
metadata3 = {"key": ""}
|
||||
actual = common.check_img_metadata_properties_quota(ctxt, metadata3)
|
||||
self.assertIsNone(actual)
|
||||
|
||||
def test_check_img_metadata_properties_quota_inv_metadata(self):
|
||||
ctxt = utils.get_test_admin_context()
|
||||
metadata1 = {"a" * 260: "value"}
|
||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||
common.check_img_metadata_properties_quota, ctxt, metadata1)
|
||||
|
||||
metadata2 = {"": "value"}
|
||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||
common.check_img_metadata_properties_quota, ctxt, metadata2)
|
||||
|
||||
metadata3 = "invalid metadata"
|
||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||
common.check_img_metadata_properties_quota, ctxt, metadata3)
|
||||
|
||||
metadata4 = None
|
||||
self.assertIsNone(common.check_img_metadata_properties_quota(ctxt,
|
||||
metadata4))
|
||||
metadata5 = {}
|
||||
self.assertIsNone(common.check_img_metadata_properties_quota(ctxt,
|
||||
metadata5))
|
||||
|
||||
def test_status_from_state(self):
|
||||
for vm_state in (vm_states.ACTIVE, vm_states.STOPPED):
|
||||
for task_state in (task_states.RESIZE_PREP,
|
||||
|
|
Loading…
Reference in New Issue