Skip to content

Commit 157f754

Browse files
author
Oleg Bulatov
committed
Import manifest lists with linux/amd64 platform
1 parent 4ca1b92 commit 157f754

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

pkg/image/importer/importer.go

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

1111
"github.com/docker/distribution"
1212
"github.com/docker/distribution/digest"
13+
"github.com/docker/distribution/manifest/manifestlist"
1314
"github.com/docker/distribution/manifest/schema1"
1415
"github.com/docker/distribution/manifest/schema2"
1516
"github.com/docker/distribution/reference"
@@ -537,6 +538,25 @@ func (isi *ImageStreamImporter) importRepositoryFromDocker(ctx gocontext.Context
537538
manifest = m
538539
}
539540

541+
if manifestList, isManifestList := manifest.(*manifestlist.DeserializedManifestList); isManifestList {
542+
found := false
543+
for _, m := range manifestList.Manifests {
544+
if m.Platform.OS == "linux" && m.Platform.Architecture == "amd64" {
545+
manifest, err = s.Get(ctx, m.Digest)
546+
if err != nil {
547+
glog.V(5).Infof("unable to access digest %q for tag %q for repository %#v: %#v", m.Digest, importTag.Name, repository, err)
548+
importTag.Err = formatRepositoryError(repository, importTag.Name, "", err)
549+
continue
550+
}
551+
found = true
552+
}
553+
}
554+
if !found {
555+
glog.V(5).Infof("unsupported manifest list: %#v", manifestList)
556+
continue
557+
}
558+
}
559+
540560
if signedManifest, isSchema1 := manifest.(*schema1.SignedManifest); isSchema1 {
541561
importTag.Image, err = schema1ToImage(signedManifest, "")
542562
} else if deserializedManifest, isSchema2 := manifest.(*schema2.DeserializedManifest); isSchema2 {

0 commit comments

Comments
 (0)