22
33package specs
44
5- // LinuxSpec is the full specification for Linux containers.
5+ // LinuxSpec is the full specification for Linux containers
66type LinuxSpec struct {
77 Spec
8- // Linux is platform specific configuration for Linux based containers.
8+ // Linux is platform specific configuration for Linux based containers
99 Linux Linux `json:"linux"`
1010}
1111
12- // Linux contains platform specific configuration for Linux based containers.
12+ // Linux contains platform specific configuration for Linux based containers
1313type Linux struct {
14- // UIDMapping specifies user mappings for supporting user namespaces on Linux.
14+ // UIDMapping specifies user mappings for supporting user namespaces on Linux
1515 UIDMappings []IDMapping `json:"uidMappings"`
16- // GIDMapping specifies group mappings for supporting user namespaces on Linux.
16+ // GIDMapping specifies group mappings for supporting user namespaces on Linux
1717 GIDMappings []IDMapping `json:"gidMappings"`
18- // Rlimits specifies rlimit options to apply to the container's process.
18+ // Rlimits specifies rlimit options to apply to the container's process
1919 Rlimits []Rlimit `json:"rlimits"`
20- // Sysctl are a set of key value pairs that are set for the container on start.
20+ // Sysctl are a set of key value pairs that are set for the container on start
2121 Sysctl map [string ]string `json:"sysctl"`
2222 // Resources contain cgroup information for handling resource constraints
23- // for the container.
23+ // for the container
2424 Resources Resources `json:"resources"`
25- // Namespaces contains the namespaces that are created and/or joined by the container.
25+ // Namespaces contains the namespaces that are created and/or joined by the container
2626 Namespaces []Namespace `json:"namespaces"`
27- // Capabilities are Linux capabilities that are kept for the container.
27+ // Capabilities are Linux capabilities that are kept for the container
2828 Capabilities []string `json:"capabilities"`
29- // Devices are a list of device nodes that are created and enabled for the container.
29+ // Devices are a list of device nodes that are created and enabled for the container
3030 Devices []string `json:"devices"`
31- // RootfsPropagation is the rootfs mount propagation mode for the container.
31+ // RootfsPropagation is the rootfs mount propagation mode for the container
3232 RootfsPropagation string `json:"rootfsPropagation"`
3333}
3434
3535// User specifies Linux specific user and group information for the container's
36- // main process.
36+ // main process
3737type User struct {
38- // Uid is the user id.
38+ // Uid is the user id
3939 UID int32 `json:"uid"`
40- // Gid is the group id.
40+ // Gid is the group id
4141 GID int32 `json:"gid"`
42- // AdditionalGids are additional group ids set for the container's process.
42+ // AdditionalGids are additional group ids set for the container's process
4343 AdditionalGids []int32 `json:"additionalGids"`
4444}
4545
46- // Namespace is the configuration for a Linux namespace.
46+ // Namespace is the configuration for a Linux namespace
4747type Namespace struct {
48- // Type is the type of Linux namespace.
48+ // Type is the type of Linux namespace
4949 Type string `json:"type"`
5050 // Path is a path to an existing namespace persisted on disk that can be joined
51- // and is of the same type.
51+ // and is of the same type
5252 Path string `json:"path"`
5353}
5454
55- // IDMapping specifies UID/GID mappings.
55+ // IDMapping specifies UID/GID mappings
5656type IDMapping struct {
57- // HostID is the UID/GID of the host user or group.
57+ // HostID is the UID/GID of the host user or group
5858 HostID int32 `json:"hostID"`
59- // ContainerID is the UID/GID of the container's user or group.
59+ // ContainerID is the UID/GID of the container's user or group
6060 ContainerID int32 `json:"containerID"`
61- // Size is the length of the range of IDs mapped between the two namespaces.
61+ // Size is the length of the range of IDs mapped between the two namespaces
6262 Size int32 `json:"size"`
6363}
6464
65- // Rlimit type and restrictions.
65+ // Rlimit type and restrictions
6666type Rlimit struct {
67- // Type of the rlimit to set.
67+ // Type of the rlimit to set
6868 Type int `json:"type"`
69- // Hard is the hard limit for the specified type.
69+ // Hard is the hard limit for the specified type
7070 Hard uint64 `json:"hard"`
71- // Soft is the soft limit for the specified type.
71+ // Soft is the soft limit for the specified type
7272 Soft uint64 `json:"soft"`
7373}
7474
@@ -80,25 +80,25 @@ type HugepageLimit struct {
8080
8181// InterfacePriority for network interfaces
8282type InterfacePriority struct {
83- // Name is the name of the network interface.
83+ // Name is the name of the network interface
8484 Name string `json:"name"`
85- // Priority for the interface.
85+ // Priority for the interface
8686 Priority int64 `json:"priority"`
8787}
8888
8989// BlockIO for Linux cgroup 'blockio' resource management
9090type BlockIO struct {
91- // Specifies per cgroup weight, range is from 10 to 1000.
91+ // Specifies per cgroup weight, range is from 10 to 1000
9292 Weight int64 `json:"blkioWeight"`
93- // Weight per cgroup per device, can override BlkioWeight.
93+ // Weight per cgroup per device, can override BlkioWeight
9494 WeightDevice string `json:"blkioWeightDevice"`
95- // IO read rate limit per cgroup per device, bytes per second.
95+ // IO read rate limit per cgroup per device, bytes per second
9696 ThrottleReadBpsDevice string `json:"blkioThrottleReadBpsDevice"`
97- // IO write rate limit per cgroup per divice, bytes per second.
97+ // IO write rate limit per cgroup per divice, bytes per second
9898 ThrottleWriteBpsDevice string `json:"blkioThrottleWriteBpsDevice"`
99- // IO read rate limit per cgroup per device, IO per second.
99+ // IO read rate limit per cgroup per device, IO per second
100100 ThrottleReadIOpsDevice string `json:"blkioThrottleReadIopsDevice"`
101- // IO write rate limit per cgroup per device, IO per second.
101+ // IO write rate limit per cgroup per device, IO per second
102102 ThrottleWriteIOpsDevice string `json:"blkioThrottleWriteIopsDevice"`
103103}
104104
@@ -112,48 +112,48 @@ type Memory struct {
112112 Swap int64 `json:"swap"`
113113 // Kernel memory limit (in bytes)
114114 Kernel int64 `json:"kernel"`
115- // How aggressive the kernel will swap memory pages. Range from 0 to 100. Set -1 to use system default.
115+ // How aggressive the kernel will swap memory pages. Range from 0 to 100. Set -1 to use system default
116116 Swappiness int64 `json:"swappiness"`
117117}
118118
119119// CPU for Linux cgroup 'cpu' resource management
120120type CPU struct {
121- // CPU shares (relative weight vs. other cgroups with cpu shares).
121+ // CPU shares (relative weight vs. other cgroups with cpu shares)
122122 Shares int64 `json:"shares"`
123- // CPU hardcap limit (in usecs). Allowed cpu time in a given period.
123+ // CPU hardcap limit (in usecs). Allowed cpu time in a given period
124124 Quota int64 `json:"quota"`
125- // CPU period to be used for hardcapping (in usecs). 0 to use system default.
125+ // CPU period to be used for hardcapping (in usecs). 0 to use system default
126126 Period int64 `json:"period"`
127- // How many time CPU will use in realtime scheduling (in usecs).
127+ // How many time CPU will use in realtime scheduling (in usecs)
128128 RealtimeRuntime int64 `json:"realtimeRuntime"`
129- // CPU period to be used for realtime scheduling (in usecs).
129+ // CPU period to be used for realtime scheduling (in usecs)
130130 RealtimePeriod int64 `json:"realtimePeriod"`
131- // CPU to use within the cpuset.
131+ // CPU to use within the cpuset
132132 Cpus string `json:"cpus"`
133- // MEM to use within the cpuset.
133+ // MEM to use within the cpuset
134134 Mems string `json:"mems"`
135135}
136136
137137// Network identification and priority configuration
138138type Network struct {
139- // Set class identifier for container's network packets.
139+ // Set class identifier for container's network packets
140140 ClassID string `json:"classId"`
141- // Set priority of network traffic for container.
141+ // Set priority of network traffic for container
142142 Priorities []InterfacePriority `json:"priorities"`
143143}
144144
145145// Resources has container runtime resource constraints
146146type Resources struct {
147- // DisableOOMKiller disables the OOM killer for out of memory conditions.
147+ // DisableOOMKiller disables the OOM killer for out of memory conditions
148148 DisableOOMKiller bool `json:"disableOOMKiller"`
149- // Memory restriction configuration.
149+ // Memory restriction configuration
150150 Memory Memory `json:"memory"`
151- // CPU resource restriction configuration.
151+ // CPU resource restriction configuration
152152 CPU CPU `json:"cpu"`
153- // BlockIO restriction configuration.
153+ // BlockIO restriction configuration
154154 BlockIO BlockIO `json:"blockIO"`
155155 // Hugetlb limit (in bytes)
156156 HugepageLimits []HugepageLimit `json:"hugepageLimits"`
157- // Network restriction configuration.
157+ // Network restriction configuration
158158 Network Network `json:"network"`
159159}
0 commit comments