aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com>2019-02-15 22:05:13 +0100
committerGitHub <noreply@github.com>2019-02-15 22:05:13 +0100
commit0a521e139faa0c7f1d9b6c9e647c350c1b7c4e04 (patch)
treefb8fbf81b0a296bf1561253e38d2538ae7e2c7c9
parent9c1b08fd79012c12d478edb13f6057a0414762db (diff)
parent2e6fff1f5eaa55ce88799447fdcb8a4145b789c3 (diff)
downloadpodman-0a521e139faa0c7f1d9b6c9e647c350c1b7c4e04.tar.gz
podman-0a521e139faa0c7f1d9b6c9e647c350c1b7c4e04.tar.bz2
podman-0a521e139faa0c7f1d9b6c9e647c350c1b7c4e04.zip
Merge pull request #2335 from mheon/enable_detach_rm
Enable --rm with --detach
-rw-r--r--cmd/podman/create.go3
-rw-r--r--cmd/podman/start.go28
2 files changed, 12 insertions, 19 deletions
diff --git a/cmd/podman/create.go b/cmd/podman/create.go
index 7bfb070c7..e7efe7502 100644
--- a/cmd/podman/create.go
+++ b/cmd/podman/create.go
@@ -399,9 +399,6 @@ func parseCreateOpts(ctx context.Context, c *cliconfig.PodmanCommand, runtime *l
tty := c.Bool("tty")
- if c.Bool("detach") && c.Bool("rm") {
- return nil, errors.Errorf("--rm and --detach cannot be specified together")
- }
if c.Flag("cpu-period").Changed && c.Flag("cpus").Changed {
return nil, errors.Errorf("--cpu-period and --cpus cannot be set together")
}
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)
}