diff options
author | baude <bbaude@redhat.com> | 2019-01-14 14:48:50 -0600 |
---|---|---|
committer | baude <bbaude@redhat.com> | 2019-01-14 15:40:33 -0600 |
commit | 1ffb0fc2d1d0e1acb43791591ebf2225a460df6d (patch) | |
tree | 8b6fdac3a9e443cb9972797e821c33b6ecb7cdde | |
parent | 6301f6a0a9e3989ecdf59fd5395d06c44f8bac14 (diff) | |
download | podman-1ffb0fc2d1d0e1acb43791591ebf2225a460df6d.tar.gz podman-1ffb0fc2d1d0e1acb43791591ebf2225a460df6d.tar.bz2 podman-1ffb0fc2d1d0e1acb43791591ebf2225a460df6d.zip |
podman remote client -- add rmi
allow the podman remote client to delete images
Signed-off-by: baude <bbaude@redhat.com>
-rw-r--r-- | cmd/podman/rmi.go | 19 | ||||
-rw-r--r-- | libpod/adapter/runtime.go | 5 | ||||
-rw-r--r-- | libpod/adapter/runtime_remote.go | 5 |
3 files changed, 19 insertions, 10 deletions
diff --git a/cmd/podman/rmi.go b/cmd/podman/rmi.go index 5e8ac81a2..482e6fff4 100644 --- a/cmd/podman/rmi.go +++ b/cmd/podman/rmi.go @@ -2,10 +2,9 @@ package main import ( "fmt" + "github.com/containers/libpod/libpod/adapter" "os" - "github.com/containers/libpod/cmd/podman/libpodruntime" - "github.com/containers/libpod/libpod/image" "github.com/containers/storage" "github.com/pkg/errors" "github.com/urfave/cli" @@ -58,11 +57,11 @@ func rmiCmd(c *cli.Context) error { return err } removeAll := c.Bool("all") - runtime, err := libpodruntime.GetRuntime(c) + localRuntime, err := adapter.GetRuntime(c) if err != nil { return errors.Wrapf(err, "could not get runtime") } - defer runtime.Shutdown(false) + defer localRuntime.Runtime.Shutdown(false) args := c.Args() if len(args) == 0 && !removeAll { @@ -74,9 +73,9 @@ func rmiCmd(c *cli.Context) error { images := args[:] - removeImage := func(img *image.Image) { + removeImage := func(img *adapter.ContainerImage) { deleted = true - msg, deleteErr = runtime.RemoveImage(ctx, img, c.Bool("force")) + msg, deleteErr = localRuntime.RemoveImage(ctx, img, c.Bool("force")) if deleteErr != nil { if errors.Cause(deleteErr) == storage.ErrImageUsedByContainer { fmt.Printf("A container associated with containers/storage, i.e. via Buildah, CRI-O, etc., may be associated with this image: %-12.12s\n", img.ID()) @@ -91,8 +90,8 @@ func rmiCmd(c *cli.Context) error { } if removeAll { - var imagesToDelete []*image.Image - imagesToDelete, err = runtime.ImageRuntime().GetImages() + var imagesToDelete []*adapter.ContainerImage + imagesToDelete, err = localRuntime.GetImages() if err != nil { return errors.Wrapf(err, "unable to query local images") } @@ -112,7 +111,7 @@ func rmiCmd(c *cli.Context) error { removeImage(i) } lastNumberofImages = len(imagesToDelete) - imagesToDelete, err = runtime.ImageRuntime().GetImages() + imagesToDelete, err = localRuntime.GetImages() if err != nil { return err } @@ -130,7 +129,7 @@ func rmiCmd(c *cli.Context) error { // See https://github.com/containers/libpod/issues/930 as // an exemplary inconsistency issue. for _, i := range images { - newImage, err := runtime.ImageRuntime().NewFromLocal(i) + newImage, err := localRuntime.NewImageFromLocal(i) if err != nil { fmt.Fprintln(os.Stderr, err) continue diff --git a/libpod/adapter/runtime.go b/libpod/adapter/runtime.go index 9ce850aaa..883ae2c76 100644 --- a/libpod/adapter/runtime.go +++ b/libpod/adapter/runtime.go @@ -80,3 +80,8 @@ func (r *LocalRuntime) New(ctx context.Context, name, signaturePolicyPath, authf } return &ContainerImage{img}, nil } + +// RemoveImage calls into local storage and removes an image +func (r *LocalRuntime) RemoveImage(ctx context.Context, img *ContainerImage, force bool) (string, error) { + return r.Runtime.RemoveImage(ctx, img.Image, force) +} diff --git a/libpod/adapter/runtime_remote.go b/libpod/adapter/runtime_remote.go index 3eb53e4af..bb00350e0 100644 --- a/libpod/adapter/runtime_remote.go +++ b/libpod/adapter/runtime_remote.go @@ -216,3 +216,8 @@ func (ci *ContainerImage) TagImage(tag string) error { func (r RemoteRuntime) RemoveImage(force bool) error { return nil } + +// RemoveImage calls varlink to remove an image +func (r *LocalRuntime) RemoveImage(ctx context.Context, img *ContainerImage, force bool) (string, error) { + return iopodman.RemoveImage().Call(r.Conn, img.InputName, force) +} |