summaryrefslogtreecommitdiff
path: root/cmd/podman/start.go
diff options
context:
space:
mode:
authorMatthew Heon <matthew.heon@gmail.com>2018-03-13 11:49:24 -0400
committerAtomic Bot <atomic-devel@projectatomic.io>2018-03-15 17:45:11 +0000
commit02a26c2934eea13799ae950827df54ec995312bc (patch)
tree6b98d4cb0ef0668c03b6ec2b78b45b771c7a81d7 /cmd/podman/start.go
parentff091cf731cb28e5d38ff843781115d352ea1530 (diff)
downloadpodman-02a26c2934eea13799ae950827df54ec995312bc.tar.gz
podman-02a26c2934eea13799ae950827df54ec995312bc.tar.bz2
podman-02a26c2934eea13799ae950827df54ec995312bc.zip
Implement container restarting
Signed-off-by: Matthew Heon <matthew.heon@gmail.com> Closes: #482 Approved by: baude
Diffstat (limited to 'cmd/podman/start.go')
-rw-r--r--cmd/podman/start.go24
1 files changed, 15 insertions, 9 deletions
diff --git a/cmd/podman/start.go b/cmd/podman/start.go
index 18e8f7766..243fe71e2 100644
--- a/cmd/podman/start.go
+++ b/cmd/podman/start.go
@@ -104,8 +104,18 @@ func startCmd(c *cli.Context) error {
if err != nil {
return errors.Wrapf(err, "unable to parse annotations in %s", ctr.ID())
}
+ err = ctr.Start()
+ if err != nil {
+ if lastError != nil {
+ fmt.Fprintln(os.Stderr, lastError)
+ }
+ lastError = errors.Wrapf(err, "unable to start %s", container)
+ continue
+ }
// We only get a terminal session if both a tty was specified in the spec and
// -a on the command-line was given.
+ // Must be done after Start() because we might be restarting
+ // If so, the attach socket might be removed & recreated
if attach && tty {
// We increment the wg counter because we need to do the attach
wg.Add(1)
@@ -121,14 +131,6 @@ func startCmd(c *cli.Context) error {
return errors.Errorf("unable to attach to container %s", ctr.ID())
}
}
- err = ctr.Start()
- if err != nil {
- if lastError != nil {
- fmt.Fprintln(os.Stderr, lastError)
- }
- lastError = errors.Wrapf(err, "unable to start %s", container)
- continue
- }
if !attach {
fmt.Println(ctr.ID())
}
@@ -141,7 +143,11 @@ func startCmd(c *cli.Context) error {
if lastError != nil {
fmt.Fprintln(os.Stderr, lastError)
}
- lastError = ctr.Cleanup()
+ // We can only do this if we attached
+ // Otherwise the container is probably still running
+ if attach && tty {
+ lastError = ctr.Cleanup()
+ }
}
return lastError
}