summaryrefslogtreecommitdiff
path: root/cmd/podman/save.go
diff options
context:
space:
mode:
authorhaircommander <pehunt@redhat.com>2018-07-13 17:45:55 -0400
committerhaircommander <pehunt@redhat.com>2018-07-20 11:46:11 -0400
commit0fecfeee6398e2db6b7b3fd257645a6ea9aab542 (patch)
tree0c8bc2bc742ae2001f992c777ab0ac4d46947553 /cmd/podman/save.go
parentba1871dac033783ab0329c9b3c9113a34a90992f (diff)
downloadpodman-0fecfeee6398e2db6b7b3fd257645a6ea9aab542.tar.gz
podman-0fecfeee6398e2db6b7b3fd257645a6ea9aab542.tar.bz2
podman-0fecfeee6398e2db6b7b3fd257645a6ea9aab542.zip
Podman load/tag/save prepend localhost when no repository is present
Instead of having docker.io/library as its repository. Test included. Signed-off-by: haircommander <pehunt@redhat.com>
Diffstat (limited to 'cmd/podman/save.go')
-rw-r--r--cmd/podman/save.go19
1 files changed, 16 insertions, 3 deletions
diff --git a/cmd/podman/save.go b/cmd/podman/save.go
index 2f9adc843..016fa580a 100644
--- a/cmd/podman/save.go
+++ b/cmd/podman/save.go
@@ -1,6 +1,7 @@
package main
import (
+ "fmt"
"io"
"os"
"strings"
@@ -118,14 +119,26 @@ func saveCmd(c *cli.Context) error {
return err
}
}
- newImage, err := runtime.ImageRuntime().NewFromLocal(args[0])
+ source := args[0]
+ newImage, err := runtime.ImageRuntime().NewFromLocal(source)
if err != nil {
return err
}
dest := dst
// need dest to be in the format transport:path:reference for the following transports
- if (strings.Contains(dst, libpod.OCIArchive) || strings.Contains(dst, libpod.DockerArchive)) && !strings.Contains(newImage.ID(), args[0]) {
- dest = dst + ":" + args[0]
+ if (strings.Contains(dst, libpod.OCIArchive) || strings.Contains(dst, libpod.DockerArchive)) && !strings.Contains(newImage.ID(), source) {
+ prepend := ""
+ if !strings.Contains(source, libpodImage.DefaultLocalRepo) {
+ // we need to check if localhost was added to the image name in NewFromLocal
+ for _, name := range newImage.Names() {
+ // if the user searched for the image whose tag was prepended with localhost, we'll need to prepend localhost to successfully search
+ if strings.Contains(name, libpodImage.DefaultLocalRepo) && strings.Contains(name, source) {
+ prepend = fmt.Sprintf("%s/", libpodImage.DefaultLocalRepo)
+ break
+ }
+ }
+ }
+ dest = fmt.Sprintf("%s:%s%s", dst, prepend, source)
}
if err := newImage.PushImage(getContext(), dest, manifestType, "", "", writer, c.Bool("compress"), libpodImage.SigningOptions{}, &libpodImage.DockerRegistryOptions{}, false, additionaltags); err != nil {
if err2 := os.Remove(output); err2 != nil {