From 0962e296b68ff664f430e07ef1824e8d067e154c Mon Sep 17 00:00:00 2001 From: Jon Johnson Date: Thu, 6 Apr 2023 16:28:15 -0700 Subject: [PATCH] Allow remote config layers to be lazy fetched (#1634) The partial.ConfigLayer implementation needs to fetch the config blob, but we don't always need to do that (e.g. if we just need the digest). --- pkg/v1/remote/image.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/pkg/v1/remote/image.go b/pkg/v1/remote/image.go index ec655d84e..82d02e94f 100644 --- a/pkg/v1/remote/image.go +++ b/pkg/v1/remote/image.go @@ -140,6 +140,21 @@ func (r *remoteImage) Descriptor() (*v1.Descriptor, error) { return r.descriptor, err } +func (r *remoteImage) ConfigLayer() (v1.Layer, error) { + if _, err := r.RawManifest(); err != nil { + return nil, err + } + m, err := partial.Manifest(r) + if err != nil { + return nil, err + } + + return partial.CompressedToLayer(&remoteImageLayer{ + ri: r, + digest: m.Config.Digest, + }) +} + // remoteImageLayer implements partial.CompressedLayer type remoteImageLayer struct { ri *remoteImage