@@ -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