def get_repository_blob_by_digest(repository, blob_digest): """ Find the content-addressable blob linked to the specified repository and returns it or None if none. """ # First try looking for a recently uploaded blob. If none found that is matching, # check the repository itself. storage = _lookup_blob_uploaded(repository, blob_digest) if storage is None: storage = _lookup_blob_in_repository(repository, blob_digest) return get_storage_by_uuid(storage.uuid) if storage is not None else None
def get_repository_blob_by_digest(repository, blob_digest): """ Find the content-addressable blob linked to the specified repository. """ assert blob_digest try: storage = (ImageStorage.select(ImageStorage.uuid).join(Image).where( Image.repository == repository, ImageStorage.content_checksum == blob_digest, ImageStorage.uploading == False).get()) return storage_model.get_storage_by_uuid(storage.uuid) except (ImageStorage.DoesNotExist, InvalidImageException): raise BlobDoesNotExist( 'Blob does not exist with digest: {0}'.format(blob_digest))
def get_repository_blob_by_digest(repository, blob_digest): """ Find the content-addressable blob linked to the specified repository and returns it or None if none. """ try: storage = (ImageStorage.select( ImageStorage.uuid).join(ManifestBlob).where( ManifestBlob.repository == repository, ImageStorage.content_checksum == blob_digest, ImageStorage.uploading == False).get()) return get_storage_by_uuid(storage.uuid) except (ImageStorage.DoesNotExist, InvalidImageException): # TODO: Remove once we are no longer using the legacy tables. # Try the legacy call. try: return legacy_get(repository, blob_digest) except BlobDoesNotExist: return None
def get_repo_blob_by_digest(namespace, repo_name, blob_digest): """ Find the content-addressable blob linked to the specified repository. """ assert blob_digest try: storage = (ImageStorage.select( ImageStorage.uuid).join(Image).join(Repository).join( Namespace, on=(Namespace.id == Repository.namespace_user)).where( Repository.name == repo_name, Namespace.username == namespace, ImageStorage.content_checksum == blob_digest, ImageStorage.uploading == False, ).get()) return storage_model.get_storage_by_uuid(storage.uuid) except (ImageStorage.DoesNotExist, InvalidImageException): raise BlobDoesNotExist( "Blob does not exist with digest: {0}".format(blob_digest))