diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2022-05-24 03:37:32 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-24 03:37:32 -0400 |
commit | 737b100c5e0bf704bae6864621c3cf5eb41df2bf (patch) | |
tree | 8ff55ea2f0ed82251a094913b2179ba0cfd59019 /pkg/api/handlers | |
parent | 40c2ea3a27d2637c6d432bddc6e3184614ce4a23 (diff) | |
parent | c984956f932be12951df4273e8b4a7b9737dce9c (diff) | |
download | podman-737b100c5e0bf704bae6864621c3cf5eb41df2bf.tar.gz podman-737b100c5e0bf704bae6864621c3cf5eb41df2bf.tar.bz2 podman-737b100c5e0bf704bae6864621c3cf5eb41df2bf.zip |
Merge pull request #14294 from vrothberg/fix-14291
fix compat image resolution
Diffstat (limited to 'pkg/api/handlers')
-rw-r--r-- | pkg/api/handlers/utils/images.go | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/pkg/api/handlers/utils/images.go b/pkg/api/handlers/utils/images.go index 7154f5616..433231f59 100644 --- a/pkg/api/handlers/utils/images.go +++ b/pkg/api/handlers/utils/images.go @@ -26,21 +26,26 @@ func NormalizeToDockerHub(r *http.Request, nameOrID string) (string, error) { return nameOrID, nil } - // Try to lookup the input to figure out if it was an ID or not. runtime := r.Context().Value(api.RuntimeKey).(*libpod.Runtime) - img, _, err := runtime.LibimageRuntime().LookupImage(nameOrID, nil) + + // The candidate may resolve to a local non-Docker Hub image, such as + // 'busybox' -> 'registry.com/busybox'. + img, candidate, err := runtime.LibimageRuntime().LookupImage(nameOrID, nil) if err != nil { if errors.Cause(err) != storage.ErrImageUnknown { return "", fmt.Errorf("normalizing name for compat API: %v", err) } + // If the image could not be resolved locally, set the + // candidate back to the input. + candidate = nameOrID } else if strings.HasPrefix(img.ID(), strings.TrimPrefix(nameOrID, "sha256:")) { return img.ID(), nil } // No ID, so we can normalize. - named, err := reference.ParseNormalizedNamed(nameOrID) + named, err := reference.ParseNormalizedNamed(candidate) if err != nil { - return "", fmt.Errorf("normalizing name for compat API: %v", err) + return "", fmt.Errorf("normalizing name %q (orig: %q) for compat API: %v", candidate, nameOrID, err) } return named.String(), nil |