store: expose blob API for allowing additional layer store to export lazy layers #322
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is eStargz implementation of containers/storage#902.
Currently, layers acquired from the stargz store cannot be exported (e.g.
podman save
andpodman push
fail) as mentioned in containers/storage#795 (comment). For solving this issue, a new APIblob
is proposed to the additional layer store (containers/storage#902). This file exposes the raw contents of that layer.This commit implements this API. For more details about blob API, please refer to containers/storage#902.
This also adds the following annotation to the image created from
nativeconverter
.io.containers.estargz.uncompressed-size
: contains the uncompressed size of the layer.For exporting a layer, the additional layer store (stargz store) needs to expose that layer's uncompressed size through
info
file. However, the current OCI image doesn't contain this information by default. So we need this special annotation.demo
(stargz-store is required)
Lazily pulled image can run:
Lazily pulled image can save and push:
Note that re-pushed image isn't eStargz anymore because podman re-compresses the blob in the non-eStargz way.
TOC digest annotations are also eliminated.