summaryrefslogtreecommitdiff
path: root/libpod/image/pull.go
diff options
context:
space:
mode:
authorMiloslav Trmač <mitr@redhat.com>2019-01-09 20:55:53 +0100
committerMiloslav Trmač <mitr@redhat.com>2019-01-14 04:07:23 +0100
commit81204487dbf9903f4a8784be9a580f8a46d1d381 (patch)
treea9939c4e4b22bd74be036829816b0550f91662b6 /libpod/image/pull.go
parent2171a393904051ab724fa08d01a964adbf7c1880 (diff)
downloadpodman-81204487dbf9903f4a8784be9a580f8a46d1d381.tar.gz
podman-81204487dbf9903f4a8784be9a580f8a46d1d381.tar.bz2
podman-81204487dbf9903f4a8784be9a580f8a46d1d381.zip
Use imageParts.referenceWithRegistry in pullGoalFromPossiblyUnqualifiedName
CHANGES BEHAVIOR. This bypasses .assemble, and preserves the original lack of tag / original digest instead of adding :latest/:none (still subject to ParseStoreReference normalization). Using the original digest seems clearly correct; dropping the :latest suffix from .image strings, and adding /library to docker.io/shortname, only affects user-visible input; later uses of the return value of pullImageFrom... use ParseStoreReference, which calls reference.ParseNormalizedNamed and reference.TagNameOnly, so the image name should be processed the same way whether it contains a tag, or libray/, or not. This also allows us to drop the problematic hasShaInInputName heuristic/condition/helper. Signed-off-by: Miloslav Trmač <mitr@redhat.com>
Diffstat (limited to 'libpod/image/pull.go')
-rw-r--r--libpod/image/pull.go19
1 files changed, 6 insertions, 13 deletions
diff --git a/libpod/image/pull.go b/libpod/image/pull.go
index 70f89ea7d..af6b84c34 100644
--- a/libpod/image/pull.go
+++ b/libpod/image/pull.go
@@ -4,7 +4,6 @@ import (
"context"
"fmt"
"io"
- "strings"
cp "github.com/containers/image/copy"
"github.com/containers/image/directory"
@@ -272,12 +271,6 @@ func (ir *Runtime) doPullImage(ctx context.Context, sc *types.SystemContext, goa
return images, nil
}
-// hasShaInInputName returns a bool as to whether the user provided an image name that includes
-// a reference to a specific sha
-func hasShaInInputName(inputName string) bool {
- return strings.Contains(inputName, "@sha256:")
-}
-
// pullGoalFromPossiblyUnqualifiedName looks at inputName and determines the possible
// image references to try pulling in combination with the registries.conf file as well
func (ir *Runtime) pullGoalFromPossiblyUnqualifiedName(inputName string) (*pullGoal, error) {
@@ -308,17 +301,17 @@ func (ir *Runtime) pullGoalFromPossiblyUnqualifiedName(inputName string) (*pullG
}
var refPairs []pullRefPair
for _, registry := range searchRegistries {
- decomposedImage.registry = registry
- imageName := decomposedImage.assemble()
- if hasShaInInputName(inputName) {
- imageName = fmt.Sprintf("%s/%s", registry, inputName)
+ ref, err := decomposedImage.referenceWithRegistry(registry)
+ if err != nil {
+ return nil, err
}
+ imageName := ref.String()
srcRef, err := docker.ParseReference("//" + imageName)
if err != nil {
- return nil, errors.Wrapf(err, "unable to parse '%s'", inputName)
+ return nil, errors.Wrapf(err, "unable to parse '%s'", imageName)
}
ps := pullRefPair{
- image: decomposedImage.assemble(),
+ image: imageName,
srcRef: srcRef,
}
ps.dstRef, err = is.Transport.ParseStoreReference(ir.store, ps.image)