Add remove method to subsystems
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
This commit is contained in:
parent
bb89b83c68
commit
810cf722cc
9 changed files with 45 additions and 18 deletions
|
@ -25,6 +25,7 @@ var (
|
|||
|
||||
type subsystem interface {
|
||||
Set(*data) error
|
||||
Remove(*data) error
|
||||
}
|
||||
|
||||
type data struct {
|
||||
|
@ -94,24 +95,8 @@ func (raw *data) join(subsystem string) (string, error) {
|
|||
}
|
||||
|
||||
func (raw *data) Cleanup() error {
|
||||
get := func(subsystem string) string {
|
||||
path, _ := raw.path(subsystem)
|
||||
return path
|
||||
}
|
||||
|
||||
for _, path := range []string{
|
||||
get("memory"),
|
||||
get("devices"),
|
||||
get("cpu"),
|
||||
get("cpuset"),
|
||||
get("cpuacct"),
|
||||
get("blkio"),
|
||||
get("perf_event"),
|
||||
get("freezer"),
|
||||
} {
|
||||
if path != "" {
|
||||
os.RemoveAll(path)
|
||||
}
|
||||
for _, sys := range subsystems {
|
||||
sys.Remove(raw)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
@ -119,3 +104,13 @@ func (raw *data) Cleanup() error {
|
|||
func writeFile(dir, file, data string) error {
|
||||
return ioutil.WriteFile(filepath.Join(dir, file), []byte(data), 0700)
|
||||
}
|
||||
|
||||
func removePath(p string, err error) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if p != "" {
|
||||
return os.RemoveAll(p)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -14,3 +14,7 @@ func (s *blkioGroup) Set(d *data) error {
|
|||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *blkioGroup) Remove(d *data) error {
|
||||
return removePath(d.path("blkio"))
|
||||
}
|
||||
|
|
|
@ -21,3 +21,7 @@ func (s *cpuGroup) Set(d *data) error {
|
|||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *cpuGroup) Remove(d *data) error {
|
||||
return removePath(d.path("cpu"))
|
||||
}
|
||||
|
|
|
@ -14,3 +14,7 @@ func (s *cpuacctGroup) Set(d *data) error {
|
|||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *cpuacctGroup) Remove(d *data) error {
|
||||
return removePath(d.path("cpuacct"))
|
||||
}
|
||||
|
|
|
@ -26,3 +26,7 @@ func (s *cpusetGroup) Set(d *data) error {
|
|||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *cpusetGroup) Remove(d *data) error {
|
||||
return removePath(d.path("cpuset"))
|
||||
}
|
||||
|
|
|
@ -59,3 +59,7 @@ func (s *devicesGroup) Set(d *data) error {
|
|||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *devicesGroup) Remove(d *data) error {
|
||||
return removePath(d.path("devices"))
|
||||
}
|
||||
|
|
|
@ -14,3 +14,7 @@ func (s *freezerGroup) Set(d *data) error {
|
|||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *freezerGroup) Remove(d *data) error {
|
||||
return removePath(d.path("freezer"))
|
||||
}
|
||||
|
|
|
@ -39,3 +39,7 @@ func (s *memoryGroup) Set(d *data) error {
|
|||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *memoryGroup) Remove(d *data) error {
|
||||
return removePath(d.path("memory"))
|
||||
}
|
||||
|
|
|
@ -14,3 +14,7 @@ func (s *perfEventGroup) Set(d *data) error {
|
|||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *perfEventGroup) Remove(d *data) error {
|
||||
return removePath(d.path("perf_event"))
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue