diff options
author | baude <bbaude@redhat.com> | 2018-01-10 07:51:02 -0600 |
---|---|---|
committer | Atomic Bot <atomic-devel@projectatomic.io> | 2018-01-11 21:27:26 +0000 |
commit | 9adcb85929ac9536e967907c6a6057046a98ab16 (patch) | |
tree | 88aeff6abd88055048f9d157cde67a01cbd2e2a3 | |
parent | dd0d35deb098b63f8c5be7ef9d8d63c16760221b (diff) | |
download | podman-9adcb85929ac9536e967907c6a6057046a98ab16.tar.gz podman-9adcb85929ac9536e967907c6a6057046a98ab16.tar.bz2 podman-9adcb85929ac9536e967907c6a6057046a98ab16.zip |
podman run container id to file
podman run --cidfile /tmp/foo writes the container's id
to a file.
Signed-off-by: baude <bbaude@redhat.com>
Closes: #205
Approved by: rhatdan
-rw-r--r-- | cmd/podman/create.go | 15 | ||||
-rw-r--r-- | cmd/podman/run.go | 12 | ||||
-rw-r--r-- | libpod/util.go | 2 | ||||
-rw-r--r-- | test/podman_run.bats | 9 |
4 files changed, 31 insertions, 7 deletions
diff --git a/cmd/podman/create.go b/cmd/podman/create.go index ce06ac51b..076e8c56e 100644 --- a/cmd/podman/create.go +++ b/cmd/podman/create.go @@ -154,6 +154,12 @@ func createCmd(c *cli.Context) error { return err } + if c.String("cidfile") != "" { + if err := libpod.WriteFile("", c.String("cidfile")); err != nil { + return errors.Wrapf(err, "unable to write cidfile %s", c.String("cidfile")) + } + } + runtime, err := getRuntime(c) if err != nil { return errors.Wrapf(err, "error creating libpod runtime") @@ -196,11 +202,12 @@ func createCmd(c *cli.Context) error { logrus.Debug("new container created ", ctr.ID()) if c.String("cidfile") != "" { - libpod.WriteFile(ctr.ID(), c.String("cidfile")) - } else { - fmt.Printf("%s\n", ctr.ID()) + err := libpod.WriteFile(ctr.ID(), c.String("cidfile")) + if err != nil { + logrus.Error(err) + } } - + fmt.Printf("%s\n", ctr.ID()) return nil } diff --git a/cmd/podman/run.go b/cmd/podman/run.go index 07af4a6a2..d9bc00b78 100644 --- a/cmd/podman/run.go +++ b/cmd/podman/run.go @@ -29,6 +29,13 @@ func runCmd(c *cli.Context) error { if err := validateFlags(c, createFlags); err != nil { return err } + + if c.String("cidfile") != "" { + if err := libpod.WriteFile("", c.String("cidfile")); err != nil { + return errors.Wrapf(err, "unable to write cidfile %s", c.String("cidfile")) + } + } + runtime, err := getRuntime(c) if err != nil { return errors.Wrapf(err, "error creating libpod runtime") @@ -84,8 +91,9 @@ func runCmd(c *cli.Context) error { logrus.Debug("new container created ", ctr.ID()) if c.String("cidfile") != "" { - libpod.WriteFile(ctr.ID(), c.String("cidfile")) - return nil + if err := libpod.WriteFile(ctr.ID(), c.String("cidfile")); err != nil { + logrus.Error(err) + } } // Create a bool channel to track that the console socket attach diff --git a/libpod/util.go b/libpod/util.go index de5c3ff31..1a033a940 100644 --- a/libpod/util.go +++ b/libpod/util.go @@ -24,7 +24,7 @@ const ( func WriteFile(content string, path string) error { baseDir := filepath.Dir(path) if baseDir != "" { - if _, err := os.Stat(path); err != nil { + if _, err := os.Stat(baseDir); err != nil { return err } } diff --git a/test/podman_run.bats b/test/podman_run.bats index 6ffc47ef3..7066000d0 100644 --- a/test/podman_run.bats +++ b/test/podman_run.bats @@ -132,3 +132,12 @@ IMAGE="docker.io/library/fedora:latest" echo $output [ "$status" -eq 0 ] } + +@test "podman run with cidfile" { + run bash -c "${PODMAN_BINARY} ${PODMAN_OPTIONS} run --cidfile /tmp/cidfile $BB ls" + echo "$output" + [ "$status" -eq 0 ] + run rm /tmp/cidfile + echo "$output" + [ "$status" -eq 0 ] +} |