Browse Source

Implement docker kill with standalone client lib.

Signed-off-by: David Calavera <david.calavera@gmail.com>
David Calavera 9 years ago
parent
commit
c57e62d00e
3 changed files with 15 additions and 2 deletions
  1. 1 1
      api/client/kill.go
  2. 12 0
      api/client/lib/kill.go
  3. 2 1
      api/client/start.go

+ 1 - 1
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 {

+ 12 - 0
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
+}

+ 2 - 1
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)
 			}
 		}