diff options
-rw-r--r-- | pkg/adapter/containers.go | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/pkg/adapter/containers.go b/pkg/adapter/containers.go index 525b1f29b..155454e21 100644 --- a/pkg/adapter/containers.go +++ b/pkg/adapter/containers.go @@ -22,6 +22,7 @@ import ( "github.com/containers/libpod/cmd/podman/shared/parse" "github.com/containers/libpod/libpod" "github.com/containers/libpod/libpod/define" + "github.com/containers/libpod/libpod/events" "github.com/containers/libpod/libpod/image" "github.com/containers/libpod/libpod/logs" "github.com/containers/libpod/pkg/adapter/shortcuts" @@ -417,8 +418,14 @@ func (r *LocalRuntime) Run(ctx context.Context, c *cliconfig.RunValues, exitCode if ecode, err := ctr.Wait(); err != nil { if errors.Cause(err) == define.ErrNoSuchCtr { - logrus.Errorf("Cannot get exit code: %v", err) - exitCode = 127 + // Check events + event, err := r.Runtime.GetLastContainerEvent(ctr.ID(), events.Exited) + if err != nil { + logrus.Errorf("Cannot get exit code: %v", err) + exitCode = 127 + } else { + exitCode = event.ContainerExitCode + } } } else { exitCode = int(ecode) @@ -622,8 +629,14 @@ func (r *LocalRuntime) Start(ctx context.Context, c *cliconfig.StartValues, sigP if ecode, err := ctr.Wait(); err != nil { if errors.Cause(err) == define.ErrNoSuchCtr { - logrus.Errorf("Cannot get exit code: %v", err) - exitCode = 127 + // Check events + event, err := r.Runtime.GetLastContainerEvent(ctr.ID(), events.Exited) + if err != nil { + logrus.Errorf("Cannot get exit code: %v", err) + exitCode = 127 + } else { + exitCode = event.ContainerExitCode + } } } else { exitCode = int(ecode) |