Files
Lewis Roy f38e32760d feat: Add artifact remove --all option
Prior to this commit `artifact remove --all` was not supported on remote
clients.

This patch adds a new artifact API endpoint `artifact/remove` which can
either take a list of artifacts to remove or remove all artifacts by
setting all=true.

This patch removes the temporary warning message in the tunnel interface
implementation of ArtifactRm if `--all` was passed on the command line
and uses the new `artifact/remove` endpoint.

This patch also updates the `artifact remove` command both remote and
local to accept a list of artifacts to remove rather than limiting to
just one.

Signed-off-by: Lewis Roy <lewis@redhat.com>
2025-08-13 23:00:20 +10:00

41 lines
954 B
Go

package artifacts
import (
"context"
"net/http"
"github.com/containers/podman/v5/pkg/bindings"
"github.com/containers/podman/v5/pkg/domain/entities"
)
// Remove removes an artifact from local storage.
// TODO (6.0): nameOrID parameter should be removed
func Remove(ctx context.Context, nameOrID string, options *RemoveOptions) (*entities.ArtifactRemoveReport, error) {
conn, err := bindings.GetClient(ctx)
if err != nil {
return nil, err
}
if nameOrID != "" {
options.Artifacts = append(options.Artifacts, nameOrID)
}
params, err := options.ToParams()
if err != nil {
return nil, err
}
response, err := conn.DoRequest(ctx, nil, http.MethodDelete, "/artifacts/remove", params, nil)
if err != nil {
return nil, err
}
defer response.Body.Close()
var artifactRemoveReport entities.ArtifactRemoveReport
if err := response.Process(&artifactRemoveReport); err != nil {
return nil, err
}
return &artifactRemoveReport, nil
}