summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cmd/kpod/load.go9
-rw-r--r--cmd/kpod/pull.go6
-rw-r--r--docs/kpod-load.1.md2
-rw-r--r--libpod/runtime_img.go28
-rw-r--r--libpod/sql_state.go3
5 files changed, 29 insertions, 19 deletions
diff --git a/cmd/kpod/load.go b/cmd/kpod/load.go
index 31975fc76..d29da0c06 100644
--- a/cmd/kpod/load.go
+++ b/cmd/kpod/load.go
@@ -1,6 +1,7 @@
package main
import (
+ "fmt"
"io"
"io/ioutil"
"os"
@@ -101,16 +102,18 @@ func loadCmd(c *cli.Context) error {
}
src := libpod.DockerArchive + ":" + input
- if err := runtime.PullImage(src, options); err != nil {
+ imgName, err := runtime.PullImage(src, options)
+ if err != nil {
src = libpod.OCIArchive + ":" + input
// generate full src name with specified image:tag
if image != "" {
src = src + ":" + image
}
- if err := runtime.PullImage(src, options); err != nil {
+ imgName, err = runtime.PullImage(src, options)
+ if err != nil {
return errors.Wrapf(err, "error pulling %q", src)
}
}
-
+ fmt.Println("Loaded image: ", imgName)
return nil
}
diff --git a/cmd/kpod/pull.go b/cmd/kpod/pull.go
index 399e8c1b4..5726b20f1 100644
--- a/cmd/kpod/pull.go
+++ b/cmd/kpod/pull.go
@@ -113,6 +113,8 @@ func pullCmd(c *cli.Context) error {
Writer: writer,
}
- return runtime.PullImage(image, options)
-
+ if _, err := runtime.PullImage(image, options); err != nil {
+ return errors.Wrapf(err, "error pulling image %q", image)
+ }
+ return nil
}
diff --git a/docs/kpod-load.1.md b/docs/kpod-load.1.md
index d29614de9..bb13b5f02 100644
--- a/docs/kpod-load.1.md
+++ b/docs/kpod-load.1.md
@@ -56,6 +56,7 @@ Copying config sha256:7328f6f8b41890597575cbaadc884e7386ae0acc53b747401ebce5cf0d
0 B / 1.48 KB [---------------------------------------------------------------]
Writing manifest to image destination
Storing signatures
+Loaded image: registry.fedoraproject.org/fedora:latest
```
```
@@ -67,6 +68,7 @@ Copying config sha256:7328f6f8b41890597575cbaadc884e7386ae0acc53b747401ebce5cf0d
0 B / 1.48 KB [---------------------------------------------------------------]
Writing manifest to image destination
Storing signatures
+Loaded image: registry.fedoraproject.org/fedora:latest
```
## SEE ALSO
diff --git a/libpod/runtime_img.go b/libpod/runtime_img.go
index 598bfaf0f..26f85b037 100644
--- a/libpod/runtime_img.go
+++ b/libpod/runtime_img.go
@@ -10,6 +10,8 @@ import (
"time"
cp "github.com/containers/image/copy"
+ "github.com/containers/image/directory"
+ "github.com/containers/image/docker"
dockerarchive "github.com/containers/image/docker/archive"
"github.com/containers/image/docker/reference"
"github.com/containers/image/docker/tarfile"
@@ -40,12 +42,16 @@ var (
OCIArchive = ociarchive.Transport.Name()
// DirTransport is the transport for pushing and pulling
// images to and from a directory
- DirTransport = "dir"
+ DirTransport = directory.Transport.Name()
// TransportNames are the supported transports in string form
TransportNames = [...]string{DefaultTransport, DockerArchive, OCIArchive, "ostree:", "dir:"}
// TarballTransport is the transport for importing a tar archive
// and creating a filesystem image
- TarballTransport = "tarball"
+ TarballTransport = tarball.Transport.Name()
+ // Docker is the transport for docker registries
+ Docker = docker.Transport.Name()
+ // Atomic is the transport for atomic registries
+ Atomic = "atomic"
)
// CopyOptions contains the options given when pushing or pulling images
@@ -622,12 +628,12 @@ func (r *Runtime) getPullListFromRef(srcRef types.ImageReference, imgName string
// pulled. If allTags is true, all tags for the requested image will be pulled.
// Signature validation will be performed if the Runtime has been appropriately
// configured
-func (r *Runtime) PullImage(imgName string, options CopyOptions) error {
+func (r *Runtime) PullImage(imgName string, options CopyOptions) (string, error) {
r.lock.Lock()
defer r.lock.Unlock()
if !r.valid {
- return ErrRuntimeStopped
+ return "", ErrRuntimeStopped
}
// PullImage copies the image from the source to the destination
@@ -645,25 +651,25 @@ func (r *Runtime) PullImage(imgName string, options CopyOptions) error {
// could be trying to pull from registry with short name
pullStructs, err = getRegistriesToTry(imgName, r.store, r.config.ImageDefaultTransport)
if err != nil {
- return errors.Wrap(err, "error getting default registries to try")
+ return "", errors.Wrap(err, "error getting default registries to try")
}
} else {
pullStructs, err = r.getPullListFromRef(srcRef, imgName, sc)
if err != nil {
- return errors.Wrapf(err, "error getting pullStruct info to pull image %q", imgName)
+ return "", errors.Wrapf(err, "error getting pullStruct info to pull image %q", imgName)
}
}
-
policyContext, err := getPolicyContext(sc)
if err != nil {
- return err
+ return "", err
}
defer policyContext.Destroy()
copyOptions := common.GetCopyOptions(options.Writer, signaturePolicyPath, &options.DockerRegistryOptions, nil, options.SigningOptions, options.AuthFile)
for _, imageInfo := range pullStructs {
- if options.Writer != nil {
+ // Print the following statement only when pulling from a docker or atomic registry
+ if options.Writer != nil && (imageInfo.srcRef.Transport().Name() == Docker || imageInfo.srcRef.Transport().Name() == Atomic) {
io.WriteString(options.Writer, fmt.Sprintf("Trying to pull %s...\n", imageInfo.image))
}
if err = cp.Image(policyContext, imageInfo.dstRef, imageInfo.srcRef, copyOptions); err != nil {
@@ -671,10 +677,10 @@ func (r *Runtime) PullImage(imgName string, options CopyOptions) error {
io.WriteString(options.Writer, "Failed\n")
}
} else {
- return nil
+ return imageInfo.image, nil
}
}
- return errors.Wrapf(err, "error pulling image from %q", imgName)
+ return "", errors.Wrapf(err, "error pulling image from %q", imgName)
}
// PushImage pushes the given image to a location described by the given path
diff --git a/libpod/sql_state.go b/libpod/sql_state.go
index 36114e9cc..02cbd63d8 100644
--- a/libpod/sql_state.go
+++ b/libpod/sql_state.go
@@ -105,9 +105,6 @@ func (s *SQLState) Refresh() (err error) {
Mountpoint=?,
Pid=?;`
- s.lock.Lock()
- defer s.lock.Unlock()
-
if !s.valid {
return ErrDBClosed
}