diff options
author | Daniel J Walsh <dwalsh@redhat.com> | 2021-09-12 08:51:53 -0400 |
---|---|---|
committer | Daniel J Walsh <dwalsh@redhat.com> | 2021-09-13 14:04:01 -0400 |
commit | ba2130ff55d1410407d56c65d5592ee40d20fae2 (patch) | |
tree | 9be9c9f4001f683a10c4a91d331ba3cadf64cdb8 | |
parent | cc9491447479844ffdd27ba1c310d7e0a5a59a79 (diff) | |
download | podman-ba2130ff55d1410407d56c65d5592ee40d20fae2.tar.gz podman-ba2130ff55d1410407d56c65d5592ee40d20fae2.tar.bz2 podman-ba2130ff55d1410407d56c65d5592ee40d20fae2.zip |
If container exits with 125 podman should exit with 125
fixes: https://github.com/containers/podman/issues/11540
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
-rw-r--r-- | cmd/podman/registry/registry.go | 4 | ||||
-rw-r--r-- | cmd/podman/root.go | 10 | ||||
-rw-r--r-- | cmd/podman/system/migrate.go | 5 | ||||
-rw-r--r-- | cmd/podman/system/renumber.go | 5 | ||||
-rw-r--r-- | cmd/podman/system/reset.go | 5 | ||||
-rw-r--r-- | test/e2e/run_exit_test.go | 7 |
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)) + }) }) |