From 1d80d3bb8784700055d655e2df957dc00665e048 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miloslav=20Trma=C4=8D?= Date: Wed, 6 Jul 2022 01:57:03 +0200 Subject: [PATCH] Split dockerImageDestination.uploadManifest from PutManifest MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We are going to need a way to upload to a tag without affecting dockerImageDestination.manifestDigest. Signed-off-by: Miloslav Trmač --- docker/docker_image_dest.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/docker/docker_image_dest.go b/docker/docker_image_dest.go index 39536221b7..8a63e2386c 100644 --- a/docker/docker_image_dest.go +++ b/docker/docker_image_dest.go @@ -439,7 +439,12 @@ func (d *dockerImageDestination) PutManifest(ctx context.Context, m []byte, inst } } - path := fmt.Sprintf(manifestPath, reference.Path(d.ref.ref), refTail) + return d.uploadManifest(ctx, m, refTail) +} + +// uploadManifest writes manifest to tagOrDigest. +func (d *dockerImageDestination) uploadManifest(ctx context.Context, m []byte, tagOrDigest string) error { + path := fmt.Sprintf(manifestPath, reference.Path(d.ref.ref), tagOrDigest) headers := map[string][]string{} mimeType := manifest.GuessMIMEType(m) @@ -453,7 +458,7 @@ func (d *dockerImageDestination) PutManifest(ctx context.Context, m []byte, inst defer res.Body.Close() if !successStatus(res.StatusCode) { rawErr := registryHTTPResponseToError(res) - err := perrors.Wrapf(rawErr, "uploading manifest %s to %s", refTail, d.ref.ref.Name()) + err := perrors.Wrapf(rawErr, "uploading manifest %s to %s", tagOrDigest, d.ref.ref.Name()) if isManifestInvalidError(rawErr) { err = types.ManifestTypeRejectedError{Err: err} }