Convert V2 to use the blob uploader interface
This commit is contained in:
parent
0ae062be62
commit
7a68c41f1c
3 changed files with 170 additions and 308 deletions
|
@ -64,6 +64,20 @@ def retrieve_blob_upload_manager(repository_ref, blob_upload_id, storage, settin
|
|||
|
||||
return _BlobUploadManager(repository_ref, blob_upload, settings, storage)
|
||||
|
||||
@contextmanager
|
||||
def complete_when_uploaded(blob_upload):
|
||||
""" Wraps the given blob upload in a context manager that completes the upload when the context
|
||||
closes.
|
||||
"""
|
||||
try:
|
||||
yield blob_upload
|
||||
except Exception as ex:
|
||||
logger.exception('Exception when uploading blob `%s`', blob_upload.blob_upload_id)
|
||||
raise ex
|
||||
finally:
|
||||
# Cancel the upload if something went wrong or it was not commit to a blob.
|
||||
if blob_upload.committed_blob is None:
|
||||
blob_upload.cancel_upload()
|
||||
|
||||
@contextmanager
|
||||
def upload_blob(repository_ref, storage, settings, extra_blob_stream_handlers=None):
|
||||
|
@ -120,7 +134,7 @@ class _BlobUploadManager(object):
|
|||
|
||||
if start_offset > 0 and start_offset > self.blob_upload.byte_count:
|
||||
logger.error('start_offset provided greater than blob_upload.byte_count')
|
||||
return None
|
||||
raise BlobUploadException()
|
||||
|
||||
# Ensure that we won't go over the allowed maximum size for blobs.
|
||||
max_blob_size = bitmath.parse_string_unsafe(self.settings.maximum_blob_size)
|
||||
|
|
Reference in a new issue