summaryrefslogtreecommitdiff
path: root/libpod/image/pull.go
diff options
context:
space:
mode:
Diffstat (limited to 'libpod/image/pull.go')
-rw-r--r--libpod/image/pull.go39
1 files changed, 18 insertions, 21 deletions
diff --git a/libpod/image/pull.go b/libpod/image/pull.go
index 7ea19d0e6..f7131f11e 100644
--- a/libpod/image/pull.go
+++ b/libpod/image/pull.go
@@ -64,7 +64,7 @@ type pullRefName struct {
dstName string
}
-func (ir *Runtime) getPullRefPair(srcRef types.ImageReference, destName string) (*pullRefPair, error) {
+func getPullRefName(srcRef types.ImageReference, destName string) (*pullRefName, error) {
imgPart, err := decompose(destName)
if err == nil && !imgPart.hasRegistry {
// If the image doesn't have a registry, set it as the default repo
@@ -77,20 +77,16 @@ func (ir *Runtime) getPullRefPair(srcRef types.ImageReference, destName string)
if srcRef.DockerReference() != nil {
reference = srcRef.DockerReference().String()
}
- destRef, err := is.Transport.ParseStoreReference(ir.store, reference)
- if err != nil {
- return nil, errors.Wrapf(err, "error parsing dest reference name")
- }
- return &pullRefPair{
- image: destName,
- srcRef: srcRef,
- dstRef: destRef,
+ return &pullRefName{
+ image: destName,
+ srcRef: srcRef,
+ dstName: reference,
}, nil
}
// returns a list of pullRefPair with the srcRef and DstRef based on the transport being used
func (ir *Runtime) getPullListFromRef(ctx context.Context, srcRef types.ImageReference, imgName string, sc *types.SystemContext) ([]*pullRefPair, error) {
- var pullRefPairs []*pullRefPair
+ var pullNames []*pullRefName
splitArr := strings.Split(imgName, ":")
archFile := splitArr[len(splitArr)-1]
@@ -112,11 +108,11 @@ func (ir *Runtime) getPullListFromRef(ctx context.Context, srcRef types.ImageRef
if err != nil {
return nil, err
}
- pullInfo, err := ir.getPullRefPair(srcRef, reference)
+ pullInfo, err := getPullRefName(srcRef, reference)
if err != nil {
return nil, err
}
- pullRefPairs = append(pullRefPairs, pullInfo)
+ pullNames = append(pullNames, pullInfo)
} else {
var dest []string
if len(manifest[0].RepoTags) > 0 {
@@ -131,11 +127,11 @@ func (ir *Runtime) getPullListFromRef(ctx context.Context, srcRef types.ImageRef
}
// Need to load in all the repo tags from the manifest
for _, dst := range dest {
- pullInfo, err := ir.getPullRefPair(srcRef, dst)
+ pullInfo, err := getPullRefName(srcRef, dst)
if err != nil {
return nil, err
}
- pullRefPairs = append(pullRefPairs, pullInfo)
+ pullNames = append(pullNames, pullInfo)
}
}
} else if srcRef.Transport().Name() == OCIArchive {
@@ -156,11 +152,11 @@ func (ir *Runtime) getPullListFromRef(ctx context.Context, srcRef types.ImageRef
} else {
dest = manifest.Annotations["org.opencontainers.image.ref.name"]
}
- pullInfo, err := ir.getPullRefPair(srcRef, dest)
+ pullInfo, err := getPullRefName(srcRef, dest)
if err != nil {
return nil, err
}
- pullRefPairs = append(pullRefPairs, pullInfo)
+ pullNames = append(pullNames, pullInfo)
} else if srcRef.Transport().Name() == DirTransport {
// supports pull from a directory
image := splitArr[1]
@@ -170,19 +166,20 @@ func (ir *Runtime) getPullListFromRef(ctx context.Context, srcRef types.ImageRef
// so docker.io isn't prepended, and the path becomes the repository
image = DefaultLocalRepo + image
}
- pullInfo, err := ir.getPullRefPair(srcRef, image)
+ pullInfo, err := getPullRefName(srcRef, image)
if err != nil {
return nil, err
}
- pullRefPairs = append(pullRefPairs, pullInfo)
+ pullNames = append(pullNames, pullInfo)
} else {
- pullInfo, err := ir.getPullRefPair(srcRef, imgName)
+ pullInfo, err := getPullRefName(srcRef, imgName)
if err != nil {
return nil, err
}
- pullRefPairs = append(pullRefPairs, pullInfo)
+ pullNames = append(pullNames, pullInfo)
}
- return pullRefPairs, nil
+
+ return ir.pullRefPairsFromRefNames(pullNames)
}
// pullImage pulls an image from configured registries