From e562ac42f445f01625f2e1fc220d1aae3a28b8e1 Mon Sep 17 00:00:00 2001 From: David Calavera Date: Thu, 3 Dec 2015 14:18:35 -0500 Subject: [PATCH] Implement docker diff with standalone client lib. Signed-off-by: David Calavera --- api/client/diff.go | 11 +---------- api/client/lib/diff.go | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 10 deletions(-) create mode 100644 api/client/lib/diff.go diff --git a/api/client/diff.go b/api/client/diff.go index 24350a04a0..f180e00172 100644 --- a/api/client/diff.go +++ b/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 { diff --git a/api/client/lib/diff.go b/api/client/lib/diff.go new file mode 100644 index 0000000000..f0d027afc1 --- /dev/null +++ b/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 +}