Add pause and unpause commands to nsinit
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@docker.com> (github: crosbymichael)
This commit is contained in:
parent
14567adea1
commit
3f0764fa51
|
@ -32,6 +32,8 @@ func main() {
|
||||||
statsCommand,
|
statsCommand,
|
||||||
configCommand,
|
configCommand,
|
||||||
nsenterCommand,
|
nsenterCommand,
|
||||||
|
pauseCommand,
|
||||||
|
unpauseCommand,
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := app.Run(os.Args); err != nil {
|
if err := app.Run(os.Args); err != nil {
|
||||||
|
|
|
@ -0,0 +1,49 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"log"
|
||||||
|
|
||||||
|
"github.com/codegangsta/cli"
|
||||||
|
"github.com/docker/libcontainer/cgroups"
|
||||||
|
"github.com/docker/libcontainer/cgroups/fs"
|
||||||
|
"github.com/docker/libcontainer/cgroups/systemd"
|
||||||
|
)
|
||||||
|
|
||||||
|
var pauseCommand = cli.Command{
|
||||||
|
Name: "pause",
|
||||||
|
Usage: "pause the container's processes",
|
||||||
|
Action: pauseAction,
|
||||||
|
}
|
||||||
|
|
||||||
|
var unpauseCommand = cli.Command{
|
||||||
|
Name: "unpause",
|
||||||
|
Usage: "unpause the container's processes",
|
||||||
|
Action: unpauseAction,
|
||||||
|
}
|
||||||
|
|
||||||
|
func pauseAction(context *cli.Context) {
|
||||||
|
if err := toggle(cgroups.Frozen); err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func unpauseAction(context *cli.Context) {
|
||||||
|
if err := toggle(cgroups.Thawed); err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func toggle(state cgroups.FreezerState) error {
|
||||||
|
container, err := loadContainer()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if systemd.UseSystemd() {
|
||||||
|
err = systemd.Freeze(container.Cgroups, state)
|
||||||
|
} else {
|
||||||
|
err = fs.Freeze(container.Cgroups, state)
|
||||||
|
}
|
||||||
|
|
||||||
|
return err
|
||||||
|
}
|
Loading…
Reference in New Issue