mirror of
https://github.com/containers/podman
synced 2024-10-19 00:34:18 +00:00
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:
parent
36d96c19f9
commit
7459c48863
8
API.md
8
API.md
|
@ -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;">
|
||||
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue