From b00ae4b28a7436582ddd85d90ec7bcecfd1a6ecd Mon Sep 17 00:00:00 2001 From: Gaetan de Villele Date: Thu, 21 May 2015 10:37:51 -0700 Subject: [PATCH 1/2] add ListContainersWithOptions() to allow listing with additional options --- dockerclient.go | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/dockerclient.go b/dockerclient.go index fe2a648..fe2bfd5 100644 --- a/dockerclient.go +++ b/dockerclient.go @@ -157,6 +157,48 @@ func (client *DockerClient) ListContainers(all bool, size bool, filters string) return ret, nil } +// ListContainersWithOptions behaves like ListContainers but allowing additionnal options +func (client *DockerClient) ListContainersWithOptions(all, size bool, limit, since, before, filters string) ([]Container, error) { + argAll := 0 + if all == true { + argAll = 1 + } + showSize := 0 + if size == true { + showSize = 1 + } + + uri := fmt.Sprintf("/%s/containers/json?all=%d&size=%d", APIVersion, argAll, showSize) + + if limit != "" { + uri += "&limit=" + limit + } + + if since != "" { + uri += "&since=" + since + } + + if before != "" { + uri += "&before=" + before + } + + if filters != "" { + uri += "&filters=" + filters + } + + data, err := client.doRequest("GET", uri, nil, nil) + if err != nil { + return nil, err + } + ret := []Container{} + err = json.Unmarshal(data, &ret) + if err != nil { + return nil, err + } + return ret, nil + return nil, nil +} + func (client *DockerClient) InspectContainer(id string) (*ContainerInfo, error) { uri := fmt.Sprintf("/%s/containers/%s/json", APIVersion, id) data, err := client.doRequest("GET", uri, nil, nil) From 33225cb9c59c6cc4452491679abef80496c54e13 Mon Sep 17 00:00:00 2001 From: Gaetan de Villele Date: Thu, 21 May 2015 12:22:02 -0700 Subject: [PATCH 2/2] ListContainers() now simply uses ListContainersWithOptions() --- dockerclient.go | 26 +------------------------- 1 file changed, 1 insertion(+), 25 deletions(-) diff --git a/dockerclient.go b/dockerclient.go index fe2bfd5..364304c 100644 --- a/dockerclient.go +++ b/dockerclient.go @@ -131,30 +131,7 @@ func (client *DockerClient) Info() (*Info, error) { } func (client *DockerClient) ListContainers(all bool, size bool, filters string) ([]Container, error) { - argAll := 0 - if all == true { - argAll = 1 - } - showSize := 0 - if size == true { - showSize = 1 - } - uri := fmt.Sprintf("/%s/containers/json?all=%d&size=%d", APIVersion, argAll, showSize) - - if filters != "" { - uri += "&filters=" + filters - } - - data, err := client.doRequest("GET", uri, nil, nil) - if err != nil { - return nil, err - } - ret := []Container{} - err = json.Unmarshal(data, &ret) - if err != nil { - return nil, err - } - return ret, nil + return client.ListContainersWithOptions(all, size, "", "", "", filters) } // ListContainersWithOptions behaves like ListContainers but allowing additionnal options @@ -196,7 +173,6 @@ func (client *DockerClient) ListContainersWithOptions(all, size bool, limit, sin return nil, err } return ret, nil - return nil, nil } func (client *DockerClient) InspectContainer(id string) (*ContainerInfo, error) {