diff options
Diffstat (limited to 'cmd')
-rw-r--r-- | cmd/podman/top.go | 190 |
1 files changed, 3 insertions, 187 deletions
diff --git a/cmd/podman/top.go b/cmd/podman/top.go index 5b1dbd05c..6aff25a71 100644 --- a/cmd/podman/top.go +++ b/cmd/podman/top.go @@ -1,22 +1,16 @@ package main import ( - "encoding/json" "fmt" - "strings" "github.com/pkg/errors" - "github.com/projectatomic/libpod/cmd/podman/formats" "github.com/projectatomic/libpod/libpod" "github.com/urfave/cli" ) var ( topFlags = []cli.Flag{ - cli.StringFlag{ - Name: "format", - Usage: "Change the output to JSON", - }, LatestFlag, + LatestFlag, } topDescription = ` podman top @@ -38,14 +32,6 @@ var ( func topCmd(c *cli.Context) error { var container *libpod.Container var err error - doJSON := false - if c.IsSet("format") { - if strings.ToUpper(c.String("format")) == "JSON" { - doJSON = true - } else { - return errors.Errorf("only 'json' is supported for a format option") - } - } args := c.Args() var psArgs []string psOpts := []string{"-o", "uid,pid,ppid,c,stime,tname,time,cmd"} @@ -88,178 +74,8 @@ func topCmd(c *cli.Context) error { if err != nil { return err } - headers := getHeaders(results[0]) - format := genTopFormat(headers) - var out formats.Writer - psParams, err := psDataToPSParams(results[1:], headers) - if err != nil { - return errors.Wrap(err, "unable to convert ps data to proper structure") - } - if doJSON { - out = formats.JSONStructArray{Output: topToGeneric(psParams)} - } else { - out = formats.StdoutTemplateArray{Output: topToGeneric(psParams), Template: format, Fields: createTopHeaderMap(headers)} + for _, line := range results { + fmt.Println(line) } - formats.Writer(out).Out() return nil } - -func getHeaders(s string) []string { - var headers []string - tmpHeaders := strings.Fields(s) - for _, header := range tmpHeaders { - headers = append(headers, strings.Replace(header, "%", "", -1)) - } - return headers -} - -func genTopFormat(headers []string) string { - format := "table " - for _, header := range headers { - format = fmt.Sprintf("%s{{.%s}}\t", format, header) - } - return format -} - -// imagesToGeneric creates an empty array of interfaces for output -func topToGeneric(templParams []PSParams) (genericParams []interface{}) { - for _, v := range templParams { - genericParams = append(genericParams, interface{}(v)) - } - return -} - -// generate the header based on the template provided -func createTopHeaderMap(v []string) map[string]string { - values := make(map[string]string) - for _, key := range v { - value := key - if value == "CPU" { - value = "%CPU" - } else if value == "MEM" { - value = "%MEM" - } - values[key] = strings.ToUpper(splitCamelCase(value)) - } - return values -} - -// PSDataToParams converts a string array of data and its headers to an -// arra if PSParams -func psDataToPSParams(data []string, headers []string) ([]PSParams, error) { - var params []PSParams - for _, line := range data { - tmpMap := make(map[string]string) - tmpArray := strings.Fields(line) - if len(tmpArray) == 0 { - continue - } - for index, v := range tmpArray { - header := headers[index] - tmpMap[header] = v - } - jsonData, _ := json.Marshal(tmpMap) - var r PSParams - err := json.Unmarshal(jsonData, &r) - if err != nil { - return []PSParams{}, err - } - params = append(params, r) - } - return params, nil -} - -//PSParams is a list of options that the command line ps recognizes -type PSParams struct { - CPU string - MEM string - COMMAND string - BLOCKED string - START string - TIME string - C string - CAUGHT string - CGROUP string - CLSCLS string - CLS string - CMD string - CP string - DRS string - EGID string - EGROUP string - EIP string - ESP string - ELAPSED string - EUIDE string - USER string - F string - FGID string - FGROUP string - FUID string - FUSER string - GID string - GROUP string - IGNORED string - IPCNS string - LABEL string - STARTED string - SESSION string - LWP string - MACHINE string - MAJFLT string - MINFLT string - MNTNS string - NETNS string - NI string - NLWP string - OWNER string - PENDING string - PGID string - PGRP string - PID string - PIDNS string - POL string - PPID string - PRI string - PSR string - RGID string - RGROUP string - RSS string - RSZ string - RTPRIO string - RUID string - RUSER string - S string - SCH string - SEAT string - SESS string - P string - SGID string - SGROUP string - SID string - SIZE string - SLICE string - SPID string - STACKP string - STIME string - SUID string - SUPGID string - SUPGRP string - SUSER string - SVGID string - SZ string - TGID string - THCNT string - TID string - TTY string - TPGID string - TRS string - TT string - UID string - UNIT string - USERNS string - UTSNS string - UUNIT string - VSZ string - WCHAN string -} |