From c57e62d00e209288e4f2734d32a3184b4abf4248 Mon Sep 17 00:00:00 2001 From: David Calavera Date: Thu, 3 Dec 2015 18:40:56 -0500 Subject: [PATCH] Implement docker kill with standalone client lib. Signed-off-by: David Calavera --- api/client/kill.go | 2 +- api/client/lib/kill.go | 12 ++++++++++++ api/client/start.go | 3 ++- 3 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 api/client/lib/kill.go diff --git a/api/client/kill.go b/api/client/kill.go index c4c355c74b..e71304644f 100644 --- a/api/client/kill.go +++ b/api/client/kill.go @@ -19,7 +19,7 @@ func (cli *DockerCli) CmdKill(args ...string) error { var errNames []string for _, name := range cmd.Args() { - if _, _, err := readBody(cli.call("POST", fmt.Sprintf("/containers/%s/kill?signal=%s", name, *signal), nil, nil)); err != nil { + if err := cli.client.ContainerKill(name, *signal); err != nil { fmt.Fprintf(cli.err, "%s\n", err) errNames = append(errNames, name) } else { diff --git a/api/client/lib/kill.go b/api/client/lib/kill.go new file mode 100644 index 0000000000..40ce9d383f --- /dev/null +++ b/api/client/lib/kill.go @@ -0,0 +1,12 @@ +package lib + +import "net/url" + +// ContainerKill terminates the container process but does not remove the container from the docker host. +func (cli *Client) ContainerKill(containerID, signal string) error { + var query url.Values + query.Set("signal", signal) + + _, err := cli.POST("/containers/"+containerID+"/kill", query, nil, nil) + return err +} diff --git a/api/client/start.go b/api/client/start.go index bff9c30ec8..b429639ede 100644 --- a/api/client/start.go +++ b/api/client/start.go @@ -34,7 +34,8 @@ func (cli *DockerCli) forwardAllSignals(cid string) chan os.Signal { fmt.Fprintf(cli.err, "Unsupported signal: %v. Discarding.\n", s) continue } - if _, _, err := readBody(cli.call("POST", fmt.Sprintf("/containers/%s/kill?signal=%s", cid, sig), nil, nil)); err != nil { + + if err := cli.client.ContainerKill(cid, sig); err != nil { logrus.Debugf("Error sending signal: %s", err) } }