From b0b153ddcd7421201bdea989612a7c8b658de73a Mon Sep 17 00:00:00 2001 From: Daniel J Walsh Date: Thu, 21 May 2020 15:00:38 -0400 Subject: Fix podman-remote stop --all to handle not running containers Signed-off-by: Daniel J Walsh --- pkg/domain/infra/tunnel/containers.go | 23 +++++++++++++++++++---- test/e2e/stop_test.go | 1 - 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/pkg/domain/infra/tunnel/containers.go b/pkg/domain/infra/tunnel/containers.go index d02c54e76..5b2c779b7 100644 --- a/pkg/domain/infra/tunnel/containers.go +++ b/pkg/domain/infra/tunnel/containers.go @@ -87,10 +87,25 @@ func (ic *ContainerEngine) ContainerStop(ctx context.Context, namesOrIds []strin } for _, c := range ctrs { report := entities.StopReport{Id: c.ID} - report.Err = containers.Stop(ic.ClientCxt, c.ID, &options.Timeout) - // TODO we need to associate errors returned by http with common - // define.errors so that we can equity tests. this will allow output - // to be the same as the native client + if err = containers.Stop(ic.ClientCxt, c.ID, &options.Timeout); err != nil { + // These first two are considered non-fatal under the right conditions + if errors.Cause(err).Error() == define.ErrCtrStopped.Error() { + logrus.Debugf("Container %s is already stopped", c.ID) + reports = append(reports, &report) + continue + } else if options.All && errors.Cause(err).Error() == define.ErrCtrStateInvalid.Error() { + logrus.Debugf("Container %s is not running, could not stop", c.ID) + reports = append(reports, &report) + continue + } + + // TODO we need to associate errors returned by http with common + // define.errors so that we can equity tests. this will allow output + // to be the same as the native client + report.Err = err + reports = append(reports, &report) + continue + } reports = append(reports, &report) } return reports, nil diff --git a/test/e2e/stop_test.go b/test/e2e/stop_test.go index 8e49e3bd0..cd78a54e1 100644 --- a/test/e2e/stop_test.go +++ b/test/e2e/stop_test.go @@ -217,7 +217,6 @@ var _ = Describe("Podman stop", func() { }) It("podman stop all containers with one created", func() { - Skip(v2remotefail) session := podmanTest.RunTopContainer("test1") session.WaitWithDefaultTimeout() Expect(session.ExitCode()).To(Equal(0)) -- cgit v1.2.3-54-g00ecf