summaryrefslogtreecommitdiff
path: root/pkg/domain
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/domain')
-rw-r--r--pkg/domain/entities/pods.go41
-rw-r--r--pkg/domain/infra/tunnel/images.go2
2 files changed, 41 insertions, 2 deletions
diff --git a/pkg/domain/entities/pods.go b/pkg/domain/entities/pods.go
index 88055454f..35f940bca 100644
--- a/pkg/domain/entities/pods.go
+++ b/pkg/domain/entities/pods.go
@@ -7,6 +7,8 @@ import (
"github.com/containers/podman/v3/libpod/define"
"github.com/containers/podman/v3/pkg/specgen"
+ "github.com/containers/podman/v3/pkg/util"
+ "github.com/opencontainers/runtime-spec/specs-go"
)
type PodKillOptions struct {
@@ -116,13 +118,35 @@ type PodCreateOptions struct {
Name string
Net *NetOptions
Share []string
+ Cpus float64
+ CpusetCpus string
}
type PodCreateReport struct {
Id string //nolint
}
-func (p PodCreateOptions) ToPodSpecGen(s *specgen.PodSpecGenerator) {
+func (p *PodCreateOptions) CPULimits() *specs.LinuxCPU {
+ cpu := &specs.LinuxCPU{}
+ hasLimits := false
+
+ if p.Cpus != 0 {
+ period, quota := util.CoresToPeriodAndQuota(p.Cpus)
+ cpu.Period = &period
+ cpu.Quota = &quota
+ hasLimits = true
+ }
+ if p.CpusetCpus != "" {
+ cpu.Cpus = p.CpusetCpus
+ hasLimits = true
+ }
+ if !hasLimits {
+ return cpu
+ }
+ return cpu
+}
+
+func (p *PodCreateOptions) ToPodSpecGen(s *specgen.PodSpecGenerator) error {
// Basic Config
s.Name = p.Name
s.Hostname = p.Hostname
@@ -156,6 +180,21 @@ func (p PodCreateOptions) ToPodSpecGen(s *specgen.PodSpecGenerator) {
// Cgroup
s.CgroupParent = p.CGroupParent
+
+ // Resource config
+ cpuDat := p.CPULimits()
+ if s.ResourceLimits == nil {
+ s.ResourceLimits = &specs.LinuxResources{}
+ s.ResourceLimits.CPU = &specs.LinuxCPU{}
+ }
+ if cpuDat != nil {
+ s.ResourceLimits.CPU = cpuDat
+ if p.Cpus != 0 {
+ s.CPUPeriod = *cpuDat.Period
+ s.CPUQuota = *cpuDat.Quota
+ }
+ }
+ return nil
}
type PodPruneOptions struct {
diff --git a/pkg/domain/infra/tunnel/images.go b/pkg/domain/infra/tunnel/images.go
index 3fd9a755d..42027a2dc 100644
--- a/pkg/domain/infra/tunnel/images.go
+++ b/pkg/domain/infra/tunnel/images.go
@@ -107,7 +107,7 @@ func (ir *ImageEngine) Pull(ctx context.Context, rawImage string, opts entities.
options := new(images.PullOptions)
options.WithAllTags(opts.AllTags).WithAuthfile(opts.Authfile).WithArch(opts.Arch).WithOS(opts.OS)
options.WithVariant(opts.Variant).WithPassword(opts.Password)
- options.WithQuiet(opts.Quiet).WithUsername(opts.Username)
+ options.WithQuiet(opts.Quiet).WithUsername(opts.Username).WithPolicy(opts.PullPolicy.String())
if s := opts.SkipTLSVerify; s != types.OptionalBoolUndefined {
if s == types.OptionalBoolTrue {
options.WithSkipTLSVerify(true)