diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2019-02-15 22:05:13 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-02-15 22:05:13 +0100 |
commit | 0a521e139faa0c7f1d9b6c9e647c350c1b7c4e04 (patch) | |
tree | fb8fbf81b0a296bf1561253e38d2538ae7e2c7c9 /cmd/podman/start.go | |
parent | 9c1b08fd79012c12d478edb13f6057a0414762db (diff) | |
parent | 2e6fff1f5eaa55ce88799447fdcb8a4145b789c3 (diff) | |
download | podman-0a521e139faa0c7f1d9b6c9e647c350c1b7c4e04.tar.gz podman-0a521e139faa0c7f1d9b6c9e647c350c1b7c4e04.tar.bz2 podman-0a521e139faa0c7f1d9b6c9e647c350c1b7c4e04.zip |
Merge pull request #2335 from mheon/enable_detach_rm
Enable --rm with --detach
Diffstat (limited to 'cmd/podman/start.go')
-rw-r--r-- | cmd/podman/start.go | 28 |
1 files changed, 12 insertions, 16 deletions
diff --git a/cmd/podman/start.go b/cmd/podman/start.go index 3a606d662..1f671aefd 100644 --- a/cmd/podman/start.go +++ b/cmd/podman/start.go @@ -1,14 +1,12 @@ package main import ( - "encoding/json" "fmt" "os" "github.com/containers/libpod/cmd/podman/cliconfig" "github.com/containers/libpod/cmd/podman/libpodruntime" "github.com/containers/libpod/libpod" - cc "github.com/containers/libpod/pkg/spec" "github.com/pkg/errors" "github.com/sirupsen/logrus" "github.com/spf13/cobra" @@ -124,12 +122,22 @@ func startCmd(c *cliconfig.StartValues) error { } if ecode, err := ctr.Wait(); err != nil { - logrus.Errorf("unable to get exit code of container %s: %q", ctr.ID(), err) + if errors.Cause(err) == libpod.ErrNoSuchCtr { + // The container may have been removed + // Go looking for an exit file + ctrExitCode, err := readExitFile(runtime.GetConfig().TmpDir, ctr.ID()) + if err != nil { + logrus.Errorf("Cannot get exit code: %v", err) + exitCode = 127 + } else { + exitCode = ctrExitCode + } + } } else { exitCode = int(ecode) } - return ctr.Cleanup(ctx) + return nil } if ctrRunning { fmt.Println(ctr.ID()) @@ -137,18 +145,6 @@ func startCmd(c *cliconfig.StartValues) error { } // Handle non-attach start if err := ctr.Start(ctx); err != nil { - var createArtifact cc.CreateConfig - artifact, artifactErr := ctr.GetArtifact("create-config") - if artifactErr == nil { - if jsonErr := json.Unmarshal(artifact, &createArtifact); jsonErr != nil { - logrus.Errorf("unable to detect if container %s should be deleted", ctr.ID()) - } - if createArtifact.Rm { - if rmErr := runtime.RemoveContainer(ctx, ctr, true, false); rmErr != nil { - logrus.Errorf("unable to remove container %s after it failed to start", ctr.ID()) - } - } - } if lastError != nil { fmt.Fprintln(os.Stderr, lastError) } |