mirror of https://github.com/docker/cli.git
Windows: stats support
Signed-off-by: John Howard <jhoward@microsoft.com>
This commit is contained in:
parent
acb1fc424b
commit
86c86fc166
|
@ -1,15 +1,15 @@
|
||||||
package client
|
package client
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"io"
|
|
||||||
"net/url"
|
"net/url"
|
||||||
|
|
||||||
|
"github.com/docker/docker/api/types"
|
||||||
"golang.org/x/net/context"
|
"golang.org/x/net/context"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ContainerStats returns near realtime stats for a given container.
|
// ContainerStats returns near realtime stats for a given container.
|
||||||
// It's up to the caller to close the io.ReadCloser returned.
|
// It's up to the caller to close the io.ReadCloser returned.
|
||||||
func (cli *Client) ContainerStats(ctx context.Context, containerID string, stream bool) (io.ReadCloser, error) {
|
func (cli *Client) ContainerStats(ctx context.Context, containerID string, stream bool) (types.ContainerStats, error) {
|
||||||
query := url.Values{}
|
query := url.Values{}
|
||||||
query.Set("stream", "0")
|
query.Set("stream", "0")
|
||||||
if stream {
|
if stream {
|
||||||
|
@ -18,7 +18,9 @@ func (cli *Client) ContainerStats(ctx context.Context, containerID string, strea
|
||||||
|
|
||||||
resp, err := cli.get(ctx, "/containers/"+containerID+"/stats", query, nil)
|
resp, err := cli.get(ctx, "/containers/"+containerID+"/stats", query, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return types.ContainerStats{}, err
|
||||||
}
|
}
|
||||||
return resp.body, err
|
|
||||||
|
osType := GetDockerOS(resp.header.Get("Server"))
|
||||||
|
return types.ContainerStats{Body: resp.body, OSType: osType}, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,12 +54,12 @@ func TestContainerStats(t *testing.T) {
|
||||||
}, nil
|
}, nil
|
||||||
}),
|
}),
|
||||||
}
|
}
|
||||||
body, err := client.ContainerStats(context.Background(), "container_id", c.stream)
|
resp, err := client.ContainerStats(context.Background(), "container_id", c.stream)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
defer body.Close()
|
defer resp.Body.Close()
|
||||||
content, err := ioutil.ReadAll(body)
|
content, err := ioutil.ReadAll(resp.Body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,7 +39,7 @@ func (cli *Client) ImageBuild(ctx context.Context, buildContext io.Reader, optio
|
||||||
return types.ImageBuildResponse{}, err
|
return types.ImageBuildResponse{}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
osType := getDockerOS(serverResp.header.Get("Server"))
|
osType := GetDockerOS(serverResp.header.Get("Server"))
|
||||||
|
|
||||||
return types.ImageBuildResponse{
|
return types.ImageBuildResponse{
|
||||||
Body: serverResp.body,
|
Body: serverResp.body,
|
||||||
|
@ -113,7 +113,8 @@ func imageBuildOptionsToQuery(options types.ImageBuildOptions) (url.Values, erro
|
||||||
return query, nil
|
return query, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func getDockerOS(serverHeader string) string {
|
// GetDockerOS returns the operating system based on the server header from the daemon.
|
||||||
|
func GetDockerOS(serverHeader string) string {
|
||||||
var osType string
|
var osType string
|
||||||
matches := headerRegexp.FindStringSubmatch(serverHeader)
|
matches := headerRegexp.FindStringSubmatch(serverHeader)
|
||||||
if len(matches) > 0 {
|
if len(matches) > 0 {
|
||||||
|
|
|
@ -222,7 +222,7 @@ func TestGetDockerOS(t *testing.T) {
|
||||||
"Foo/v1.22 (bar)": "",
|
"Foo/v1.22 (bar)": "",
|
||||||
}
|
}
|
||||||
for header, os := range cases {
|
for header, os := range cases {
|
||||||
g := getDockerOS(header)
|
g := GetDockerOS(header)
|
||||||
if g != os {
|
if g != os {
|
||||||
t.Fatalf("Expected %s, got %s", os, g)
|
t.Fatalf("Expected %s, got %s", os, g)
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,7 +51,7 @@ type ContainerAPIClient interface {
|
||||||
ContainerResize(ctx context.Context, container string, options types.ResizeOptions) error
|
ContainerResize(ctx context.Context, container string, options types.ResizeOptions) error
|
||||||
ContainerRestart(ctx context.Context, container string, timeout *time.Duration) error
|
ContainerRestart(ctx context.Context, container string, timeout *time.Duration) error
|
||||||
ContainerStatPath(ctx context.Context, container, path string) (types.ContainerPathStat, error)
|
ContainerStatPath(ctx context.Context, container, path string) (types.ContainerPathStat, error)
|
||||||
ContainerStats(ctx context.Context, container string, stream bool) (io.ReadCloser, error)
|
ContainerStats(ctx context.Context, container string, stream bool) (types.ContainerStats, error)
|
||||||
ContainerStart(ctx context.Context, container string, options types.ContainerStartOptions) error
|
ContainerStart(ctx context.Context, container string, options types.ContainerStartOptions) error
|
||||||
ContainerStop(ctx context.Context, container string, timeout *time.Duration) error
|
ContainerStop(ctx context.Context, container string, timeout *time.Duration) error
|
||||||
ContainerTop(ctx context.Context, container string, arguments []string) (types.ContainerProcessList, error)
|
ContainerTop(ctx context.Context, container string, arguments []string) (types.ContainerProcessList, error)
|
||||||
|
|
Loading…
Reference in New Issue