mirror of
https://github.com/containers/podman.git
synced 2025-10-16 18:53:19 +08: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:
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 ImageExists(name: string) int](#ImageExists)
|
||||||
|
|
||||||
|
[func ImagesPrune() []string](#ImagesPrune)
|
||||||
|
|
||||||
[func ImportImage(source: string, reference: string, message: string, changes: []string) string](#ImportImage)
|
[func ImportImage(source: string, reference: string, message: string, changes: []string) string](#ImportImage)
|
||||||
|
|
||||||
[func InspectContainer(name: string) string](#InspectContainer)
|
[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
|
"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
|
### <a name="ImportImage"></a>func ImportImage
|
||||||
<div style="background-color: #E8E8E8; padding: 15px; margin: 10px; border-radius: 10px;">
|
<div style="background-color: #E8E8E8; padding: 15px; margin: 10px; border-radius: 10px;">
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"github.com/containers/libpod/cmd/podman/libpodruntime"
|
"github.com/containers/libpod/cmd/podman/libpodruntime"
|
||||||
"github.com/containers/libpod/cmd/podman/shared"
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"github.com/urfave/cli"
|
"github.com/urfave/cli"
|
||||||
)
|
)
|
||||||
@ -30,5 +30,16 @@ func pruneImagesCmd(c *cli.Context) error {
|
|||||||
}
|
}
|
||||||
defer runtime.Shutdown(false)
|
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) -> ()
|
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.
|
# This function is not implemented yet.
|
||||||
method ListContainerPorts(name: string) -> (notimplemented: NotImplemented)
|
method ListContainerPorts(name: string) -> (notimplemented: NotImplemented)
|
||||||
|
|
||||||
|
@ -620,3 +620,21 @@ func (i *LibpodAPI) ContainerRunlabel(call iopodman.VarlinkCall, input iopodman.
|
|||||||
}
|
}
|
||||||
return call.ReplyContainerRunlabel()
|
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)
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user