Add varlink support for prune

Add the ability to prune unused images using the varlink
API.

Signed-off-by: baude <bbaude@redhat.com>
This commit is contained in:
baude 2019-01-10 14:39:39 -06:00
parent 36d96c19f9
commit 7459c48863
5 changed files with 43 additions and 26 deletions

8
API.md
View file

@ -57,6 +57,8 @@ in the [API.md](https://github.com/containers/libpod/blob/master/API.md) file in
[func ImageExists(name: string) int](#ImageExists)
[func ImagesPrune() []string](#ImagesPrune)
[func ImportImage(source: string, reference: string, message: string, changes: []string) string](#ImportImage)
[func InspectContainer(name: string) string](#InspectContainer)
@ -543,6 +545,12 @@ $ varlink call -m unix:/run/podman/io.podman/io.podman.ImageExists '{"name": "im
"exists": 1
}
~~~
### <a name="ImagesPrune"></a>func ImagesPrune
<div style="background-color: #E8E8E8; padding: 15px; margin: 10px; border-radius: 10px;">
method ImagesPrune() [[]string](#[]string)</div>
ImagesPrune removes all unused images from the local store. Upon successful pruning,
the IDs of the removed images are returned.
### <a name="ImportImage"></a>func ImportImage
<div style="background-color: #E8E8E8; padding: 15px; margin: 10px; border-radius: 10px;">

View file

@ -1,8 +1,8 @@
package main
import (
"fmt"
"github.com/containers/libpod/cmd/podman/libpodruntime"
"github.com/containers/libpod/cmd/podman/shared"
"github.com/pkg/errors"
"github.com/urfave/cli"
)
@ -30,5 +30,16 @@ func pruneImagesCmd(c *cli.Context) error {
}
defer runtime.Shutdown(false)
return shared.Prune(runtime.ImageRuntime())
pruneImages, err := runtime.ImageRuntime().GetPruneImages()
if err != nil {
return err
}
for _, i := range pruneImages {
if err := i.Remove(true); err != nil {
return errors.Wrapf(err, "failed to remove %s", i.ID())
}
fmt.Println(i.ID())
}
return nil
}

View file

@ -1,24 +0,0 @@
package shared
import (
"fmt"
"github.com/pkg/errors"
"github.com/containers/libpod/libpod/image"
)
// Prune removes all unnamed and unused images from the local store
func Prune(ir *image.Runtime) error {
pruneImages, err := ir.GetPruneImages()
if err != nil {
return err
}
for _, i := range pruneImages {
if err := i.Remove(true); err != nil {
return errors.Wrapf(err, "failed to remove %s", i.ID())
}
fmt.Println(i.ID())
}
return nil
}

View file

@ -1015,6 +1015,10 @@ method MountContainer(name: string) -> (path: string)
# ~~~
method UnmountContainer(name: string, force: bool) -> ()
# ImagesPrune removes all unused images from the local store. Upon successful pruning,
# the IDs of the removed images are returned.
method ImagesPrune() -> (pruned: []string)
# This function is not implemented yet.
method ListContainerPorts(name: string) -> (notimplemented: NotImplemented)

View file

@ -620,3 +620,21 @@ func (i *LibpodAPI) ContainerRunlabel(call iopodman.VarlinkCall, input iopodman.
}
return call.ReplyContainerRunlabel()
}
// ImagesPrune ....
func (i *LibpodAPI) ImagesPrune(call iopodman.VarlinkCall) error {
var (
pruned []string
)
pruneImages, err := i.Runtime.ImageRuntime().GetPruneImages()
if err != nil {
return err
}
for _, i := range pruneImages {
if err := i.Remove(true); err != nil {
return call.ReplyErrorOccurred(err.Error())
}
pruned = append(pruned, i.ID())
}
return call.ReplyImagesPrune(pruned)
}