feat: ensure images layers correspond with the image media type (#2719)

Ensure zstd compression only gets applied to oci images.
When adding a layer to an image ensure that they are compatable if not convert them.
Create function to convert mediatypes between oci and docker types.
This commit is contained in:
Logan Price
2023-09-13 10:49:56 -07:00
committed by GitHub
parent 572904c1c4
commit 14b2ea5528
3 changed files with 262 additions and 32 deletions
+18 -1
View File
@@ -145,6 +145,7 @@ func (f *fakeLayerCache) RetrieveLayer(key string) (v1.Image, error) {
type fakeLayer struct {
TarContent []byte
mediaType types.MediaType
}
func (f fakeLayer) Digest() (v1.Hash, error) {
@@ -163,7 +164,7 @@ func (f fakeLayer) Size() (int64, error) {
return 0, nil
}
func (f fakeLayer) MediaType() (types.MediaType, error) {
return "", nil
return f.mediaType, nil
}
type fakeImage struct {
@@ -203,3 +204,19 @@ func (f fakeImage) LayerByDigest(v1.Hash) (v1.Layer, error) {
func (f fakeImage) LayerByDiffID(v1.Hash) (v1.Layer, error) {
return fakeLayer{}, nil
}
type ociFakeImage struct {
*fakeImage
}
func (f ociFakeImage) MediaType() (types.MediaType, error) {
return types.OCIManifestSchema1, nil
}
type dockerFakeImage struct {
*fakeImage
}
func (f dockerFakeImage) MediaType() (types.MediaType, error) {
return types.DockerManifestSchema2, nil
}