This is part of an effort to break apart the deprecated server/ package
Docker-DCO-1.1-Signed-off-by: Solomon Hykes <solomon@docker.com> (github: shykes)
| ... | ... |
@@ -126,6 +126,9 @@ func (daemon *Daemon) Install(eng *engine.Engine) error {
|
| 126 | 126 |
if err := eng.Register("create", daemon.ContainerCreate); err != nil {
|
| 127 | 127 |
return err |
| 128 | 128 |
} |
| 129 |
+ if err := eng.Register("stop", daemon.ContainerStop); err != nil {
|
|
| 130 |
+ return err |
|
| 131 |
+ } |
|
| 129 | 132 |
return nil |
| 130 | 133 |
} |
| 131 | 134 |
|
| 132 | 135 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,30 @@ |
| 0 |
+package daemon |
|
| 1 |
+ |
|
| 2 |
+import ( |
|
| 3 |
+ "github.com/docker/docker/engine" |
|
| 4 |
+) |
|
| 5 |
+ |
|
| 6 |
+func (daemon *Daemon) ContainerStop(job *engine.Job) engine.Status {
|
|
| 7 |
+ if len(job.Args) != 1 {
|
|
| 8 |
+ return job.Errorf("Usage: %s CONTAINER\n", job.Name)
|
|
| 9 |
+ } |
|
| 10 |
+ var ( |
|
| 11 |
+ name = job.Args[0] |
|
| 12 |
+ t = 10 |
|
| 13 |
+ ) |
|
| 14 |
+ if job.EnvExists("t") {
|
|
| 15 |
+ t = job.GetenvInt("t")
|
|
| 16 |
+ } |
|
| 17 |
+ if container := daemon.Get(name); container != nil {
|
|
| 18 |
+ if !container.State.IsRunning() {
|
|
| 19 |
+ return job.Errorf("Container already stopped")
|
|
| 20 |
+ } |
|
| 21 |
+ if err := container.Stop(int(t)); err != nil {
|
|
| 22 |
+ return job.Errorf("Cannot stop container %s: %s\n", name, err)
|
|
| 23 |
+ } |
|
| 24 |
+ job.Eng.Job("log", "stop", container.ID, daemon.Repositories().ImageName(container.Image)).Run()
|
|
| 25 |
+ } else {
|
|
| 26 |
+ return job.Errorf("No such container: %s\n", name)
|
|
| 27 |
+ } |
|
| 28 |
+ return engine.StatusOK |
|
| 29 |
+} |
| ... | ... |
@@ -467,31 +467,6 @@ func (srv *Server) ContainerStart(job *engine.Job) engine.Status {
|
| 467 | 467 |
return engine.StatusOK |
| 468 | 468 |
} |
| 469 | 469 |
|
| 470 |
-func (srv *Server) ContainerStop(job *engine.Job) engine.Status {
|
|
| 471 |
- if len(job.Args) != 1 {
|
|
| 472 |
- return job.Errorf("Usage: %s CONTAINER\n", job.Name)
|
|
| 473 |
- } |
|
| 474 |
- var ( |
|
| 475 |
- name = job.Args[0] |
|
| 476 |
- t = 10 |
|
| 477 |
- ) |
|
| 478 |
- if job.EnvExists("t") {
|
|
| 479 |
- t = job.GetenvInt("t")
|
|
| 480 |
- } |
|
| 481 |
- if container := srv.daemon.Get(name); container != nil {
|
|
| 482 |
- if !container.State.IsRunning() {
|
|
| 483 |
- return job.Errorf("Container already stopped")
|
|
| 484 |
- } |
|
| 485 |
- if err := container.Stop(int(t)); err != nil {
|
|
| 486 |
- return job.Errorf("Cannot stop container %s: %s\n", name, err)
|
|
| 487 |
- } |
|
| 488 |
- srv.LogEvent("stop", container.ID, srv.daemon.Repositories().ImageName(container.Image))
|
|
| 489 |
- } else {
|
|
| 490 |
- return job.Errorf("No such container: %s\n", name)
|
|
| 491 |
- } |
|
| 492 |
- return engine.StatusOK |
|
| 493 |
-} |
|
| 494 |
- |
|
| 495 | 470 |
func (srv *Server) ContainerWait(job *engine.Job) engine.Status {
|
| 496 | 471 |
if len(job.Args) != 1 {
|
| 497 | 472 |
return job.Errorf("Usage: %s", job.Name)
|
| ... | ... |
@@ -86,7 +86,6 @@ func InitServer(job *engine.Job) engine.Status {
|
| 86 | 86 |
job.Eng.Hack_SetGlobalVar("httpapi.daemon", srv.daemon)
|
| 87 | 87 |
|
| 88 | 88 |
for name, handler := range map[string]engine.Handler{
|
| 89 |
- "stop": srv.ContainerStop, |
|
| 90 | 89 |
"restart": srv.ContainerRestart, |
| 91 | 90 |
"start": srv.ContainerStart, |
| 92 | 91 |
"wait": srv.ContainerWait, |