From 65c29e9439106f0ffbd25bc6c1af8002f238032b Mon Sep 17 00:00:00 2001 From: Philip Laine Date: Mon, 13 May 2024 22:32:23 +0200 Subject: [PATCH] Move resolving ref to digest to manifest handler --- CHANGELOG.md | 2 ++ pkg/registry/registry.go | 20 ++++++++++---------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 97068112..3a718b32 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- [#475](https://github.com/XenitAB/spegel/pull/475) Move resolving ref to digest to manifest handler. + ### Deprecated ### Removed diff --git a/pkg/registry/registry.go b/pkg/registry/registry.go index 7b72ffcc..df789ccc 100644 --- a/pkg/registry/registry.go +++ b/pkg/registry/registry.go @@ -209,17 +209,9 @@ func (r *Registry) registryHandler(rw mux.ResponseWriter, req *http.Request) str } // Serve registry endpoints. - if dgst == "" { - dgst, err = r.ociClient.Resolve(req.Context(), ref) - if err != nil { - rw.WriteError(http.StatusNotFound, err) - return "" - } - } - switch refType { case referenceTypeManifest: - r.handleManifest(rw, req, dgst) + r.handleManifest(rw, req, ref, dgst) return "manifest" case referenceTypeBlob: r.handleBlob(rw, req, dgst) @@ -297,7 +289,15 @@ func (r *Registry) handleMirror(rw mux.ResponseWriter, req *http.Request, key st } } -func (r *Registry) handleManifest(rw mux.ResponseWriter, req *http.Request, dgst digest.Digest) { +func (r *Registry) handleManifest(rw mux.ResponseWriter, req *http.Request, ref string, dgst digest.Digest) { + if dgst == "" { + var err error + dgst, err = r.ociClient.Resolve(req.Context(), ref) + if err != nil { + rw.WriteError(http.StatusNotFound, err) + return + } + } b, mediaType, err := r.ociClient.GetManifest(req.Context(), dgst) if err != nil { rw.WriteError(http.StatusNotFound, err)