diff options
author | Nalin Dahyabhai <nalin@redhat.com> | 2021-04-14 13:35:43 -0400 |
---|---|---|
committer | Nalin Dahyabhai <nalin@redhat.com> | 2021-04-20 15:44:39 -0400 |
commit | fd9dd7065d440f9d44d51ddccbda20c01ccdc1aa (patch) | |
tree | 70ff833a098443b7993195c41b67b3741c7b6876 /libpod | |
parent | 2a32fc3e403e4b70fb68fda564cbdf33b7dd5326 (diff) | |
download | podman-fd9dd7065d440f9d44d51ddccbda20c01ccdc1aa.tar.gz podman-fd9dd7065d440f9d44d51ddccbda20c01ccdc1aa.tar.bz2 podman-fd9dd7065d440f9d44d51ddccbda20c01ccdc1aa.zip |
rmi: don't break when the image is missing a manifest
In libpod/image.Image.Remove(), if the attempt to find the image's
parent fails for any reason, log a warning and proceed as though it
didn't have one instead of failing, which would leave us unable to
remove the image without resetting everything.
In libpod/Runtime.RemoveImage(), if we can't determine if an image has
children, log a warning, and assume that it doesn't have any instead of
failing, which would leave us unable to remove the image without
resetting everything.
In pkg/domain/infra/abi.ImageEngine.Remove(), when attempting to remove
all images, if we encounter an error checking if a given image has
children, log a warning, and assume that it doesn't have any instead of
failing, which would leave us unable to remove the image without
resetting everything.
Signed-off-by: Nalin Dahyabhai <nalin@redhat.com>
Diffstat (limited to 'libpod')
-rw-r--r-- | libpod/image/image.go | 3 | ||||
-rw-r--r-- | libpod/runtime_img.go | 3 |
2 files changed, 4 insertions, 2 deletions
diff --git a/libpod/image/image.go b/libpod/image/image.go index 12dc22360..3c9fb3a37 100644 --- a/libpod/image/image.go +++ b/libpod/image/image.go @@ -617,7 +617,8 @@ func (i *Image) TopLayer() string { func (i *Image) Remove(ctx context.Context, force bool) error { parent, err := i.GetParent(ctx) if err != nil { - return err + logrus.Warnf("error determining parent of image: %v, ignoring the error", err) + parent = nil } if _, err := i.imageruntime.store.DeleteImage(i.ID(), true); err != nil { return err diff --git a/libpod/runtime_img.go b/libpod/runtime_img.go index 3588467a5..2b101c01f 100644 --- a/libpod/runtime_img.go +++ b/libpod/runtime_img.go @@ -66,7 +66,8 @@ func (r *Runtime) RemoveImage(ctx context.Context, img *image.Image, force bool) hasChildren, err := img.IsParent(ctx) if err != nil { - return nil, err + logrus.Warnf("error determining if an image is a parent: %v, ignoring the error", err) + hasChildren = false } if (len(img.Names()) > 1 && !img.InputIsID()) || hasChildren { |