mirror of
https://github.com/containers/podman.git
synced 2025-06-24 03:08:13 +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 {
|
func rmiCmd(c *cli.Context) error {
|
||||||
|
var (
|
||||||
|
lastError error
|
||||||
|
deleted bool
|
||||||
|
deleteErr error
|
||||||
|
msg string
|
||||||
|
)
|
||||||
|
|
||||||
ctx := getContext()
|
ctx := getContext()
|
||||||
if err := validateFlags(c, rmiFlags); err != nil {
|
if err := validateFlags(c, rmiFlags); err != nil {
|
||||||
return err
|
return err
|
||||||
@ -66,20 +73,18 @@ func rmiCmd(c *cli.Context) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
images := args[:]
|
images := args[:]
|
||||||
var lastError error
|
|
||||||
var deleted bool
|
|
||||||
|
|
||||||
removeImage := func(img *image.Image) {
|
removeImage := func(img *image.Image) {
|
||||||
deleted = true
|
deleted = true
|
||||||
msg, err := runtime.RemoveImage(ctx, img, c.Bool("force"))
|
msg, deleteErr = runtime.RemoveImage(ctx, img, c.Bool("force"))
|
||||||
if err != nil {
|
if deleteErr != nil {
|
||||||
if errors.Cause(err) == storage.ErrImageUsedByContainer {
|
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())
|
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 {
|
if lastError != nil {
|
||||||
fmt.Fprintln(os.Stderr, lastError)
|
fmt.Fprintln(os.Stderr, lastError)
|
||||||
}
|
}
|
||||||
lastError = err
|
lastError = deleteErr
|
||||||
} else {
|
} else {
|
||||||
fmt.Println(msg)
|
fmt.Println(msg)
|
||||||
}
|
}
|
||||||
@ -108,6 +113,14 @@ func rmiCmd(c *cli.Context) error {
|
|||||||
}
|
}
|
||||||
lastNumberofImages = len(imagesToDelete)
|
lastNumberofImages = len(imagesToDelete)
|
||||||
imagesToDelete, err = runtime.ImageRuntime().GetImages()
|
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 {
|
} else {
|
||||||
// Create image.image objects for deletion from user input.
|
// Create image.image objects for deletion from user input.
|
||||||
|
Reference in New Issue
Block a user