summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com>2020-05-21 22:30:50 +0200
committerGitHub <noreply@github.com>2020-05-21 22:30:50 +0200
commitd6888516a2326f03e46c75a992f68713b0fb8aad (patch)
treeeb1fb6ce5273e18d00384c54c639730393bf48af
parentf6aa620b05a057ca8fb9631b66313c6220de50c2 (diff)
parentb0b153ddcd7421201bdea989612a7c8b658de73a (diff)
downloadpodman-d6888516a2326f03e46c75a992f68713b0fb8aad.tar.gz
podman-d6888516a2326f03e46c75a992f68713b0fb8aad.tar.bz2
podman-d6888516a2326f03e46c75a992f68713b0fb8aad.zip
Merge pull request #6326 from rhatdan/stop
Fix podman-remote stop --all to handle not running containers
-rw-r--r--pkg/domain/infra/tunnel/containers.go23
-rw-r--r--test/e2e/stop_test.go1
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))