From 9980ddd51efe3ab72aad5d3c5220f04272991b72 Mon Sep 17 00:00:00 2001 From: apostasie Date: Tue, 24 Sep 2024 10:42:22 -0700 Subject: [PATCH] Ensure content is fetched on convert Signed-off-by: apostasie --- pkg/cmd/image/convert.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pkg/cmd/image/convert.go b/pkg/cmd/image/convert.go index d628c43158a..4c2c0a1f861 100644 --- a/pkg/cmd/image/convert.go +++ b/pkg/cmd/image/convert.go @@ -44,6 +44,7 @@ import ( "github.com/containerd/nerdctl/v2/pkg/api/types" "github.com/containerd/nerdctl/v2/pkg/clientutil" + "github.com/containerd/nerdctl/v2/pkg/imgutil" converterutil "github.com/containerd/nerdctl/v2/pkg/imgutil/converter" "github.com/containerd/nerdctl/v2/pkg/platformutil" "github.com/containerd/nerdctl/v2/pkg/referenceutil" @@ -75,6 +76,17 @@ func Convert(ctx context.Context, client *containerd.Client, srcRawRef, targetRa } convertOpts = append(convertOpts, converter.WithPlatform(platMC)) + imageService := client.ImageService() + img, err := imageService.Get(ctx, srcRawRef) + if err != nil { + return err + } + // Ensure all the layers are here: https://github.com/containerd/nerdctl/issues/3425 + err = imgutil.EnsureAllContent(ctx, client, srcRawRef, img.Target, "", options.GOptions) + if err != nil { + return err + } + estargz := options.Estargz zstd := options.Zstd zstdchunked := options.ZstdChunked