Removal of constraint for blob re-upload
Change-Id: Ic333f9d9deb29f0a235db6aa956d7b11f8991414
This commit is contained in:
parent
c73fe300f5
commit
c329e4f5f2
|
@ -565,9 +565,14 @@ class Engine(object):
|
|||
policy.authorize(action_name, af.to_dict(), context)
|
||||
|
||||
# create an an empty blob instance in db with 'saving' status
|
||||
if self._get_blob_info(af, field_name, blob_key):
|
||||
msg = _("Blob %(blob)s already exists for artifact "
|
||||
"%(af)s") % {'blob': field_name, 'af': af.id}
|
||||
existing_blob = self._get_blob_info(af, field_name, blob_key)
|
||||
existing_blob_status = existing_blob.get("status")\
|
||||
if existing_blob else None
|
||||
if existing_blob_status == "saving":
|
||||
msg = _("Blob %(blob)s already exists for artifact and it"
|
||||
"is in %(status) %(af)s") % {
|
||||
'blob': field_name, 'af': af.id,
|
||||
'status': existing_blob_status}
|
||||
raise exception.Conflict(message=msg)
|
||||
utils.validate_change_allowed(af, field_name)
|
||||
blob_info['size'] = self._calculate_allowed_space(
|
||||
|
|
|
@ -116,13 +116,13 @@ default_store = database
|
|||
self.assertNotIn('id', art['blob'])
|
||||
|
||||
# reUpload file to artifact
|
||||
self.put(url=url + '/blob', data=data, status=409,
|
||||
self.put(url=url + '/blob', data=data, status=200,
|
||||
headers=headers)
|
||||
# upload blob dict
|
||||
self.put(url + '/dict_of_blobs/test_key', data=data, headers=headers)
|
||||
# test re-upload failed
|
||||
# test re-upload for dict of blob
|
||||
self.put(url + '/dict_of_blobs/test_key', data=data, headers=headers,
|
||||
status=409)
|
||||
status=200)
|
||||
|
||||
# upload few other blobs to the dict
|
||||
for elem in ('aaa', 'bbb', 'ccc', 'ddd'):
|
||||
|
|
|
@ -745,13 +745,13 @@ class TestBlobs(base.TestArtifact):
|
|||
self.assertEqual(exp_blob_url, art['blob']['url'])
|
||||
|
||||
# reUpload file to artifact
|
||||
self.put(url=url + '/blob', data=data, status=409,
|
||||
self.put(url=url + '/blob', data=data, status=200,
|
||||
headers=headers)
|
||||
# upload blob dict
|
||||
self.put(url + '/dict_of_blobs/test_key', data=data, headers=headers)
|
||||
# test re-upload failed
|
||||
# test re-upload for dict of blob.
|
||||
self.put(url + '/dict_of_blobs/test_key', data=data, headers=headers,
|
||||
status=409)
|
||||
status=200)
|
||||
|
||||
# upload few other blobs to the dict
|
||||
for elem in ('aaa', 'bbb', 'ccc', 'ddd'):
|
||||
|
|
|
@ -57,11 +57,14 @@ class TestArtifactUpload(base.BaseTestArtifactAPI):
|
|||
self.assertEqual(3, artifact['blob']['size'])
|
||||
self.assertEqual('active', artifact['blob']['status'])
|
||||
|
||||
# Re-uploading blob leads to Conflict error
|
||||
self.assertRaises(
|
||||
exc.Conflict, self.controller.upload_blob,
|
||||
# Re-uploading blob
|
||||
self.controller.upload_blob(
|
||||
self.req, 'sample_artifact', self.sample_artifact['id'], 'blob',
|
||||
BytesIO(b'aaa'), 'application/octet-stream')
|
||||
BytesIO(b'aaabb'), 'application/octet-stream')
|
||||
artifact = self.controller.show(self.req, 'sample_artifact',
|
||||
self.sample_artifact['id'])
|
||||
self.assertEqual(5, artifact['blob']['size'])
|
||||
self.assertEqual('active', artifact['blob']['status'])
|
||||
|
||||
def test_upload_saving_blob(self):
|
||||
self.controller.upload_blob(
|
||||
|
@ -232,11 +235,15 @@ class TestArtifactUpload(base.BaseTestArtifactAPI):
|
|||
self.assertEqual(3, artifact['dict_of_blobs']['blb']['size'])
|
||||
self.assertEqual('active', artifact['dict_of_blobs']['blb']['status'])
|
||||
|
||||
# If blob key already exists Glare return Conflict error
|
||||
self.assertRaises(
|
||||
exc.Conflict, self.controller.upload_blob,
|
||||
# Validate re-uploaded of blob content.
|
||||
self.controller.upload_blob(
|
||||
self.req, 'sample_artifact', self.sample_artifact['id'],
|
||||
'dict_of_blobs/blb', BytesIO(b'aaa'), 'application/octet-stream')
|
||||
'dict_of_blobs/blb', BytesIO(b'aaabb'),
|
||||
'application/octet-stream')
|
||||
|
||||
artifact = self.controller.show(self.req, 'sample_artifact',
|
||||
self.sample_artifact['id'])
|
||||
self.assertEqual(5, artifact['dict_of_blobs']['blb']['size'])
|
||||
|
||||
def test_blob_dict_storage_error(self):
|
||||
self.config(default_store='filesystem',
|
||||
|
|
Loading…
Reference in New Issue