summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel J Walsh <dwalsh@redhat.com>2018-01-12 12:01:34 -0500
committerGitHub <noreply@github.com>2018-01-12 12:01:34 -0500
commit6e8100cf2e70c8c6b5a8504298d1e295a288a0b1 (patch)
treedf3124bb1235b71a0e09b8f6009f1a3bce48f039
parent198c91c2ea0c82d0ffc82eba86c31224c69e84bb (diff)
parent04e0687da14070ea3ff208687d4f749d5dc319a0 (diff)
downloadpodman-6e8100cf2e70c8c6b5a8504298d1e295a288a0b1.tar.gz
podman-6e8100cf2e70c8c6b5a8504298d1e295a288a0b1.tar.bz2
podman-6e8100cf2e70c8c6b5a8504298d1e295a288a0b1.zip
Merge pull request #211 from mheon/wireup_backends
Wire up API for CGroup Parent
-rw-r--r--libpod/container.go3
-rw-r--r--libpod/container_top.go2
-rw-r--r--libpod/options.go17
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