From 9042535f5af607f2362fa3f995427e1c5aab664e Mon Sep 17 00:00:00 2001 From: "Guillaume J. Charmes" Date: Fri, 26 Apr 2013 14:32:55 -0700 Subject: [PATCH] Move the capabilities detection into a runtime method --- runtime.go | 39 ++++++++++++++++++++++----------------- runtime_test.go | 2 +- 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/runtime.go b/runtime.go index 3bd7f4299b..4ea11b85b6 100644 --- a/runtime.go +++ b/runtime.go @@ -307,6 +307,27 @@ func (runtime *Runtime) restore() error { return nil } +func (runtime *Runtime) UpdateCapabilities(quiet bool) { + if cgroupMemoryMountpoint, err := FindCgroupMountpoint("memory"); err != nil { + if !quiet { + log.Printf("WARNING: %s\n", err) + } + } else { + _, err1 := ioutil.ReadFile(path.Join(cgroupMemoryMountpoint, "memory.limit_in_bytes")) + _, err2 := ioutil.ReadFile(path.Join(cgroupMemoryMountpoint, "memory.soft_limit_in_bytes")) + runtime.capabilities.MemoryLimit = err1 == nil && err2 == nil + if !runtime.capabilities.MemoryLimit && !quiet { + log.Printf("WARNING: Your kernel does not support cgroup memory limit.") + } + + _, err = ioutil.ReadFile(path.Join(cgroupMemoryMountpoint, "memory.memsw.limit_in_bytes")) + runtime.capabilities.SwapLimit = err == nil + if !runtime.capabilities.SwapLimit && !quiet { + log.Printf("WARNING: Your kernel does not support cgroup swap limit.") + } + } +} + // FIXME: harmonize with NewGraph() func NewRuntime(autoRestart bool) (*Runtime, error) { runtime, err := NewRuntimeFromDirectory("/var/lib/docker", autoRestart) @@ -322,23 +343,7 @@ func NewRuntime(autoRestart bool) (*Runtime, error) { log.Printf("WARNING: You are running linux kernel version %s, which might be unstable running docker. Please upgrade your kernel to 3.8.0.", k.String()) } } - - if cgroupMemoryMountpoint, err := FindCgroupMountpoint("memory"); err != nil { - log.Printf("WARNING: %s\n", err) - } else { - _, err1 := ioutil.ReadFile(path.Join(cgroupMemoryMountpoint, "memory.limit_in_bytes")) - _, err2 := ioutil.ReadFile(path.Join(cgroupMemoryMountpoint, "memory.soft_limit_in_bytes")) - runtime.capabilities.MemoryLimit = err1 == nil && err2 == nil - if !runtime.capabilities.MemoryLimit { - log.Printf("WARNING: Your kernel does not support cgroup memory limit.") - } - - _, err = ioutil.ReadFile(path.Join(cgroupMemoryMountpoint, "memory.memsw.limit_in_bytes")) - runtime.capabilities.SwapLimit = err == nil - if !runtime.capabilities.SwapLimit { - log.Printf("WARNING: Your kernel does not support cgroup swap limit.") - } - } + runtime.UpdateCapabilities(false) return runtime, nil } diff --git a/runtime_test.go b/runtime_test.go index d069afd005..e9be838c0e 100644 --- a/runtime_test.go +++ b/runtime_test.go @@ -93,7 +93,7 @@ func newTestRuntime() (*Runtime, error) { if err != nil { return nil, err } - + runtime.UpdateCapabilities(true) return runtime, nil }