@@ -163,6 +163,13 @@ type Linux struct {
163
163
// The path is expected to be relative to the cgroups mountpoint.
164
164
// If resources are specified, the cgroups at CgroupsPath will be updated based on resources.
165
165
CgroupsPath string `json:"cgroupsPath,omitempty"`
166
+ // SystemdCgroup controls whether to enable systemd cgroup support.
167
+ SystemdCgroup bool `json:"systemdCgroup,omitempty"`
168
+ // SystemdCgroupsPath specifies the transient systemd unit to create for the container and the
169
+ // containing slice which hosts the unit. The systemd units directly map to objects in the
170
+ // cgroup tree. When these units are activated, they map directly to cgroup paths built from the
171
+ // unit names.
172
+ SystemdCgroupsPath LinuxSystemdCgroupsPath `json:"systemdCgroupsPath,omitempty"`
166
173
// Namespaces contains the namespaces that are created and/or joined by the container
167
174
Namespaces []LinuxNamespace `json:"namespaces,omitempty"`
168
175
// Devices are a list of device nodes that are created for the container
@@ -184,6 +191,36 @@ type Linux struct {
184
191
Personality * LinuxPersonality `json:"personality,omitempty"`
185
192
}
186
193
194
+ // LinuxSystemdCgroupsPath specifies the transient systemd unit to create for the container and the
195
+ // containing slice which hosts the unit.
196
+ type LinuxSystemdCgroupsPath struct {
197
+ // Type is the type of the systemd unit.
198
+ Type SystemdUnitType `json:"type"`
199
+ // ParentSlice specifies the name of the parent slice with type suffix, under which the
200
+ // container is placed. Some examples below:
201
+ // `-.slice` - the root slice;
202
+ // `system.slice` - the default place for all system services;
203
+ // `user.slice` - the default place for all user sessions.
204
+ ParentSlice string `json:"parentSlice,omitempty"`
205
+ // Name is the systemd unit name (without type suffix).
206
+ Name string `json:"name,omitempty"`
207
+ }
208
+
209
+ // SystemdUnitType defines the type of the systemd unit.
210
+ type SystemdUnitType string
211
+
212
+ // SystemdUnitType defines the type of the systemd unit.
213
+ const (
214
+ // Scope is a group of externally created processes.
215
+ // Scopes encapsulate processes that are started and stopped by arbitrary processes through the
216
+ // fork() function and then registered by systemd at runtime.
217
+ Scope SystemdUnitType = "scope"
218
+ // Slice is a group of hierarchically organized units.
219
+ // Slices do not contain processes, they organize a hierarchy in which scopes and services are
220
+ // placed.
221
+ Slice SystemdUnitType = "slice"
222
+ )
223
+
187
224
// LinuxNamespace is the configuration for a Linux namespace
188
225
type LinuxNamespace struct {
189
226
// Type is the type of namespace
0 commit comments