Skip to content

Commit 90f7362

Browse files
committed
Drop support for image manifest schema 1
1 parent 08d9c6d commit 90f7362

File tree

5 files changed

+30
-183
lines changed

5 files changed

+30
-183
lines changed

pkg/image/apis/image/docker10/types.go

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,6 @@ type DockerImageManifest struct {
2828
SchemaVersion int `json:"schemaVersion"`
2929
MediaType string `json:"mediaType,omitempty"`
3030

31-
// schema1
32-
Name string `json:"name"`
33-
Tag string `json:"tag"`
34-
Architecture string `json:"architecture"`
35-
FSLayers []DockerFSLayer `json:"fsLayers"`
36-
History []DockerHistory `json:"history"`
37-
3831
// schema2
3932
Layers []Descriptor `json:"layers"`
4033
Config Descriptor `json:"config"`

pkg/image/apiserver/importer/image.go

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import (
66

77
"github.com/distribution/distribution/v3"
88
"github.com/distribution/distribution/v3/manifest/manifestlist"
9-
"github.com/distribution/distribution/v3/manifest/schema1"
109
"github.com/distribution/distribution/v3/registry/api/errcode"
1110
godigest "github.com/opencontainers/go-digest"
1211

@@ -18,41 +17,6 @@ import (
1817
imagedockerpre012 "github.com/openshift/openshift-apiserver/pkg/image/apis/image/dockerpre012"
1918
)
2019

21-
func schema1ToImage(manifest *schema1.SignedManifest, d godigest.Digest) (*imageapi.Image, error) {
22-
if len(manifest.History) == 0 {
23-
return nil, fmt.Errorf("image has no v1Compatibility history and cannot be used")
24-
}
25-
dockerImage, err := unmarshalDockerImage([]byte(manifest.History[0].V1Compatibility))
26-
if err != nil {
27-
return nil, err
28-
}
29-
mediatype, payload, err := manifest.Payload()
30-
if err != nil {
31-
return nil, err
32-
}
33-
34-
if len(manifest.Canonical) == 0 {
35-
return nil, fmt.Errorf("unable to load canonical representation from schema1 manifest")
36-
}
37-
payloadDigest := godigest.FromBytes(manifest.Canonical)
38-
if len(d) > 0 && payloadDigest != d {
39-
return nil, fmt.Errorf("content integrity error: the schema 1 manifest retrieved with digest %s does not match the digest calculated from the content %s", d, payloadDigest)
40-
}
41-
dockerImage.ID = payloadDigest.String()
42-
43-
image := &imageapi.Image{
44-
ObjectMeta: metav1.ObjectMeta{
45-
Name: dockerImage.ID,
46-
},
47-
DockerImageMetadata: *dockerImage,
48-
DockerImageManifest: string(payload),
49-
DockerImageManifestMediaType: mediatype,
50-
DockerImageMetadataVersion: "1.0",
51-
}
52-
53-
return image, nil
54-
}
55-
5620
// schema2OrOCIToImage converts a docker schema 2 or an oci schema manifest into an Image.
5721
func schema2OrOCIToImage(manifest distribution.Manifest, imageConfig []byte, d godigest.Digest) (*imageapi.Image, error) {
5822
mediatype, payload, err := manifest.Payload()

pkg/image/apiserver/importer/importer.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import (
1212
"github.com/distribution/distribution/v3"
1313
"github.com/distribution/distribution/v3/manifest/manifestlist"
1414
"github.com/distribution/distribution/v3/manifest/ocischema"
15-
"github.com/distribution/distribution/v3/manifest/schema1"
1615
"github.com/distribution/distribution/v3/manifest/schema2"
1716
"github.com/distribution/distribution/v3/reference"
1817
"github.com/distribution/distribution/v3/registry/api/errcode"
@@ -743,8 +742,6 @@ func (imp *ImageStreamImporter) importManifest(
743742
if isManifestList && !legacyManifestListImport {
744743
image, err = manifestListToImage(manifestList, d)
745744
return
746-
} else if signedManifest, isSchema1 := manifest.(*schema1.SignedManifest); isSchema1 {
747-
image, err = schema1ToImage(signedManifest, d)
748745
} else if deserializedManifest, isSchema2 := manifest.(*schema2.DeserializedManifest); isSchema2 {
749746
imageConfig, getImportConfigErr := b.Get(ctx, deserializedManifest.Config.Digest)
750747
if getImportConfigErr != nil {

pkg/image/apiserver/importer/importer_test.go

Lines changed: 30 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package importer
22

33
import (
44
"context"
5-
"encoding/json"
65
"fmt"
76
"net/http"
87
"net/url"
@@ -11,7 +10,6 @@ import (
1110

1211
"github.com/containers/image/v5/pkg/sysregistriesv2"
1312
"github.com/distribution/distribution/v3"
14-
"github.com/distribution/distribution/v3/manifest/schema1"
1513
"github.com/distribution/distribution/v3/manifest/schema2"
1614
"github.com/distribution/distribution/v3/reference"
1715
godigest "github.com/opencontainers/go-digest"
@@ -169,20 +167,6 @@ func (r *mockTagService) Lookup(ctx context.Context, digest distribution.Descrip
169167
return nil, fmt.Errorf("not implemented")
170168
}
171169

172-
func TestSchema1ToImage(t *testing.T) {
173-
m := &schema1.SignedManifest{}
174-
if err := json.Unmarshal([]byte(etcdManifest), m); err != nil {
175-
t.Fatal(err)
176-
}
177-
image, err := schema1ToImage(m, godigest.Digest("sha256:958608f8ecc1dc62c93b6c610f3a834dae4220c9642e6e8b4e0f2b3ad7cbd238"))
178-
if err != nil {
179-
t.Fatal(err)
180-
}
181-
if image.DockerImageMetadata.ID != "sha256:958608f8ecc1dc62c93b6c610f3a834dae4220c9642e6e8b4e0f2b3ad7cbd238" {
182-
t.Errorf("unexpected image: %#v", image.DockerImageMetadata.ID)
183-
}
184-
}
185-
186170
func TestImportNothing(t *testing.T) {
187171
ctx := NewStaticCredentialsContext(
188172
http.DefaultTransport, http.DefaultTransport, nil,
@@ -202,11 +186,6 @@ func expectStatusError(status metav1.Status, message string) bool {
202186
}
203187

204188
func TestImport(t *testing.T) {
205-
etcdManifestSchema1 := &schema1.SignedManifest{}
206-
if err := json.Unmarshal([]byte(etcdManifest), etcdManifestSchema1); err != nil {
207-
t.Fatal(err)
208-
}
209-
t.Logf("etcd manifest schema 1 digest: %q", godigest.FromBytes([]byte(etcdManifest)))
210189
busyboxManifestSchema2 := &schema2.DeserializedManifest{}
211190
if err := busyboxManifestSchema2.UnmarshalJSON([]byte(busyboxManifest)); err != nil {
212191
t.Fatal(err)
@@ -312,12 +291,21 @@ func TestImport(t *testing.T) {
312291
},
313292
},
314293
{
315-
name: "successfull import by tag and digest",
316-
retriever: &mockRetriever{repo: &mockRepository{manifest: etcdManifestSchema1}},
294+
name: "successful import by tag and digest",
295+
retriever: &mockRetriever{
296+
repo: &mockRepository{
297+
blobs: &mockBlobStore{
298+
blobs: map[godigest.Digest][]byte{
299+
busyboxConfigDigest: []byte(busyboxManifestConfig),
300+
},
301+
},
302+
manifest: busyboxManifestSchema2,
303+
},
304+
},
317305
isi: imageapi.ImageStreamImport{
318306
Spec: imageapi.ImageStreamImportSpec{
319307
Images: []imageapi.ImageImportSpec{
320-
{From: kapi.ObjectReference{Kind: "DockerImage", Name: "test@sha256:958608f8ecc1dc62c93b6c610f3a834dae4220c9642e6e8b4e0f2b3ad7cbd238"}},
308+
{From: kapi.ObjectReference{Kind: "DockerImage", Name: "test@" + busyboxDigest}},
321309
{From: kapi.ObjectReference{Kind: "DockerImage", Name: "test:tag"}},
322310
},
323311
},
@@ -331,13 +319,17 @@ func TestImport(t *testing.T) {
331319
if image.Status.Status != metav1.StatusSuccess {
332320
t.Errorf("unexpected status %d: %#v", i, image.Status)
333321
}
334-
// the image name is always the sha256, and size is calculated
335-
if image.Image == nil || image.Image.Name != "sha256:958608f8ecc1dc62c93b6c610f3a834dae4220c9642e6e8b4e0f2b3ad7cbd238" || image.Image.DockerImageMetadata.Size != 28643712 {
336-
t.Errorf("unexpected image %d: %#v", i, image.Image.Name)
337-
}
338-
// the most specific reference is returned
339-
if image.Image.DockerImageReference != "test@sha256:958608f8ecc1dc62c93b6c610f3a834dae4220c9642e6e8b4e0f2b3ad7cbd238" {
340-
t.Errorf("unexpected ref %d: %#v", i, image.Image.DockerImageReference)
322+
if image.Image == nil {
323+
t.Errorf("unexpected nil image: %#v", image)
324+
} else {
325+
// the image name is always the sha256, and size is calculated
326+
if image.Image.Name != busyboxDigest || image.Image.DockerImageMetadata.Size != 669049 {
327+
t.Errorf("unexpected image %d: %#v (size %d)", i, image.Image.Name, image.Image.DockerImageMetadata.Size)
328+
}
329+
// the most specific reference is returned
330+
if image.Image.DockerImageReference != "test@"+busyboxDigest {
331+
t.Errorf("unexpected ref %d: %#v", i, image.Image.DockerImageReference)
332+
}
341333
}
342334
if image.Tag != expectedTags[i] {
343335
t.Errorf("unexpected tag of status %d (%s != %s)", i, image.Tag, expectedTags[i])
@@ -392,14 +384,14 @@ func TestImport(t *testing.T) {
392384
name: "import repository with additional tags",
393385
retriever: &mockRetriever{
394386
repo: &mockRepository{
395-
manifest: etcdManifestSchema1,
387+
manifest: busyboxManifestSchema2,
396388
tags: map[string]string{
397-
"v1": "sha256:958608f8ecc1dc62c93b6c610f3a834dae4220c9642e6e8b4e0f2b3ad7cbd238",
398-
"other": "sha256:958608f8ecc1dc62c93b6c610f3a834dae4220c9642e6e8b4e0f2b3ad7cbd238",
399-
"v2": "sha256:958608f8ecc1dc62c93b6c610f3a834dae4220c9642e6e8b4e0f2b3ad7cbd238",
400-
"3": "sha256:958608f8ecc1dc62c93b6c610f3a834dae4220c9642e6e8b4e0f2b3ad7cbd238",
401-
"3.1": "sha256:958608f8ecc1dc62c93b6c610f3a834dae4220c9642e6e8b4e0f2b3ad7cbd238",
402-
"abc": "sha256:958608f8ecc1dc62c93b6c610f3a834dae4220c9642e6e8b4e0f2b3ad7cbd238",
389+
"v1": busyboxDigest,
390+
"other": busyboxDigest,
391+
"v2": busyboxDigest,
392+
"3": busyboxDigest,
393+
"3.1": busyboxDigest,
394+
"abc": busyboxDigest,
403395
},
404396
getTagErr: fmt.Errorf("no such tag"),
405397
getByTagErr: fmt.Errorf("no such manifest tag"),
@@ -640,56 +632,6 @@ func TestImportFromMirror(t *testing.T) {
640632
})
641633
}
642634

643-
const etcdManifest = `
644-
{
645-
"schemaVersion": 1,
646-
"tag": "latest",
647-
"name": "coreos/etcd",
648-
"architecture": "amd64",
649-
"fsLayers": [
650-
{
651-
"blobSum": "sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4"
652-
},
653-
{
654-
"blobSum": "sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4"
655-
},
656-
{
657-
"blobSum": "sha256:2560187847cadddef806eaf244b7755af247a9dbabb90ca953dd2703cf423766"
658-
},
659-
{
660-
"blobSum": "sha256:744b46d0ac8636c45870a03830d8d82c20b75fbfb9bc937d5e61005d23ad4cfe"
661-
}
662-
],
663-
"history": [
664-
{
665-
"v1Compatibility": "{\"id\":\"fe50ac14986497fa6b5d2cc24feb4a561d01767bc64413752c0988cb70b0b8b9\",\"parent\":\"a5a18474fa96a3c6e240bc88e41de2afd236520caf904356ad9d5f8d875c3481\",\"created\":\"2015-12-30T22:29:13.967754365Z\",\"container\":\"c8d0f1a274b5f52fa5beb280775ef07cf18ec0f95e5ae42fbad01157e2614d42\",\"container_config\":{\"Hostname\":\"1b97abade59e\",\"Domainname\":\"\",\"User\":\"\",\"AttachStdin\":false,\"AttachStdout\":false,\"AttachStderr\":false,\"ExposedPorts\":{\"2379/tcp\":{},\"2380/tcp\":{},\"4001/tcp\":{},\"7001/tcp\":{}},\"Tty\":false,\"OpenStdin\":false,\"StdinOnce\":false,\"Env\":null,\"Cmd\":[\"/bin/sh\",\"-c\",\"#(nop) ENTRYPOINT \\u0026{[\\\"/etcd\\\"]}\"],\"Image\":\"a5a18474fa96a3c6e240bc88e41de2afd236520caf904356ad9d5f8d875c3481\",\"Volumes\":null,\"WorkingDir\":\"\",\"Entrypoint\":[\"/etcd\"],\"OnBuild\":null,\"Labels\":{}},\"docker_version\":\"1.9.1\",\"config\":{\"Hostname\":\"1b97abade59e\",\"Domainname\":\"\",\"User\":\"\",\"AttachStdin\":false,\"AttachStdout\":false,\"AttachStderr\":false,\"ExposedPorts\":{\"2379/tcp\":{},\"2380/tcp\":{},\"4001/tcp\":{},\"7001/tcp\":{}},\"Tty\":false,\"OpenStdin\":false,\"StdinOnce\":false,\"Env\":null,\"Cmd\":null,\"Image\":\"a5a18474fa96a3c6e240bc88e41de2afd236520caf904356ad9d5f8d875c3481\",\"Volumes\":null,\"WorkingDir\":\"\",\"Entrypoint\":[\"/etcd\"],\"OnBuild\":null,\"Labels\":{}},\"architecture\":\"amd64\",\"os\":\"linux\"}"
666-
},
667-
{
668-
"v1Compatibility": "{\"id\":\"a5a18474fa96a3c6e240bc88e41de2afd236520caf904356ad9d5f8d875c3481\",\"parent\":\"796d581500e960cc02095dcdeccf55db215b8e54c57e3a0b11392145ffe60cf6\",\"created\":\"2015-12-30T22:29:13.504159783Z\",\"container\":\"080708d544f85052a46fab72e701b4358c1b96cb4b805a5b2d66276fc2aaf85d\",\"container_config\":{\"Hostname\":\"1b97abade59e\",\"Domainname\":\"\",\"User\":\"\",\"AttachStdin\":false,\"AttachStdout\":false,\"AttachStderr\":false,\"ExposedPorts\":{\"2379/tcp\":{},\"2380/tcp\":{},\"4001/tcp\":{},\"7001/tcp\":{}},\"Tty\":false,\"OpenStdin\":false,\"StdinOnce\":false,\"Env\":null,\"Cmd\":[\"/bin/sh\",\"-c\",\"#(nop) EXPOSE 2379/tcp 2380/tcp 4001/tcp 7001/tcp\"],\"Image\":\"796d581500e960cc02095dcdeccf55db215b8e54c57e3a0b11392145ffe60cf6\",\"Volumes\":null,\"WorkingDir\":\"\",\"Entrypoint\":null,\"OnBuild\":null,\"Labels\":{}},\"docker_version\":\"1.9.1\",\"config\":{\"Hostname\":\"1b97abade59e\",\"Domainname\":\"\",\"User\":\"\",\"AttachStdin\":false,\"AttachStdout\":false,\"AttachStderr\":false,\"ExposedPorts\":{\"2379/tcp\":{},\"2380/tcp\":{},\"4001/tcp\":{},\"7001/tcp\":{}},\"Tty\":false,\"OpenStdin\":false,\"StdinOnce\":false,\"Env\":null,\"Cmd\":null,\"Image\":\"796d581500e960cc02095dcdeccf55db215b8e54c57e3a0b11392145ffe60cf6\",\"Volumes\":null,\"WorkingDir\":\"\",\"Entrypoint\":null,\"OnBuild\":null,\"Labels\":{}},\"architecture\":\"amd64\",\"os\":\"linux\"}"
669-
},
670-
{
671-
"v1Compatibility": "{\"id\":\"796d581500e960cc02095dcdeccf55db215b8e54c57e3a0b11392145ffe60cf6\",\"parent\":\"309c960c7f875411ae2ee2bfb97b86eee5058f3dad77206dd0df4f97df8a77fa\",\"created\":\"2015-12-30T22:29:12.912813629Z\",\"container\":\"f28be899c9b8680d4cf8585e663ad20b35019db062526844e7cfef117ce9037f\",\"container_config\":{\"Hostname\":\"1b97abade59e\",\"Domainname\":\"\",\"User\":\"\",\"AttachStdin\":false,\"AttachStdout\":false,\"AttachStderr\":false,\"Tty\":false,\"OpenStdin\":false,\"StdinOnce\":false,\"Env\":null,\"Cmd\":[\"/bin/sh\",\"-c\",\"#(nop) ADD file:e330b1da49d993059975e46560b3bd360691498b0f2f6e00f39fc160cf8d4ec3 in /\"],\"Image\":\"309c960c7f875411ae2ee2bfb97b86eee5058f3dad77206dd0df4f97df8a77fa\",\"Volumes\":null,\"WorkingDir\":\"\",\"Entrypoint\":null,\"OnBuild\":null,\"Labels\":{}},\"docker_version\":\"1.9.1\",\"config\":{\"Hostname\":\"1b97abade59e\",\"Domainname\":\"\",\"User\":\"\",\"AttachStdin\":false,\"AttachStdout\":false,\"AttachStderr\":false,\"Tty\":false,\"OpenStdin\":false,\"StdinOnce\":false,\"Env\":null,\"Cmd\":null,\"Image\":\"309c960c7f875411ae2ee2bfb97b86eee5058f3dad77206dd0df4f97df8a77fa\",\"Volumes\":null,\"WorkingDir\":\"\",\"Entrypoint\":null,\"OnBuild\":null,\"Labels\":{}},\"architecture\":\"amd64\",\"os\":\"linux\",\"Size\":13502144}"
672-
},
673-
{
674-
"v1Compatibility": "{\"id\":\"309c960c7f875411ae2ee2bfb97b86eee5058f3dad77206dd0df4f97df8a77fa\",\"created\":\"2015-12-30T22:29:12.346834862Z\",\"container\":\"1b97abade59e4b5b935aede236980a54fb500cd9ee5bd4323c832c6d7b3ffc6e\",\"container_config\":{\"Hostname\":\"1b97abade59e\",\"Domainname\":\"\",\"User\":\"\",\"AttachStdin\":false,\"AttachStdout\":false,\"AttachStderr\":false,\"Tty\":false,\"OpenStdin\":false,\"StdinOnce\":false,\"Env\":null,\"Cmd\":[\"/bin/sh\",\"-c\",\"#(nop) ADD file:74912593c6783292c4520514f5cc9313acbd1da0f46edee0fdbed2a24a264d6f in /\"],\"Image\":\"\",\"Volumes\":null,\"WorkingDir\":\"\",\"Entrypoint\":null,\"OnBuild\":null,\"Labels\":null},\"docker_version\":\"1.9.1\",\"config\":{\"Hostname\":\"1b97abade59e\",\"Domainname\":\"\",\"User\":\"\",\"AttachStdin\":false,\"AttachStdout\":false,\"AttachStderr\":false,\"Tty\":false,\"OpenStdin\":false,\"StdinOnce\":false,\"Env\":null,\"Cmd\":null,\"Image\":\"\",\"Volumes\":null,\"WorkingDir\":\"\",\"Entrypoint\":null,\"OnBuild\":null,\"Labels\":null},\"architecture\":\"amd64\",\"os\":\"linux\",\"Size\":15141568}"
675-
}
676-
],
677-
"signatures": [
678-
{
679-
"header": {
680-
"alg": "RS256",
681-
"jwk": {
682-
"e": "AQAB",
683-
"kty": "RSA",
684-
"n": "yB40ou1GMvIxYs1jhxWaeoDiw3oa0_Q2UJThUPtArvO0tRzaun9FnSphhOEHIGcezfq95jy-3MN-FIjmsWgbPHY8lVDS38fF75aCw6qkholwqjmMtUIgPNYoMrg0rLUE5RRyJ84-hKf9Fk7V3fItp1mvCTGKaS3ze-y5dTTrfbNGE7qG638Dla2Fuz-9CNgRQj0JH54o547WkKJC-pG-j0jTDr8lzsXhrZC7lJas4yc-vpt3D60iG4cW_mkdtIj52ZFEgHZ56sUj7AhnNVly0ZP9W1hmw4xEHDn9WLjlt7ivwARVeb2qzsNdguUitcI5hUQNwpOVZ_O3f1rUIL_kRw"
685-
}
686-
},
687-
"protected": "eyJmb3JtYXRUYWlsIjogIkNuMCIsICJmb3JtYXRMZW5ndGgiOiA1OTI2LCAidGltZSI6ICIyMDE2LTAxLTAyVDAyOjAxOjMzWiJ9",
688-
"signature": "DrQ43UWeit-thDoRGTCP0Gd2wL5K2ecyPhHo_au0FoXwuKODja0tfwHexB9ypvFWngk-ijXuwO02x3aRIZqkWpvKLxxzxwkrZnPSje4o_VrFU4z5zwmN8sJw52ODkQlW38PURIVksOxCrb0zRl87yTAAsUAJ_4UUPNltZSLnhwy-qPb2NQ8ghgsONcBxRQrhPFiWNkxDKZ3kjvzYyrXDxTcvwK3Kk_YagZ4rCOhH1B7mAdVSiSHIvvNV5grPshw_ipAoqL2iNMsxWxLjYZl9xSJQI2asaq3fvh8G8cZ7T-OahDUos_GyhnIj39C-9ouqdJqMUYFETqbzRCR6d36CpQ"
689-
}
690-
]
691-
}`
692-
693635
const busyboxDigest = "sha256:a59906e33509d14c036c8678d687bd4eec81ed7c4b8ce907b888c607f6a1e0e6"
694636

695637
const busyboxManifest = `{

pkg/image/apiserver/internal/imageutil/helpers.go

Lines changed: 0 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import (
77

88
"github.com/distribution/distribution/v3/manifest/manifestlist"
99
"github.com/distribution/distribution/v3/manifest/ocischema"
10-
"github.com/distribution/distribution/v3/manifest/schema1"
1110
"github.com/distribution/distribution/v3/manifest/schema2"
1211
godigest "github.com/opencontainers/go-digest"
1312
imgspecv1 "github.com/opencontainers/image-spec/specs-go/v1"
@@ -58,22 +57,6 @@ func InternalImageWithMetadata(image *imageapi.Image) error {
5857
}
5958

6059
switch manifest.SchemaVersion {
61-
case 1:
62-
image.DockerImageManifestMediaType = schema1.MediaTypeManifest
63-
64-
if len(manifest.History) == 0 {
65-
// It should never have an empty history, but just in case.
66-
return fmt.Errorf("the image %s (%s) has a schema 1 manifest, but it doesn't have history", image.Name, image.DockerImageReference)
67-
}
68-
69-
v1Metadata := dockerapi10.DockerV1CompatibilityImage{}
70-
if err := json.Unmarshal([]byte(manifest.History[0].DockerV1Compatibility), &v1Metadata); err != nil {
71-
return err
72-
}
73-
74-
if err := dockerapi10.Convert_DockerV1CompatibilityImage_to_image_DockerImage(&v1Metadata, &image.DockerImageMetadata); err != nil {
75-
return err
76-
}
7760
case 2:
7861
if manifest.MediaType != "" {
7962
image.DockerImageManifestMediaType = manifest.MediaType
@@ -127,30 +110,6 @@ func fillImageLayers(image *imageapi.Image, manifest dockerapi10.DockerImageMani
127110
}
128111

129112
switch manifest.SchemaVersion {
130-
case 1:
131-
if len(manifest.History) != len(manifest.FSLayers) {
132-
return fmt.Errorf("the image %s (%s) has mismatched history and fslayer cardinality (%d != %d)", image.Name, image.DockerImageReference, len(manifest.History), len(manifest.FSLayers))
133-
}
134-
135-
image.DockerImageLayers = make([]imageapi.ImageLayer, len(manifest.FSLayers))
136-
for i, obj := range manifest.History {
137-
layer := manifest.FSLayers[i]
138-
139-
var size dockerapi10.DockerV1CompatibilityImageSize
140-
if err := json.Unmarshal([]byte(obj.DockerV1Compatibility), &size); err != nil {
141-
size.Size = 0
142-
}
143-
144-
// reverse order of the layers: in schema1 manifests the
145-
// first layer is the youngest (base layers are at the
146-
// end), but we want to store layers in the Image resource
147-
// in order from the oldest to the youngest.
148-
revidx := (len(manifest.History) - 1) - i // n-1, n-2, ..., 1, 0
149-
150-
image.DockerImageLayers[revidx].Name = layer.DockerBlobSum
151-
image.DockerImageLayers[revidx].LayerSize = size.Size
152-
image.DockerImageLayers[revidx].MediaType = schema1.MediaTypeManifestLayer
153-
}
154113
case 2:
155114
// The layer list is ordered starting from the base image (opposite order of schema1).
156115
// So, we do not need to change the order of layers.
@@ -182,8 +141,6 @@ func reorderImageLayers(image *imageapi.Image) {
182141
layersOrder, ok := image.Annotations[imagev1.DockerImageLayersOrderAnnotation]
183142
if !ok {
184143
switch image.DockerImageManifestMediaType {
185-
case schema1.MediaTypeManifest, schema1.MediaTypeSignedManifest:
186-
layersOrder = imagev1.DockerImageLayersOrderAscending
187144
case schema2.MediaTypeManifest, imgspecv1.MediaTypeImageManifest:
188145
layersOrder = imagev1.DockerImageLayersOrderDescending
189146
default:
@@ -232,12 +189,6 @@ func ManifestMatchesImage(image *imageapi.Image, newManifest []byte) (bool, erro
232189
if err != nil {
233190
return false, err
234191
}
235-
case schema1.MediaTypeManifest, "":
236-
var m schema1.SignedManifest
237-
if err := json.Unmarshal(newManifest, &m); err != nil {
238-
return false, err
239-
}
240-
canonical = m.Canonical
241192
default:
242193
return false, fmt.Errorf("unsupported manifest mediatype: %s", image.DockerImageManifestMediaType)
243194
}

0 commit comments

Comments
 (0)