summaryrefslogtreecommitdiff
path: root/pkg
diff options
context:
space:
mode:
authorOpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com>2022-05-24 03:37:32 -0400
committerGitHub <noreply@github.com>2022-05-24 03:37:32 -0400
commit737b100c5e0bf704bae6864621c3cf5eb41df2bf (patch)
tree8ff55ea2f0ed82251a094913b2179ba0cfd59019 /pkg
parent40c2ea3a27d2637c6d432bddc6e3184614ce4a23 (diff)
parentc984956f932be12951df4273e8b4a7b9737dce9c (diff)
downloadpodman-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')
-rw-r--r--pkg/api/handlers/utils/images.go13
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