@@ -93,6 +93,33 @@ func (registry *RemoteRegistry) GetImageReference(repo, reference string) (ref.R
9393}
9494
9595func (registry * RemoteRegistry ) headManifest (ctx context.Context , imageReference ref.Ref ,
96+ ) (manifest.Manifest , error ) {
97+ /// check what error it gives when not found
98+ man , err := registry .client .ManifestHead (ctx , imageReference )
99+ if err != nil {
100+ /* public registries may return 401 for image not found
101+ they will try to check private registries as a fallback => 401 */
102+ if errors .Is (err , errs .ErrHTTPUnauthorized ) {
103+ registry .log .Info ().Str ("errorType" , common .TypeOf (err )).
104+ Str ("repository" , imageReference .Repository ).Str ("reference" , imageReference .Reference ).
105+ Err (err ).Msg ("failed to get manifest: unauthorized" )
106+
107+ return nil , zerr .ErrUnauthorizedAccess
108+ } else if errors .Is (err , errs .ErrNotFound ) {
109+ registry .log .Info ().Str ("errorType" , common .TypeOf (err )).
110+ Str ("repository" , imageReference .Repository ).Str ("reference" , imageReference .Reference ).
111+ Err (err ).Msg ("failed to find manifest" )
112+
113+ return nil , zerr .ErrManifestNotFound
114+ }
115+
116+ return nil , err
117+ }
118+
119+ return man , nil
120+ }
121+
122+ func (registry * RemoteRegistry ) getManifest (ctx context.Context , imageReference ref.Ref ,
96123) (manifest.Manifest , error ) {
97124 /// check what error it gives when not found
98125 man , err := registry .client .ManifestGet (ctx , imageReference )
@@ -134,7 +161,7 @@ func (registry *RemoteRegistry) GetDigest(ctx context.Context, repo, tag string,
134161 return man .GetDescriptor ().Digest , err
135162}
136163
137- // returns OCI remote digest, original remote digaest (unconverted), if it was converted.
164+ // returns OCI remote digest, original remote digest (unconverted), if it was converted.
138165func (registry * RemoteRegistry ) GetOCIDigest (ctx context.Context , repo , tag string ,
139166) (godigest.Digest , godigest.Digest , bool , error ) {
140167 var isConverted bool
@@ -146,7 +173,7 @@ func (registry *RemoteRegistry) GetOCIDigest(ctx context.Context, repo, tag stri
146173 return "" , "" , false , err
147174 }
148175
149- man , err := registry .headManifest (ctx , imageReference )
176+ man , err := registry .getManifest (ctx , imageReference )
150177 if err != nil {
151178 return "" , "" , false , err
152179 }
0 commit comments