Merge pull request #27759 from Microsoft/jjh/fixstats

Windows: Fix stats CLI
This commit is contained in:
Sebastiaan van Stijn 2016-10-26 18:17:18 -07:00 committed by GitHub
commit 3b4084cb50
2 changed files with 28 additions and 16 deletions

View File

@ -80,6 +80,16 @@ func runStats(dockerCli *command.DockerCli, opts *statsOptions) error {
}
}
// Get the daemonOSType if not set already
if daemonOSType == "" {
svctx := context.Background()
sv, err := dockerCli.Client().ServerVersion(svctx)
if err != nil {
return err
}
daemonOSType = sv.Os
}
// waitFirst is a WaitGroup to wait first stat data's reach for each container
waitFirst := &sync.WaitGroup{}
@ -184,7 +194,6 @@ func runStats(dockerCli *command.DockerCli, opts *statsOptions) error {
Output: dockerCli.Out(),
Format: formatter.NewStatsFormat(f, daemonOSType),
}
cleanScreen := func() {
if !opts.noStream {
fmt.Fprint(dockerCli.Out(), "\033[2J")

View File

@ -10,15 +10,14 @@ import (
const (
winOSType = "windows"
defaultStatsTableFormat = "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.MemPerc}}\t{{.NetIO}}\t{{.BlockIO}}\t{{.PIDs}}"
winDefaultStatsTableFormat = "table {{.Container}}\t{{.CPUPerc}}\t{{{.MemUsage}}\t{.NetIO}}\t{{.BlockIO}}"
emptyStatsTableFormat = "Waiting for statistics..."
winDefaultStatsTableFormat = "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.NetIO}}\t{{.BlockIO}}"
containerHeader = "CONTAINER"
cpuPercHeader = "CPU %"
netIOHeader = "NET I/O"
blockIOHeader = "BLOCK I/O"
winMemPercHeader = "PRIV WORKING SET" // Used only on Window
memPercHeader = "MEM %" // Used only on Linux
winMemUseHeader = "PRIV WORKING SET" // Used only on Windows
memUseHeader = "MEM USAGE / LIMIT" // Used only on Linux
pidsHeader = "PIDS" // Used only on Linux
)
@ -151,18 +150,22 @@ func (c *containerStatsContext) CPUPerc() string {
}
func (c *containerStatsContext) MemUsage() string {
c.AddHeader(memUseHeader)
if c.s.IsInvalid || c.s.OSType == winOSType {
header := memUseHeader
if c.s.OSType == winOSType {
header = winMemUseHeader
}
c.AddHeader(header)
if c.s.IsInvalid {
return fmt.Sprintf("-- / --")
}
if c.s.OSType == winOSType {
return fmt.Sprintf("%s", units.BytesSize(c.s.Memory))
}
return fmt.Sprintf("%s / %s", units.BytesSize(c.s.Memory), units.BytesSize(c.s.MemoryLimit))
}
func (c *containerStatsContext) MemPerc() string {
header := memPercHeader
if c.s.OSType == winOSType {
header = winMemPercHeader
}
c.AddHeader(header)
if c.s.IsInvalid {
return fmt.Sprintf("--")