summaryrefslogtreecommitdiff
path: root/cmd/podman/pull.go
diff options
context:
space:
mode:
authorMiloslav Trmač <mitr@redhat.com>2018-07-28 08:06:08 +0200
committerAtomic Bot <atomic-devel@projectatomic.io>2018-08-01 18:22:59 +0000
commit5507f15ba58a271c018a5446ef091ee477b18b1d (patch)
tree49f38411eff776d990f219b1deb5e952ff461dec /cmd/podman/pull.go
parent04f3a9079c5dac0f88ce19c22a7f8761334fee90 (diff)
downloadpodman-5507f15ba58a271c018a5446ef091ee477b18b1d.tar.gz
podman-5507f15ba58a271c018a5446ef091ee477b18b1d.tar.bz2
podman-5507f15ba58a271c018a5446ef091ee477b18b1d.zip
Replace Runtime.LoadFromArchive with Runtime.LoadFromArchiveReference
All callers of LoadFromArchive expect the input to be in the transport:name format, or create it that way. So, pass a types.ImageReference instead of a string. That requires us to add an explicit parse step in (podman pull); in (podman load) we can, instead of pasting strings, create native objects directly. Changes the error behavior of (podman pull), we no longer try heuristically parsing docker-archive:... inputs as Docker references. Also changes the string reported by (podman load) if all parsing attempts fail, to be only the path instead of dir:path. The error message itself is likely to be the same (from directory.Transport). (While at it, update a mismatched comment.) Signed-off-by: Miloslav Trmač <mitr@redhat.com> Closes: #1176 Approved by: rhatdan
Diffstat (limited to 'cmd/podman/pull.go')
-rw-r--r--cmd/podman/pull.go9
1 files changed, 7 insertions, 2 deletions
diff --git a/cmd/podman/pull.go b/cmd/podman/pull.go
index d8fcf05c2..90fb1345a 100644
--- a/cmd/podman/pull.go
+++ b/cmd/podman/pull.go
@@ -6,6 +6,7 @@ import (
"os"
"strings"
+ "github.com/containers/image/transports/alltransports"
"github.com/containers/image/types"
"github.com/pkg/errors"
"github.com/projectatomic/libpod/cmd/podman/libpodruntime"
@@ -110,9 +111,13 @@ func pullCmd(c *cli.Context) error {
forceSecure = c.Bool("tls-verify")
}
- // Possible for docker-archive to have multiple tags, so use NewFromLoad instead
+ // Possible for docker-archive to have multiple tags, so use LoadFromArchiveReference instead
if strings.HasPrefix(image, libpod.DockerArchive+":") {
- newImage, err := runtime.ImageRuntime().LoadFromArchive(getContext(), image, c.String("signature-policy"), writer)
+ srcRef, err := alltransports.ParseImageName(image)
+ if err != nil {
+ return errors.Wrapf(err, "error parsing %q", image)
+ }
+ newImage, err := runtime.ImageRuntime().LoadFromArchiveReference(getContext(), srcRef, c.String("signature-policy"), writer)
if err != nil {
return errors.Wrapf(err, "error pulling image from %q", image)
}