mirror of
https://github.com/containers/podman.git
synced 2025-06-23 10:38:20 +08:00
Merge pull request #2018 from baude/rmiinfra
display proper error when rmi -fa with infra containers
This commit is contained in:
@ -46,6 +46,13 @@ var (
|
||||
)
|
||||
|
||||
func rmiCmd(c *cli.Context) error {
|
||||
var (
|
||||
lastError error
|
||||
deleted bool
|
||||
deleteErr error
|
||||
msg string
|
||||
)
|
||||
|
||||
ctx := getContext()
|
||||
if err := validateFlags(c, rmiFlags); err != nil {
|
||||
return err
|
||||
@ -66,20 +73,18 @@ func rmiCmd(c *cli.Context) error {
|
||||
}
|
||||
|
||||
images := args[:]
|
||||
var lastError error
|
||||
var deleted bool
|
||||
|
||||
removeImage := func(img *image.Image) {
|
||||
deleted = true
|
||||
msg, err := runtime.RemoveImage(ctx, img, c.Bool("force"))
|
||||
if err != nil {
|
||||
if errors.Cause(err) == storage.ErrImageUsedByContainer {
|
||||
msg, deleteErr = runtime.RemoveImage(ctx, img, c.Bool("force"))
|
||||
if deleteErr != nil {
|
||||
if errors.Cause(deleteErr) == storage.ErrImageUsedByContainer {
|
||||
fmt.Printf("A container associated with containers/storage, i.e. via Buildah, CRI-O, etc., may be associated with this image: %-12.12s\n", img.ID())
|
||||
}
|
||||
if lastError != nil {
|
||||
fmt.Fprintln(os.Stderr, lastError)
|
||||
}
|
||||
lastError = err
|
||||
lastError = deleteErr
|
||||
} else {
|
||||
fmt.Println(msg)
|
||||
}
|
||||
@ -108,6 +113,14 @@ func rmiCmd(c *cli.Context) error {
|
||||
}
|
||||
lastNumberofImages = len(imagesToDelete)
|
||||
imagesToDelete, err = runtime.ImageRuntime().GetImages()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
// If no images are left to delete or there is just one image left and it cannot be deleted,
|
||||
// lets break out and display the error
|
||||
if len(imagesToDelete) == 0 || (lastNumberofImages == 1 && lastError != nil) {
|
||||
break
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// Create image.image objects for deletion from user input.
|
||||
|
Reference in New Issue
Block a user