From 53fe31d6de69f5616b89dace15661c0970767fc0 Mon Sep 17 00:00:00 2001 From: Tonis Tiigi Date: Wed, 20 Jun 2018 13:43:27 -0700 Subject: [PATCH] images: provide better error for manifest list match error Signed-off-by: Tonis Tiigi --- images/image.go | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/images/image.go b/images/image.go index 35eda26bd7a2..a96597c2690a 100644 --- a/images/image.go +++ b/images/image.go @@ -129,11 +129,14 @@ func (image *Image) Size(ctx context.Context, provider content.Provider, platfor // this direction because this abstraction is not needed.` func Manifest(ctx context.Context, provider content.Provider, image ocispec.Descriptor, platform string) (ocispec.Manifest, error) { var ( - matcher platforms.Matcher - m *ocispec.Manifest + matcher platforms.Matcher + m *ocispec.Manifest + p ocispec.Platform + wasIndex bool ) if platform != "" { - p, err := platforms.Parse(platform) + var err error + p, err = platforms.Parse(platform) if err != nil { return ocispec.Manifest{}, err } @@ -201,6 +204,8 @@ func Manifest(ctx context.Context, provider content.Provider, image ocispec.Desc } } + wasIndex = true + return descs, nil } @@ -210,7 +215,11 @@ func Manifest(ctx context.Context, provider content.Provider, image ocispec.Desc } if m == nil { - return ocispec.Manifest{}, errors.Wrapf(errdefs.ErrNotFound, "manifest %v", image.Digest) + err := errors.Wrapf(errdefs.ErrNotFound, "manifest %v", image.Digest) + if wasIndex { + err = errors.Wrapf(errdefs.ErrNotFound, "no match for current platform %s in manifest %v", platforms.Format(p), image.Digest) + } + return ocispec.Manifest{}, err } return *m, nil