mirror of
https://github.com/containers/podman.git
synced 2025-06-19 00:06:43 +08:00
Handle filters correctly for podman prune
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
This commit is contained in:
@ -61,12 +61,6 @@ Are you sure you want to continue? [y/N] `)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO Remove once filter refactor is finished and url.Values rules :)
|
|
||||||
for _, f := range filter {
|
|
||||||
t := strings.SplitN(f, "=", 2)
|
|
||||||
pruneOpts.Filters.Add(t[0], t[1])
|
|
||||||
}
|
|
||||||
|
|
||||||
results, err := registry.ImageEngine().Prune(registry.GetContext(), pruneOpts)
|
results, err := registry.ImageEngine().Prune(registry.GetContext(), pruneOpts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
package entities
|
package entities
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"net/url"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/containers/image/v5/manifest"
|
"github.com/containers/image/v5/manifest"
|
||||||
@ -226,9 +225,8 @@ type ImageListOptions struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type ImagePruneOptions struct {
|
type ImagePruneOptions struct {
|
||||||
All bool `json:"all" schema:"all"`
|
All bool `json:"all" schema:"all"`
|
||||||
Filter []string `json:"filter" schema:"filter"`
|
Filter []string `json:"filter" schema:"filter"`
|
||||||
Filters url.Values `json:"filters" schema:"filters"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type ImagePruneReport struct {
|
type ImagePruneReport struct {
|
||||||
|
@ -67,8 +67,13 @@ func (ir *ImageEngine) History(ctx context.Context, nameOrId string, opts entiti
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (ir *ImageEngine) Prune(ctx context.Context, opts entities.ImagePruneOptions) (*entities.ImagePruneReport, error) {
|
func (ir *ImageEngine) Prune(ctx context.Context, opts entities.ImagePruneOptions) (*entities.ImagePruneReport, error) {
|
||||||
|
filters := make(map[string][]string, len(opts.Filter))
|
||||||
|
for _, filter := range opts.Filter {
|
||||||
|
f := strings.Split(filter, "=")
|
||||||
|
filters[f[0]] = f[1:]
|
||||||
|
}
|
||||||
|
|
||||||
results, err := images.Prune(ir.ClientCxt, &opts.All, opts.Filters)
|
results, err := images.Prune(ir.ClientCxt, &opts.All, filters)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -131,6 +131,7 @@ var _ = Describe("Podman images", func() {
|
|||||||
})
|
})
|
||||||
|
|
||||||
It("podman images filter by image name", func() {
|
It("podman images filter by image name", func() {
|
||||||
|
Skip(v2remotefail)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
session := podmanTest.PodmanNoCache([]string{"images", "-q", ALPINE})
|
session := podmanTest.PodmanNoCache([]string{"images", "-q", ALPINE})
|
||||||
session.WaitWithDefaultTimeout()
|
session.WaitWithDefaultTimeout()
|
||||||
@ -233,6 +234,9 @@ RUN apk update && apk add man
|
|||||||
})
|
})
|
||||||
|
|
||||||
It("podman check for image with sha256: prefix", func() {
|
It("podman check for image with sha256: prefix", func() {
|
||||||
|
if podmanTest.RemoteTest {
|
||||||
|
Skip("Does not work on remote client")
|
||||||
|
}
|
||||||
session := podmanTest.Podman([]string{"inspect", "--format=json", ALPINE})
|
session := podmanTest.Podman([]string{"inspect", "--format=json", ALPINE})
|
||||||
session.WaitWithDefaultTimeout()
|
session.WaitWithDefaultTimeout()
|
||||||
Expect(session).Should(Exit(0))
|
Expect(session).Should(Exit(0))
|
||||||
@ -245,6 +249,9 @@ RUN apk update && apk add man
|
|||||||
})
|
})
|
||||||
|
|
||||||
It("podman check for image with sha256: prefix", func() {
|
It("podman check for image with sha256: prefix", func() {
|
||||||
|
if podmanTest.RemoteTest {
|
||||||
|
Skip("Does not work on remote client")
|
||||||
|
}
|
||||||
session := podmanTest.Podman([]string{"image", "inspect", "--format=json", ALPINE})
|
session := podmanTest.Podman([]string{"image", "inspect", "--format=json", ALPINE})
|
||||||
session.WaitWithDefaultTimeout()
|
session.WaitWithDefaultTimeout()
|
||||||
Expect(session).Should(Exit(0))
|
Expect(session).Should(Exit(0))
|
||||||
|
Reference in New Issue
Block a user