diff options
-rw-r--r-- | libpod/container.go | 3 | ||||
-rw-r--r-- | libpod/container_top.go | 2 | ||||
-rw-r--r-- | libpod/options.go | 17 |
3 files changed, 19 insertions, 3 deletions
diff --git a/libpod/container.go b/libpod/container.go index f3dd02cce..dfd77938d 100644 --- a/libpod/container.go +++ b/libpod/container.go @@ -82,7 +82,6 @@ type Container struct { // TODO Add readonly support // TODO add SHM size support // TODO add shared namespace support -// TODO add cgroup parent support // containerRuntimeInfo contains the current state of the container // It is stored on disk in a tmpfs and recreated on reboot @@ -1247,7 +1246,7 @@ func (c *Container) cleanupStorage() error { // CGroupPath returns a cgroups "path" for a given container. func (c *Container) CGroupPath() cgroups.Path { - return cgroups.StaticPath(filepath.Join(CgroupParent, fmt.Sprintf("libpod-conmon-%s", c.ID()))) + return cgroups.StaticPath(filepath.Join(c.config.CgroupParent, fmt.Sprintf("libpod-conmon-%s", c.ID()))) } // copyHostFileToRundir copies the provided file to the runtimedir diff --git a/libpod/container_top.go b/libpod/container_top.go index 020773488..0eb1d0c41 100644 --- a/libpod/container_top.go +++ b/libpod/container_top.go @@ -25,7 +25,7 @@ func (c *Container) GetContainerPids() ([]string, error) { // Gets the pids for a container without locking. should only be called from a func where // locking has already been established. func (c *Container) getContainerPids() ([]string, error) { - taskFile := filepath.Join("/sys/fs/cgroup/pids", CgroupParent, fmt.Sprintf("libpod-conmon-%s", c.ID()), c.ID(), "tasks") + taskFile := filepath.Join("/sys/fs/cgroup/pids", c.config.CgroupParent, fmt.Sprintf("libpod-conmon-%s", c.ID()), c.ID(), "tasks") logrus.Debug("reading pids from ", taskFile) content, err := ioutil.ReadFile(taskFile) if err != nil { diff --git a/libpod/options.go b/libpod/options.go index 8097f3a64..1429f16c3 100644 --- a/libpod/options.go +++ b/libpod/options.go @@ -477,6 +477,23 @@ func WithNetNS(portMappings []ocicni.PortMapping) CtrCreateOption { } } +// WithCgroupParent sets the Cgroup Parent of the new container +func WithCgroupParent(parent string) CtrCreateOption { + return func(ctr *Container) error { + if ctr.valid { + return ErrCtrFinalized + } + + if parent == "" { + return errors.Wrapf(ErrInvalidArg, "cgroup parent cannot be empty") + } + + ctr.config.CgroupParent = parent + + return nil + } +} + // Pod Creation Options // WithPodName sets the name of the pod |