2015-08-15 05:19:10 +08:00
|
|
|
// +build linux
|
|
|
|
|
|
|
|
package main
|
|
|
|
|
2016-09-24 21:25:13 +08:00
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"os"
|
|
|
|
|
|
|
|
"github.com/urfave/cli"
|
|
|
|
)
|
2015-08-15 05:19:10 +08:00
|
|
|
|
|
|
|
var pauseCommand = cli.Command{
|
|
|
|
Name: "pause",
|
|
|
|
Usage: "pause suspends all processes inside the container",
|
2016-09-24 21:25:13 +08:00
|
|
|
ArgsUsage: `<container-id> [container-id...]
|
2016-02-11 01:30:06 +08:00
|
|
|
|
|
|
|
Where "<container-id>" is the name for the instance of the container to be
|
|
|
|
paused. `,
|
|
|
|
Description: `The pause command suspends all processes in the instance of the container.
|
|
|
|
|
|
|
|
Use runc list to identiy instances of containers and their current status.`,
|
2016-05-10 13:58:09 +08:00
|
|
|
Action: func(context *cli.Context) error {
|
2016-09-24 21:25:13 +08:00
|
|
|
hasError := false
|
|
|
|
if !context.Args().Present() {
|
|
|
|
return fmt.Errorf("runc: \"pause\" requires a minimum of 1 argument")
|
|
|
|
}
|
|
|
|
|
|
|
|
factory, err := loadFactory(context)
|
2015-08-15 05:19:10 +08:00
|
|
|
if err != nil {
|
2016-05-10 13:58:09 +08:00
|
|
|
return err
|
2015-08-15 05:19:10 +08:00
|
|
|
}
|
2016-09-24 21:25:13 +08:00
|
|
|
|
|
|
|
for _, id := range context.Args() {
|
|
|
|
container, err := factory.Load(id)
|
|
|
|
if err != nil {
|
|
|
|
fmt.Fprintf(os.Stderr, "container %s is not exist\n", id)
|
|
|
|
hasError = true
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
if err := container.Pause(); err != nil {
|
|
|
|
fmt.Fprintf(os.Stderr, "pause container %s : %s\n", id, err)
|
|
|
|
hasError = true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if hasError {
|
|
|
|
return fmt.Errorf("one or more of container pause failed")
|
2015-08-15 05:19:10 +08:00
|
|
|
}
|
2016-05-10 13:58:09 +08:00
|
|
|
return nil
|
2015-08-15 05:19:10 +08:00
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
var resumeCommand = cli.Command{
|
|
|
|
Name: "resume",
|
2016-02-07 21:57:58 +08:00
|
|
|
Usage: "resumes all processes that have been previously paused",
|
2016-09-24 21:25:13 +08:00
|
|
|
ArgsUsage: `<container-id> [container-id...]
|
2016-02-11 01:30:06 +08:00
|
|
|
|
|
|
|
Where "<container-id>" is the name for the instance of the container to be
|
|
|
|
resumed.`,
|
|
|
|
Description: `The resume command resumes all processes in the instance of the container.
|
|
|
|
|
|
|
|
Use runc list to identiy instances of containers and their current status.`,
|
2016-05-10 13:58:09 +08:00
|
|
|
Action: func(context *cli.Context) error {
|
2016-09-24 21:25:13 +08:00
|
|
|
hasError := false
|
|
|
|
if !context.Args().Present() {
|
|
|
|
return fmt.Errorf("runc: \"resume\" requires a minimum of 1 argument")
|
|
|
|
}
|
|
|
|
|
|
|
|
factory, err := loadFactory(context)
|
2015-08-15 05:19:10 +08:00
|
|
|
if err != nil {
|
2016-05-10 13:58:09 +08:00
|
|
|
return err
|
2015-08-15 05:19:10 +08:00
|
|
|
}
|
2016-09-24 21:25:13 +08:00
|
|
|
|
|
|
|
for _, id := range context.Args() {
|
|
|
|
container, err := factory.Load(id)
|
|
|
|
if err != nil {
|
|
|
|
fmt.Fprintf(os.Stderr, "container %s is not exist\n", id)
|
|
|
|
hasError = true
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
if err := container.Resume(); err != nil {
|
|
|
|
fmt.Fprintf(os.Stderr, "resume container %s : %s\n", id, err)
|
|
|
|
hasError = true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if hasError {
|
|
|
|
return fmt.Errorf("one or more of container resume failed")
|
2015-08-15 05:19:10 +08:00
|
|
|
}
|
2016-05-10 13:58:09 +08:00
|
|
|
return nil
|
2015-08-15 05:19:10 +08:00
|
|
|
},
|
|
|
|
}
|