summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com>2021-09-13 15:24:30 -0400
committerGitHub <noreply@github.com>2021-09-13 15:24:30 -0400
commit473f958e137eb9d8a3a3ef44cf3c17513243c18d (patch)
treed64e7a41dd760cb1cac2888fef97536279cef915
parent55a7f89fcae7ed8f16e10d4dae84cbdd3ecb1272 (diff)
parentba2130ff55d1410407d56c65d5592ee40d20fae2 (diff)
downloadpodman-473f958e137eb9d8a3a3ef44cf3c17513243c18d.tar.gz
podman-473f958e137eb9d8a3a3ef44cf3c17513243c18d.tar.bz2
podman-473f958e137eb9d8a3a3ef44cf3c17513243c18d.zip
Merge pull request #11545 from rhatdan/exitcodes
If container exits with 125 podman should exit with 125
-rw-r--r--cmd/podman/registry/registry.go4
-rw-r--r--cmd/podman/root.go10
-rw-r--r--cmd/podman/system/migrate.go5
-rw-r--r--cmd/podman/system/renumber.go5
-rw-r--r--cmd/podman/system/reset.go5
-rw-r--r--test/e2e/run_exit_test.go7
6 files changed, 20 insertions, 16 deletions
diff --git a/cmd/podman/registry/registry.go b/cmd/podman/registry/registry.go
index 607ef6d8e..e1ab14297 100644
--- a/cmd/podman/registry/registry.go
+++ b/cmd/podman/registry/registry.go
@@ -23,12 +23,10 @@ type CliCommand struct {
Parent *cobra.Command
}
-const ExecErrorCodeGeneric = 125
-
var (
cliCtx context.Context
containerEngine entities.ContainerEngine
- exitCode = ExecErrorCodeGeneric
+ exitCode = 0
imageEngine entities.ImageEngine
// Commands holds the cobra.Commands to present to the user, including
diff --git a/cmd/podman/root.go b/cmd/podman/root.go
index 371ded9a8..c798e6634 100644
--- a/cmd/podman/root.go
+++ b/cmd/podman/root.go
@@ -89,14 +89,10 @@ func init() {
func Execute() {
if err := rootCmd.ExecuteContext(registry.GetContextWithOptions()); err != nil {
+ if registry.GetExitCode() == 0 {
+ registry.SetExitCode(define.ExecErrorCodeGeneric)
+ }
fmt.Fprintln(os.Stderr, formatError(err))
- } else if registry.GetExitCode() == registry.ExecErrorCodeGeneric {
- // The exitCode modified from registry.ExecErrorCodeGeneric,
- // indicates an application
- // running inside of a container failed, as opposed to the
- // podman command failed. Must exit with that exit code
- // otherwise command exited correctly.
- registry.SetExitCode(0)
}
os.Exit(registry.GetExitCode())
}
diff --git a/cmd/podman/system/migrate.go b/cmd/podman/system/migrate.go
index b9dc272d7..d78ac7286 100644
--- a/cmd/podman/system/migrate.go
+++ b/cmd/podman/system/migrate.go
@@ -9,6 +9,7 @@ import (
"github.com/containers/common/pkg/completion"
"github.com/containers/podman/v3/cmd/podman/registry"
"github.com/containers/podman/v3/cmd/podman/validate"
+ "github.com/containers/podman/v3/libpod/define"
"github.com/containers/podman/v3/pkg/domain/entities"
"github.com/containers/podman/v3/pkg/domain/infra"
"github.com/spf13/cobra"
@@ -60,14 +61,14 @@ func migrate(cmd *cobra.Command, args []string) {
engine, err := infra.NewSystemEngine(entities.MigrateMode, registry.PodmanConfig())
if err != nil {
fmt.Println(err)
- os.Exit(125)
+ os.Exit(define.ExecErrorCodeGeneric)
}
defer engine.Shutdown(registry.Context())
err = engine.Migrate(registry.Context(), cmd.Flags(), registry.PodmanConfig(), migrateOptions)
if err != nil {
fmt.Println(err)
- os.Exit(125)
+ os.Exit(define.ExecErrorCodeGeneric)
}
os.Exit(0)
}
diff --git a/cmd/podman/system/renumber.go b/cmd/podman/system/renumber.go
index 83a873c2a..f27abf570 100644
--- a/cmd/podman/system/renumber.go
+++ b/cmd/podman/system/renumber.go
@@ -9,6 +9,7 @@ import (
"github.com/containers/common/pkg/completion"
"github.com/containers/podman/v3/cmd/podman/registry"
"github.com/containers/podman/v3/cmd/podman/validate"
+ "github.com/containers/podman/v3/libpod/define"
"github.com/containers/podman/v3/pkg/domain/entities"
"github.com/containers/podman/v3/pkg/domain/infra"
"github.com/spf13/cobra"
@@ -47,14 +48,14 @@ func renumber(cmd *cobra.Command, args []string) {
engine, err := infra.NewSystemEngine(entities.RenumberMode, registry.PodmanConfig())
if err != nil {
fmt.Println(err)
- os.Exit(125)
+ os.Exit(define.ExecErrorCodeGeneric)
}
defer engine.Shutdown(registry.Context())
err = engine.Renumber(registry.Context(), cmd.Flags(), registry.PodmanConfig())
if err != nil {
fmt.Println(err)
- os.Exit(125)
+ os.Exit(define.ExecErrorCodeGeneric)
}
os.Exit(0)
}
diff --git a/cmd/podman/system/reset.go b/cmd/podman/system/reset.go
index c64d09ed2..8a05bb09f 100644
--- a/cmd/podman/system/reset.go
+++ b/cmd/podman/system/reset.go
@@ -11,6 +11,7 @@ import (
"github.com/containers/common/pkg/completion"
"github.com/containers/podman/v3/cmd/podman/registry"
"github.com/containers/podman/v3/cmd/podman/validate"
+ "github.com/containers/podman/v3/libpod/define"
"github.com/containers/podman/v3/pkg/domain/entities"
"github.com/containers/podman/v3/pkg/domain/infra"
"github.com/sirupsen/logrus"
@@ -87,13 +88,13 @@ WARNING! This will remove:
engine, err := infra.NewSystemEngine(entities.ResetMode, registry.PodmanConfig())
if err != nil {
logrus.Error(err)
- os.Exit(125)
+ os.Exit(define.ExecErrorCodeGeneric)
}
defer engine.Shutdown(registry.Context())
if err := engine.Reset(registry.Context()); err != nil {
logrus.Error(err)
- os.Exit(125)
+ os.Exit(define.ExecErrorCodeGeneric)
}
os.Exit(0)
}
diff --git a/test/e2e/run_exit_test.go b/test/e2e/run_exit_test.go
index e86718577..6c39e5a1f 100644
--- a/test/e2e/run_exit_test.go
+++ b/test/e2e/run_exit_test.go
@@ -1,6 +1,7 @@
package integration
import (
+ "fmt"
"os"
"github.com/containers/podman/v3/libpod/define"
@@ -63,4 +64,10 @@ var _ = Describe("Podman run exit", func() {
result.WaitWithDefaultTimeout()
Expect(result).Should(Exit(50))
})
+
+ It("podman run exit 125", func() {
+ result := podmanTest.Podman([]string{"run", ALPINE, "sh", "-c", fmt.Sprintf("exit %d", define.ExecErrorCodeGeneric)})
+ result.WaitWithDefaultTimeout()
+ Expect(result).Should(Exit(define.ExecErrorCodeGeneric))
+ })
})