mirror of
https://github.com/containers/podman.git
synced 2025-06-19 00:06:43 +08:00
Fix podman image unmount to only report images unmounted
Currently `podman image unmount` report every image that is mounted when it unmounts them. We should only report unmounted actually mounted images. Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
This commit is contained in:
@ -191,6 +191,15 @@ func (ir *ImageEngine) Unmount(ctx context.Context, nameOrIDs []string, options
|
|||||||
reports := []*entities.ImageUnmountReport{}
|
reports := []*entities.ImageUnmountReport{}
|
||||||
for _, img := range images {
|
for _, img := range images {
|
||||||
report := entities.ImageUnmountReport{Id: img.ID()}
|
report := entities.ImageUnmountReport{Id: img.ID()}
|
||||||
|
mounted, _, err := img.Mounted()
|
||||||
|
if err != nil {
|
||||||
|
// Errors will be caught in Unmount call below
|
||||||
|
// Default assumption to mounted
|
||||||
|
mounted = true
|
||||||
|
}
|
||||||
|
if !mounted {
|
||||||
|
continue
|
||||||
|
}
|
||||||
if err := img.Unmount(options.Force); err != nil {
|
if err := img.Unmount(options.Force); err != nil {
|
||||||
if options.All && errors.Cause(err) == storage.ErrLayerNotMounted {
|
if options.All && errors.Cause(err) == storage.ErrLayerNotMounted {
|
||||||
logrus.Debugf("Error umounting image %s, storage.ErrLayerNotMounted", img.ID())
|
logrus.Debugf("Error umounting image %s, storage.ErrLayerNotMounted", img.ID())
|
||||||
|
@ -348,6 +348,25 @@ var _ = Describe("Podman mount", func() {
|
|||||||
Expect(umount.ExitCode()).To(Equal(0))
|
Expect(umount.ExitCode()).To(Equal(0))
|
||||||
})
|
})
|
||||||
|
|
||||||
|
It("podman umount --all", func() {
|
||||||
|
setup := podmanTest.PodmanNoCache([]string{"pull", fedoraMinimal})
|
||||||
|
setup.WaitWithDefaultTimeout()
|
||||||
|
Expect(setup.ExitCode()).To(Equal(0))
|
||||||
|
|
||||||
|
setup = podmanTest.PodmanNoCache([]string{"pull", ALPINE})
|
||||||
|
setup.WaitWithDefaultTimeout()
|
||||||
|
Expect(setup.ExitCode()).To(Equal(0))
|
||||||
|
|
||||||
|
mount := podmanTest.Podman([]string{"image", "mount", fedoraMinimal})
|
||||||
|
mount.WaitWithDefaultTimeout()
|
||||||
|
Expect(mount.ExitCode()).To(Equal(0))
|
||||||
|
|
||||||
|
umount := podmanTest.Podman([]string{"image", "umount", "--all"})
|
||||||
|
umount.WaitWithDefaultTimeout()
|
||||||
|
Expect(umount.ExitCode()).To(Equal(0))
|
||||||
|
Expect(len(umount.OutputToStringArray())).To(Equal(1))
|
||||||
|
})
|
||||||
|
|
||||||
It("podman mount many", func() {
|
It("podman mount many", func() {
|
||||||
setup := podmanTest.PodmanNoCache([]string{"pull", fedoraMinimal})
|
setup := podmanTest.PodmanNoCache([]string{"pull", fedoraMinimal})
|
||||||
setup.WaitWithDefaultTimeout()
|
setup.WaitWithDefaultTimeout()
|
||||||
@ -402,6 +421,10 @@ var _ = Describe("Podman mount", func() {
|
|||||||
Expect(mount.ExitCode()).To(Equal(0))
|
Expect(mount.ExitCode()).To(Equal(0))
|
||||||
Expect(mount.OutputToString()).To(Equal(""))
|
Expect(mount.OutputToString()).To(Equal(""))
|
||||||
|
|
||||||
|
umount = podmanTest.PodmanNoCache([]string{"image", "umount", fedoraMinimal, ALPINE})
|
||||||
|
umount.WaitWithDefaultTimeout()
|
||||||
|
Expect(umount.ExitCode()).To(Equal(0))
|
||||||
|
|
||||||
mount1 = podmanTest.PodmanNoCache([]string{"image", "mount", "--all"})
|
mount1 = podmanTest.PodmanNoCache([]string{"image", "mount", "--all"})
|
||||||
mount1.WaitWithDefaultTimeout()
|
mount1.WaitWithDefaultTimeout()
|
||||||
Expect(mount1.ExitCode()).To(Equal(0))
|
Expect(mount1.ExitCode()).To(Equal(0))
|
||||||
|
Reference in New Issue
Block a user