Sfoglia il codice sorgente

Implement docker diff with standalone client lib.

Signed-off-by: David Calavera <david.calavera@gmail.com>
David Calavera 9 anni fa
parent
commit
e562ac42f4
2 ha cambiato i file con 26 aggiunte e 10 eliminazioni
  1. 1 10
      api/client/diff.go
  2. 25 0
      api/client/lib/diff.go

+ 1 - 10
api/client/diff.go

@@ -1,10 +1,8 @@
 package client
 
 import (
-	"encoding/json"
 	"fmt"
 
-	"github.com/docker/docker/api/types"
 	Cli "github.com/docker/docker/cli"
 	"github.com/docker/docker/pkg/archive"
 	flag "github.com/docker/docker/pkg/mflag"
@@ -27,18 +25,11 @@ func (cli *DockerCli) CmdDiff(args ...string) error {
 		return fmt.Errorf("Container name cannot be empty")
 	}
 
-	serverResp, err := cli.call("GET", "/containers/"+cmd.Arg(0)+"/changes", nil, nil)
+	changes, err := cli.client.ContainerDiff(cmd.Arg(0))
 	if err != nil {
 		return err
 	}
 
-	defer serverResp.body.Close()
-
-	changes := []types.ContainerChange{}
-	if err := json.NewDecoder(serverResp.body).Decode(&changes); err != nil {
-		return err
-	}
-
 	for _, change := range changes {
 		var kind string
 		switch change.Kind {

+ 25 - 0
api/client/lib/diff.go

@@ -0,0 +1,25 @@
+package lib
+
+import (
+	"encoding/json"
+	"net/url"
+
+	"github.com/docker/docker/api/types"
+)
+
+// ContainerDiff shows differences in a container filesystem since it was started.
+func (cli *Client) ContainerDiff(containerID string) ([]types.ContainerChange, error) {
+	var changes []types.ContainerChange
+
+	serverResp, err := cli.GET("/containers/"+containerID+"/changes", url.Values{}, nil)
+	if err != nil {
+		return changes, err
+	}
+	defer serverResp.body.Close()
+
+	if err := json.NewDecoder(serverResp.body).Decode(&changes); err != nil {
+		return changes, err
+	}
+
+	return changes, nil
+}