|
@@ -132,15 +132,36 @@ type Config struct {
|
|
|
|
|
|
type ContainerConfigWrapper struct {
|
|
|
*Config
|
|
|
- *hostConfigWrapper
|
|
|
+ InnerHostConfig *HostConfig `json:"HostConfig,omitempty"`
|
|
|
+ Cpuset string `json:",omitempty"` // Deprecated. Exported for backwards compatibility.
|
|
|
+ *HostConfig // Deprecated. Exported to read attrubutes from json that are not in the inner host config structure.
|
|
|
+
|
|
|
}
|
|
|
|
|
|
-func (c ContainerConfigWrapper) HostConfig() *HostConfig {
|
|
|
- if c.hostConfigWrapper == nil {
|
|
|
- return new(HostConfig)
|
|
|
+func (w *ContainerConfigWrapper) GetHostConfig() *HostConfig {
|
|
|
+ hc := w.HostConfig
|
|
|
+
|
|
|
+ if hc == nil && w.InnerHostConfig != nil {
|
|
|
+ hc = w.InnerHostConfig
|
|
|
+ } else if w.InnerHostConfig != nil {
|
|
|
+ if hc.Memory != 0 && w.InnerHostConfig.Memory == 0 {
|
|
|
+ w.InnerHostConfig.Memory = hc.Memory
|
|
|
+ }
|
|
|
+ if hc.MemorySwap != 0 && w.InnerHostConfig.MemorySwap == 0 {
|
|
|
+ w.InnerHostConfig.MemorySwap = hc.MemorySwap
|
|
|
+ }
|
|
|
+ if hc.CpuShares != 0 && w.InnerHostConfig.CpuShares == 0 {
|
|
|
+ w.InnerHostConfig.CpuShares = hc.CpuShares
|
|
|
+ }
|
|
|
+
|
|
|
+ hc = w.InnerHostConfig
|
|
|
+ }
|
|
|
+
|
|
|
+ if hc != nil && w.Cpuset != "" && hc.CpusetCpus == "" {
|
|
|
+ hc.CpusetCpus = w.Cpuset
|
|
|
}
|
|
|
|
|
|
- return c.hostConfigWrapper.GetHostConfig()
|
|
|
+ return hc
|
|
|
}
|
|
|
|
|
|
// DecodeContainerConfig decodes a json encoded config into a ContainerConfigWrapper
|
|
@@ -155,5 +176,5 @@ func DecodeContainerConfig(src io.Reader) (*Config, *HostConfig, error) {
|
|
|
return nil, nil, err
|
|
|
}
|
|
|
|
|
|
- return w.Config, w.HostConfig(), nil
|
|
|
+ return w.Config, w.GetHostConfig(), nil
|
|
|
}
|