summaryrefslogtreecommitdiff
path: root/cmd/podman/pods
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/podman/pods')
-rw-r--r--cmd/podman/pods/create.go53
-rw-r--r--cmd/podman/pods/inspect.go9
-rw-r--r--cmd/podman/pods/ps.go15
-rw-r--r--cmd/podman/pods/stats.go23
-rw-r--r--cmd/podman/pods/top.go8
5 files changed, 86 insertions, 22 deletions
diff --git a/cmd/podman/pods/create.go b/cmd/podman/pods/create.go
index 735dfa78c..03e3ffaa0 100644
--- a/cmd/podman/pods/create.go
+++ b/cmd/podman/pods/create.go
@@ -5,9 +5,13 @@ import (
"fmt"
"io/ioutil"
"os"
+ "runtime"
+ "sort"
+ "strconv"
"strings"
"github.com/containers/common/pkg/completion"
+ "github.com/containers/common/pkg/sysinfo"
"github.com/containers/podman/v3/cmd/podman/common"
"github.com/containers/podman/v3/cmd/podman/parse"
"github.com/containers/podman/v3/cmd/podman/registry"
@@ -16,6 +20,7 @@ import (
"github.com/containers/podman/v3/pkg/errorhandling"
"github.com/containers/podman/v3/pkg/specgen"
"github.com/containers/podman/v3/pkg/util"
+ "github.com/docker/docker/pkg/parsers"
"github.com/pkg/errors"
"github.com/sirupsen/logrus"
"github.com/spf13/cobra"
@@ -55,6 +60,14 @@ func init() {
common.DefineNetFlags(createCommand)
+ cpusetflagName := "cpuset-cpus"
+ flags.StringVar(&createOptions.CpusetCpus, cpusetflagName, "", "CPUs in which to allow execution")
+ _ = createCommand.RegisterFlagCompletionFunc(cpusetflagName, completion.AutocompleteDefault)
+
+ cpusflagName := "cpus"
+ flags.Float64Var(&createOptions.Cpus, cpusflagName, 0.000, "set amount of CPUs for the pod")
+ _ = createCommand.RegisterFlagCompletionFunc(cpusflagName, completion.AutocompleteDefault)
+
cgroupParentflagName := "cgroup-parent"
flags.StringVar(&createOptions.CGroupParent, cgroupParentflagName, "", "Set parent cgroup for the pod")
_ = createCommand.RegisterFlagCompletionFunc(cgroupParentflagName, completion.AutocompleteDefault)
@@ -185,6 +198,46 @@ func create(cmd *cobra.Command, args []string) error {
}
}
+ numCPU := sysinfo.NumCPU()
+ if numCPU == 0 {
+ numCPU = runtime.NumCPU()
+ }
+ if createOptions.Cpus > float64(numCPU) {
+ createOptions.Cpus = float64(numCPU)
+ }
+ copy := createOptions.CpusetCpus
+ cpuSet := createOptions.Cpus
+ if cpuSet == 0 {
+ cpuSet = float64(sysinfo.NumCPU())
+ }
+ ret, err := parsers.ParseUintList(copy)
+ copy = ""
+ if err != nil {
+ errors.Wrapf(err, "could not parse list")
+ }
+ var vals []int
+ for ind, val := range ret {
+ if val {
+ vals = append(vals, ind)
+ }
+ }
+ sort.Ints(vals)
+ for ind, core := range vals {
+ if core > int(cpuSet) {
+ if copy == "" {
+ copy = "0-" + strconv.Itoa(int(cpuSet))
+ createOptions.CpusetCpus = copy
+ break
+ } else {
+ createOptions.CpusetCpus = copy
+ break
+ }
+ } else if ind != 0 {
+ copy += "," + strconv.Itoa(core)
+ } else {
+ copy = "" + strconv.Itoa(core)
+ }
+ }
response, err := registry.ContainerEngine().PodCreate(context.Background(), createOptions)
if err != nil {
return err
diff --git a/cmd/podman/pods/inspect.go b/cmd/podman/pods/inspect.go
index d38f0062c..4bb88f48a 100644
--- a/cmd/podman/pods/inspect.go
+++ b/cmd/podman/pods/inspect.go
@@ -3,8 +3,6 @@ package pods
import (
"context"
"os"
- "text/tabwriter"
- "text/template"
"github.com/containers/common/pkg/report"
"github.com/containers/podman/v3/cmd/podman/common"
@@ -73,11 +71,14 @@ func inspect(cmd *cobra.Command, args []string) error {
row := report.NormalizeFormat(inspectOptions.Format)
- t, err := template.New("pod inspect").Parse(row)
+ t, err := report.NewTemplate("inspect").Parse(row)
if err != nil {
return err
}
- w := tabwriter.NewWriter(os.Stdout, 8, 2, 2, ' ', 0)
+ w, err := report.NewWriterDefault(os.Stdout)
+ if err != nil {
+ return err
+ }
return t.Execute(w, *responses)
}
diff --git a/cmd/podman/pods/ps.go b/cmd/podman/pods/ps.go
index 0271930e8..3e5ab86f4 100644
--- a/cmd/podman/pods/ps.go
+++ b/cmd/podman/pods/ps.go
@@ -6,14 +6,11 @@ import (
"os"
"sort"
"strings"
- "text/tabwriter"
- "text/template"
"time"
"github.com/containers/common/pkg/completion"
"github.com/containers/common/pkg/report"
"github.com/containers/podman/v3/cmd/podman/common"
- "github.com/containers/podman/v3/cmd/podman/parse"
"github.com/containers/podman/v3/cmd/podman/registry"
"github.com/containers/podman/v3/cmd/podman/validate"
"github.com/containers/podman/v3/pkg/domain/entities"
@@ -131,20 +128,24 @@ func pods(cmd *cobra.Command, _ []string) error {
renderHeaders := true
row := podPsFormat()
if cmd.Flags().Changed("format") {
- renderHeaders = parse.HasTable(psInput.Format)
+ renderHeaders = report.HasTable(psInput.Format)
row = report.NormalizeFormat(psInput.Format)
}
noHeading, _ := cmd.Flags().GetBool("noheading")
if noHeading {
renderHeaders = false
}
- format := parse.EnforceRange(row)
+ format := report.EnforceRange(row)
- tmpl, err := template.New("listPods").Parse(format)
+ tmpl, err := report.NewTemplate("list").Parse(format)
+ if err != nil {
+ return err
+ }
+
+ w, err := report.NewWriterDefault(os.Stdout)
if err != nil {
return err
}
- w := tabwriter.NewWriter(os.Stdout, 8, 2, 2, ' ', 0)
defer w.Flush()
if renderHeaders {
diff --git a/cmd/podman/pods/stats.go b/cmd/podman/pods/stats.go
index 057b3dead..ba2c1495b 100644
--- a/cmd/podman/pods/stats.go
+++ b/cmd/podman/pods/stats.go
@@ -4,14 +4,11 @@ import (
"context"
"fmt"
"os"
- "text/tabwriter"
- "text/template"
"time"
"github.com/buger/goterm"
"github.com/containers/common/pkg/report"
"github.com/containers/podman/v3/cmd/podman/common"
- "github.com/containers/podman/v3/cmd/podman/parse"
"github.com/containers/podman/v3/cmd/podman/registry"
"github.com/containers/podman/v3/cmd/podman/validate"
"github.com/containers/podman/v3/pkg/domain/entities"
@@ -123,8 +120,12 @@ func printJSONPodStats(stats []*entities.PodStatsReport) error {
return nil
}
-func printPodStatsLines(stats []*entities.PodStatsReport) {
- w := tabwriter.NewWriter(os.Stdout, 0, 0, 2, ' ', 0)
+func printPodStatsLines(stats []*entities.PodStatsReport) error {
+ w, err := report.NewWriterDefault(os.Stdout)
+ if err != nil {
+ return err
+ }
+
outFormat := "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n"
fmt.Fprintf(w, outFormat, "POD", "CID", "NAME", "CPU %", "MEM USAGE/ LIMIT", "MEM %", "NET IO", "BLOCK IO", "PIDS")
if len(stats) == 0 {
@@ -134,7 +135,7 @@ func printPodStatsLines(stats []*entities.PodStatsReport) {
fmt.Fprintf(w, outFormat, i.Pod, i.CID, i.Name, i.CPU, i.MemUsage, i.Mem, i.NetIO, i.BlockIO, i.PIDS)
}
}
- w.Flush()
+ return w.Flush()
}
func printFormattedPodStatsLines(headerNames []map[string]string, row string, stats []*entities.PodStatsReport) error {
@@ -142,13 +143,17 @@ func printFormattedPodStatsLines(headerNames []map[string]string, row string, st
return nil
}
- row = parse.EnforceRange(row)
+ row = report.EnforceRange(row)
+
+ tmpl, err := report.NewTemplate("stats").Parse(row)
+ if err != nil {
+ return err
+ }
- tmpl, err := template.New("pod stats").Parse(row)
+ w, err := report.NewWriterDefault(os.Stdout)
if err != nil {
return err
}
- w := tabwriter.NewWriter(os.Stdout, 0, 0, 3, ' ', 0)
defer w.Flush()
if err := tmpl.Execute(w, headerNames); err != nil {
diff --git a/cmd/podman/pods/top.go b/cmd/podman/pods/top.go
index e26e281c8..a6e442b96 100644
--- a/cmd/podman/pods/top.go
+++ b/cmd/podman/pods/top.go
@@ -5,8 +5,8 @@ import (
"fmt"
"os"
"strings"
- "text/tabwriter"
+ "github.com/containers/common/pkg/report"
"github.com/containers/podman/v3/cmd/podman/common"
"github.com/containers/podman/v3/cmd/podman/registry"
"github.com/containers/podman/v3/cmd/podman/validate"
@@ -82,7 +82,11 @@ func top(_ *cobra.Command, args []string) error {
return err
}
- w := tabwriter.NewWriter(os.Stdout, 5, 1, 3, ' ', 0)
+ w, err := report.NewWriterDefault(os.Stdout)
+ if err != nil {
+ return err
+ }
+
for _, proc := range topResponse.Value {
if _, err := fmt.Fprintln(w, proc); err != nil {
return err