Merge pull request #8007 from ashley-cui/formatting

Restore --format: container stats & pod ps
This commit is contained in:
OpenShift Merge Robot
2020-10-13 20:36:46 +02:00
committed by GitHub
4 changed files with 35 additions and 25 deletions

View File

@ -3,12 +3,13 @@ package containers
import (
"fmt"
"os"
"strings"
"text/tabwriter"
"text/template"
tm "github.com/buger/goterm"
"github.com/containers/podman/v2/cmd/podman/parse"
"github.com/containers/podman/v2/cmd/podman/registry"
"github.com/containers/podman/v2/cmd/podman/report"
"github.com/containers/podman/v2/cmd/podman/validate"
"github.com/containers/podman/v2/libpod/define"
"github.com/containers/podman/v2/pkg/cgroups"
@ -58,9 +59,8 @@ type statsOptionsCLI struct {
}
var (
statsOptions statsOptionsCLI
defaultStatsRow = "{{.ID}}\t{{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.MemPerc}}\t{{.NetIO}}\t{{.BlockIO}}\t{{.PIDS}}\n"
defaultStatsHeader = "ID\tNAME\tCPU %\tMEM USAGE / LIMIT\tMEM %\tNET IO\tBLOCK IO\tPIDS\n"
statsOptions statsOptionsCLI
defaultStatsRow = "{{.ID}}\t{{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.MemPerc}}\t{{.NetIO}}\t{{.BlockIO}}\t{{.PIDS}}\n"
)
func statFlags(flags *pflag.FlagSet) {
@ -139,7 +139,16 @@ func stats(cmd *cobra.Command, args []string) error {
}
func outputStats(reports []define.ContainerStats) error {
if len(statsOptions.Format) < 1 && !statsOptions.NoReset {
headers := report.Headers(define.ContainerStats{}, map[string]string{
"ID": "ID",
"CPUPerc": "CPU %",
"MemUsage": "MEM USAGE / LIMIT",
"MemPerc": "MEM %",
"NetIO": "NET IO",
"BlockIO": "BLOCK IO",
"PIDS": "PIDS",
})
if !statsOptions.NoReset {
tm.Clear()
tm.MoveCursor(1, 1)
tm.Flush()
@ -148,25 +157,27 @@ func outputStats(reports []define.ContainerStats) error {
for _, r := range reports {
stats = append(stats, containerStats{r})
}
if statsOptions.Format == "json" {
if parse.MatchesJSONFormat(statsOptions.Format) {
return outputJSON(stats)
}
format := defaultStatsRow
if len(statsOptions.Format) > 0 {
format = statsOptions.Format
if !strings.HasSuffix(format, "\n") {
format += "\n"
}
format = report.NormalizeFormat(statsOptions.Format)
} else if len(statsOptions.Format) < 1 {
format = defaultStatsRow
}
format = "{{range . }}" + format + "{{end}}"
if len(statsOptions.Format) < 1 {
format = defaultStatsHeader + format
}
tmpl, err := template.New("stats").Parse(format)
if err != nil {
return err
}
w := tabwriter.NewWriter(os.Stdout, 8, 2, 2, ' ', 0)
if len(statsOptions.Format) < 1 {
if err := tmpl.Execute(w, headers); err != nil {
return err
}
}
if err := tmpl.Execute(w, stats); err != nil {
return err
}

View File

@ -106,12 +106,13 @@ func pods(cmd *cobra.Command, _ []string) error {
}
headers := report.Headers(ListPodReporter{}, map[string]string{
"ContainerIds": "IDS",
"ContainerNames": "NAMES",
"ContainerStatuses": "STATUS",
"Namespace": "NAMESPACES",
"Id": "POD ID",
"Name": "NAME",
"Status": "STATUS",
"Labels": "LABELS",
"NumberOfContainers": "# OF CONTAINERS",
"InfraId": "INFRA ID",
"Created": "CREATED",
"InfraID": "INFRA ID",
})
row := podPsFormat()
if cmd.Flags().Changed("format") {
@ -135,7 +136,7 @@ func pods(cmd *cobra.Command, _ []string) error {
}
func podPsFormat() string {
row := []string{"{{.Id}}", "{{.Name}}", "{{.Status}}", "{{.Created}}}"}
row := []string{"{{.Id}}", "{{.Name}}", "{{.Status}}", "{{.Created}}", "{{.InfraID}}"}
if psInput.CtrIds {
row = append(row, "{{.ContainerIds}}")

View File

@ -68,11 +68,10 @@ Valid placeholders for the Go template are listed below:
| .Name | Name of pod |
| .Status | Status of pod |
| .Labels | All the labels assigned to the pod |
| .ContainerInfo | Show the names, ids and/or statuses of containers (only shows 9 unless no-trunc is specified) |
| .NumberOfContainers | Show the number of containers attached to pod |
| .Cgroup | Cgroup path of pod |
| .UsePodCgroup | Whether containers use the Cgroup of the pod |
| .Created | Creation time of pod |
| .InfraID | Pod infra container ID |
**--sort**
Sort by created, ID, name, status, or number of containers

View File

@ -47,12 +47,11 @@ Valid placeholders for the Go template are listed below:
| **Placeholder** | **Description** |
| --------------- | --------------- |
| .Pod | Pod ID |
| .ID | Container ID |
| .Name | Container Name |
| .CPU | CPU percentage |
| .CPUPerc | CPU percentage |
| .MemUsage | Memory usage |
| .Mem | Memory percentage |
| .MemPerc | Memory percentage |
| .NetIO | Network IO |
| .BlockIO | Block IO |
| .PIDS | Number of PIDs |