summaryrefslogtreecommitdiff
path: root/pkg/specgen/generate/container.go
diff options
context:
space:
mode:
authoropenshift-ci[bot] <75433959+openshift-ci[bot]@users.noreply.github.com>2022-07-05 10:10:41 +0000
committerGitHub <noreply@github.com>2022-07-05 10:10:41 +0000
commitffc8d654924b50dcf80dd6a1a1b63cd2e9d3e55e (patch)
tree8d41b9a3a775c99e6ac0a1cbdba53e5198878ab1 /pkg/specgen/generate/container.go
parent773eead54e2e0877e92d5871625a6cc32c582d30 (diff)
parentefe1176dd90ea38742c53c8588fbc83e6b9aefd6 (diff)
downloadpodman-ffc8d654924b50dcf80dd6a1a1b63cd2e9d3e55e.tar.gz
podman-ffc8d654924b50dcf80dd6a1a1b63cd2e9d3e55e.tar.bz2
podman-ffc8d654924b50dcf80dd6a1a1b63cd2e9d3e55e.zip
Merge pull request #14827 from flouthoc/specgen-run-support-manifest
specgen,run: support running container from valid manifest list using `--platform`
Diffstat (limited to 'pkg/specgen/generate/container.go')
-rw-r--r--pkg/specgen/generate/container.go11
1 files changed, 10 insertions, 1 deletions
diff --git a/pkg/specgen/generate/container.go b/pkg/specgen/generate/container.go
index 30c759495..8fdd87adf 100644
--- a/pkg/specgen/generate/container.go
+++ b/pkg/specgen/generate/container.go
@@ -38,10 +38,19 @@ func getImageFromSpec(ctx context.Context, r *libpod.Runtime, s *specgen.SpecGen
}
// Need to look up image.
- image, resolvedName, err := r.LibimageRuntime().LookupImage(s.Image, nil)
+ lookupOptions := &libimage.LookupImageOptions{ManifestList: true}
+ image, resolvedName, err := r.LibimageRuntime().LookupImage(s.Image, lookupOptions)
if err != nil {
return nil, "", nil, err
}
+ manifestList, err := image.ToManifestList()
+ // only process if manifest list found otherwise expect it to be regular image
+ if err == nil {
+ image, err = manifestList.LookupInstance(ctx, s.ImageArch, s.ImageOS, s.ImageVariant)
+ if err != nil {
+ return nil, "", nil, err
+ }
+ }
s.SetImage(image, resolvedName)
inspectData, err := image.Inspect(ctx, nil)
if err != nil {