mirror of
https://github.com/containers/podman.git
synced 2025-08-06 03:19:52 +08:00
compat API: fix image-prune --all
Docker deals with the --all flag on the client side while Podman does it on the server side. Hence, make sure to not set the dangling filter with two different values in the backend. Fixes: #20469 Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
This commit is contained in:
@ -56,7 +56,18 @@ func (ir *ImageEngine) Prune(ctx context.Context, opts entities.ImagePruneOption
|
||||
}
|
||||
|
||||
if !opts.All {
|
||||
pruneOptions.Filters = append(pruneOptions.Filters, "dangling=true")
|
||||
// Issue #20469: Docker clients handle the --all flag on the
|
||||
// client side by setting the dangling filter directly.
|
||||
alreadySet := false
|
||||
for _, filter := range pruneOptions.Filters {
|
||||
if strings.HasPrefix(filter, "dangling=") {
|
||||
alreadySet = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if !alreadySet {
|
||||
pruneOptions.Filters = append(pruneOptions.Filters, "dangling=true")
|
||||
}
|
||||
}
|
||||
if opts.External {
|
||||
pruneOptions.Filters = append(pruneOptions.Filters, "containers=external")
|
||||
|
@ -164,6 +164,8 @@ t DELETE libpod/images/test:test 200
|
||||
t GET images/json?filters='{"label":["xyz"]}' 200 length=0
|
||||
t GET libpod/images/json?filters='{"label":["xyz"]}' 200 length=0
|
||||
|
||||
# Must not error out: #20469
|
||||
t POST images/prune?filters='{"dangling":["false"]}' 200
|
||||
|
||||
# to be used in prune until filter tests
|
||||
podman image build -t test1:latest -<<EOF
|
||||
|
Reference in New Issue
Block a user