From c9bb1ecdf1c84235a1fa1cc584a4770ea99b7bf1 Mon Sep 17 00:00:00 2001 From: Justin Cormack Date: Thu, 16 Nov 2017 16:08:09 +0000 Subject: [PATCH] Add Cgroups to runtime config This will create the list of cgroups specified Signed-off-by: Justin Cormack --- docs/yaml.md | 1 + src/moby/config.go | 3 +++ src/moby/schema.go | 1 + 3 files changed, 5 insertions(+) diff --git a/docs/yaml.md b/docs/yaml.md index 6cc303190..bfa229287 100644 --- a/docs/yaml.md +++ b/docs/yaml.md @@ -183,6 +183,7 @@ permissions issues in use. In addition to the parts of the specification above used to generate the OCI spec, there is a `runtime` section in the image specification which specifies some actions to take place when the container is being started. +- `cgroups` takes a list of cgroups that will be created before the container is run. - `mounts` takes a list of mount specifications (`source`, `destination`, `type`, `options`) and mounts them in the root namespace before the container is created. It will try to make any missing destination directories. - `mkdir` takes a list of directories to create at runtime, in the root mount namespace. These are created before the container is started, so they can be used to create diff --git a/src/moby/config.go b/src/moby/config.go index 2a66efa98..9d4119cc4 100644 --- a/src/moby/config.go +++ b/src/moby/config.go @@ -100,6 +100,7 @@ type Image struct { // Runtime is the type of config processed at runtime, not used to build the OCI spec type Runtime struct { + Cgroups *[]string `yaml:"cgroups" json:"cgroups,omitempty"` Mounts *[]specs.Mount `yaml:"mounts" json:"mounts,omitempty"` Mkdir *[]string `yaml:"mkdir" json:"mkdir,omitempty"` Interfaces *[]Interface `yaml:"interfaces" json:"interfaces,omitempty"` @@ -570,10 +571,12 @@ func assignRuntime(v1, v2 *Runtime) Runtime { if v2 == nil { v2 = &Runtime{} } + runtimeCgroups := assignStrings(v1.Cgroups, v2.Cgroups) runtimeMounts := assignBinds(v1.Mounts, v2.Mounts) runtimeMkdir := assignStrings(v1.Mkdir, v2.Mkdir) runtimeInterfaces := assignRuntimeInterfaceArray(v1.Interfaces, v2.Interfaces) runtime := Runtime{ + Cgroups: &runtimeCgroups, Mounts: &runtimeMounts, Mkdir: &runtimeMkdir, Interfaces: &runtimeInterfaces, diff --git a/src/moby/schema.go b/src/moby/schema.go index 6aa71b617..2ca2c3c4f 100644 --- a/src/moby/schema.go +++ b/src/moby/schema.go @@ -239,6 +239,7 @@ var schema = string(` "type": "object", "additionalProperties": false, "properties": { + "cgroups": {"$ref": "#/definitions/strings"}, "mounts": {"$ref": "#/definitions/mounts"}, "mkdir": {"$ref": "#/definitions/strings"}, "interfaces": {"$ref": "#/definitions/interfaces"},