From 74f650b8f2775d000d2c78aacfa29f8e565985ec Mon Sep 17 00:00:00 2001 From: David Calavera Date: Fri, 4 Dec 2015 12:44:12 -0500 Subject: [PATCH] Implement docker restart with standalone client lib. Signed-off-by: David Calavera Upstream-commit: b7de53634c3262997593d140c9b68683135b55e1 Component: engine --- .../engine/api/client/lib/container_restart.go | 17 +++++++++++++++++ components/engine/api/client/restart.go | 8 +------- 2 files changed, 18 insertions(+), 7 deletions(-) create mode 100644 components/engine/api/client/lib/container_restart.go diff --git a/components/engine/api/client/lib/container_restart.go b/components/engine/api/client/lib/container_restart.go new file mode 100644 index 0000000000..e9ff530438 --- /dev/null +++ b/components/engine/api/client/lib/container_restart.go @@ -0,0 +1,17 @@ +package lib + +import ( + "net/url" + "strconv" +) + +// ContainerRestart stops and starts a container again. +// It makes the daemon to wait for the container to be up again for +// a specific amount of time, given the timeout. +func (cli *Client) ContainerRestart(containerID string, timeout int) error { + var query url.Values + query.Set("t", strconv.Itoa(timeout)) + resp, err := cli.POST("/containers"+containerID+"/restart", query, nil, nil) + ensureReaderClosed(resp) + return err +} diff --git a/components/engine/api/client/restart.go b/components/engine/api/client/restart.go index 92c612926e..2bad7633e9 100644 --- a/components/engine/api/client/restart.go +++ b/components/engine/api/client/restart.go @@ -2,8 +2,6 @@ package client import ( "fmt" - "net/url" - "strconv" Cli "github.com/docker/docker/cli" flag "github.com/docker/docker/pkg/mflag" @@ -19,13 +17,9 @@ func (cli *DockerCli) CmdRestart(args ...string) error { cmd.ParseFlags(args, true) - v := url.Values{} - v.Set("t", strconv.Itoa(*nSeconds)) - var errNames []string for _, name := range cmd.Args() { - _, _, err := readBody(cli.call("POST", "/containers/"+name+"/restart?"+v.Encode(), nil, nil)) - if err != nil { + if err := cli.client.ContainerRestart(name, *nSeconds); err != nil { fmt.Fprintf(cli.err, "%s\n", err) errNames = append(errNames, name) } else {