Reject excessively long image names.
Fixes bug 966240 Image names longer than 255 characters are rejected with 400 BadRequest on creation or update. Change-Id: I460ffee547496829cbf198b50bca564978abe7f3
This commit is contained in:
parent
9fd589c869
commit
8b7a830c04
|
@ -465,6 +465,11 @@ def validate_image(values):
|
||||||
"and disk formats must match.")
|
"and disk formats must match.")
|
||||||
raise exception.Invalid(msg)
|
raise exception.Invalid(msg)
|
||||||
|
|
||||||
|
name = values.get('name')
|
||||||
|
if name and len(name) > 255:
|
||||||
|
msg = _('Image name too long: %d') % len(name)
|
||||||
|
raise exception.Invalid(msg)
|
||||||
|
|
||||||
|
|
||||||
def _image_update(context, values, image_id, purge_props=False):
|
def _image_update(context, values, image_id, purge_props=False):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -1061,6 +1061,57 @@ class TestRegistryClient(base.IsolatedUnitTest):
|
||||||
self.client.add_image,
|
self.client.add_image,
|
||||||
fixture)
|
fixture)
|
||||||
|
|
||||||
|
def test_add_image_with_acceptably_long_name(self):
|
||||||
|
"""Tests adding image with acceptably long name"""
|
||||||
|
name = 'x' * 255
|
||||||
|
fixture = {'name': name,
|
||||||
|
'is_public': True,
|
||||||
|
'disk_format': 'vmdk',
|
||||||
|
'container_format': 'ovf',
|
||||||
|
'size': 19,
|
||||||
|
'location': "file:///tmp/glance-tests/2",
|
||||||
|
}
|
||||||
|
|
||||||
|
new_image = self.client.add_image(fixture)
|
||||||
|
|
||||||
|
data = self.client.get_image(new_image['id'])
|
||||||
|
self.assertEquals(name, data['name'])
|
||||||
|
|
||||||
|
def test_add_image_with_excessively_long_name(self):
|
||||||
|
"""Tests adding image with excessively long name"""
|
||||||
|
name = 'x' * 256
|
||||||
|
fixture = {'name': name,
|
||||||
|
'is_public': True,
|
||||||
|
'disk_format': 'vmdk',
|
||||||
|
'container_format': 'ovf',
|
||||||
|
'size': 19,
|
||||||
|
'location': "file:///tmp/glance-tests/2",
|
||||||
|
}
|
||||||
|
|
||||||
|
self.assertRaises(exception.Invalid,
|
||||||
|
self.client.add_image,
|
||||||
|
fixture)
|
||||||
|
|
||||||
|
def test_update_image_with_acceptably_long_name(self):
|
||||||
|
"""Tests updating image with acceptably long name"""
|
||||||
|
name = 'x' * 255
|
||||||
|
fixture = {'name': name}
|
||||||
|
|
||||||
|
self.assertTrue(self.client.update_image(UUID2, fixture))
|
||||||
|
|
||||||
|
data = self.client.get_image(UUID2)
|
||||||
|
self.assertEquals(name, data['name'])
|
||||||
|
|
||||||
|
def test_update_image_with_excessively_long_name(self):
|
||||||
|
"""Tests updating image with excessively long name"""
|
||||||
|
name = 'x' * 256
|
||||||
|
fixture = {'name': name}
|
||||||
|
|
||||||
|
self.assertRaises(exception.Invalid,
|
||||||
|
self.client.update_image,
|
||||||
|
UUID2,
|
||||||
|
fixture)
|
||||||
|
|
||||||
def test_update_image(self):
|
def test_update_image(self):
|
||||||
"""Tests that the /images PUT registry API updates the image"""
|
"""Tests that the /images PUT registry API updates the image"""
|
||||||
fixture = {'name': 'fake public image #2',
|
fixture = {'name': 'fake public image #2',
|
||||||
|
|
Loading…
Reference in New Issue