Windows: Minimal docker top implementation

Signed-off-by: John Howard <jhoward@microsoft.com>
This commit is contained in:
John Howard
2016-03-20 15:58:23 -07:00
parent 9ea7e082ef
commit 52237787fa
7 changed files with 92 additions and 7 deletions

View File

@@ -1,12 +1,32 @@
package daemon
import (
"fmt"
"errors"
"strconv"
"github.com/docker/engine-api/types"
)
// ContainerTop is not supported on Windows and returns an error.
func (daemon *Daemon) ContainerTop(name string, psArgs string) (*types.ContainerProcessList, error) {
return nil, fmt.Errorf("Top is not supported on Windows")
// ContainerTop is a minimal implementation on Windows currently.
// TODO Windows: This needs more work, but needs platform API support.
// All we can currently return (particularly in the case of Hyper-V containers)
// is a PID and the command.
func (daemon *Daemon) ContainerTop(containerID string, psArgs string) (*types.ContainerProcessList, error) {
// It's really not an equivalent to linux 'ps' on Windows
if psArgs != "" {
return nil, errors.New("Windows does not support arguments to top")
}
s, err := daemon.containerd.Summary(containerID)
if err != nil {
return nil, err
}
procList := &types.ContainerProcessList{}
for _, v := range s {
procList.Titles = append(procList.Titles, strconv.Itoa(int(v.Pid))+" "+v.Command)
}
return procList, nil
}