Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
| ... | ... |
@@ -596,15 +596,12 @@ func postContainersRestart(srv *Server, version float64, w http.ResponseWriter, |
| 596 | 596 |
if err := parseForm(r); err != nil {
|
| 597 | 597 |
return err |
| 598 | 598 |
} |
| 599 |
- t, err := strconv.Atoi(r.Form.Get("t"))
|
|
| 600 |
- if err != nil || t < 0 {
|
|
| 601 |
- t = 10 |
|
| 602 |
- } |
|
| 603 | 599 |
if vars == nil {
|
| 604 | 600 |
return fmt.Errorf("Missing parameter")
|
| 605 | 601 |
} |
| 606 |
- name := vars["name"] |
|
| 607 |
- if err := srv.ContainerRestart(name, t); err != nil {
|
|
| 602 |
+ job := srv.Eng.Job("restart", vars["name"])
|
|
| 603 |
+ job.Setenv("t", r.Form.Get("t"))
|
|
| 604 |
+ if err := job.Run(); err != nil {
|
|
| 608 | 605 |
return err |
| 609 | 606 |
} |
| 610 | 607 |
w.WriteHeader(http.StatusNoContent) |
| ... | ... |
@@ -188,7 +188,9 @@ func TestCreateStartRestartStopStartKillRm(t *testing.T) {
|
| 188 | 188 |
t.Fatal(err) |
| 189 | 189 |
} |
| 190 | 190 |
|
| 191 |
- if err := srv.ContainerRestart(id, 15); err != nil {
|
|
| 191 |
+ job = eng.Job("restart", id)
|
|
| 192 |
+ job.SetenvInt("t", 15)
|
|
| 193 |
+ if err := job.Run(); err != nil {
|
|
| 192 | 194 |
t.Fatal(err) |
| 193 | 195 |
} |
| 194 | 196 |
|
| ... | ... |
@@ -84,6 +84,10 @@ func jobInitApi(job *engine.Job) engine.Status {
|
| 84 | 84 |
job.Error(err) |
| 85 | 85 |
return engine.StatusErr |
| 86 | 86 |
} |
| 87 |
+ if err := job.Eng.Register("restart", srv.ContainerRestart); err != nil {
|
|
| 88 |
+ job.Error(err) |
|
| 89 |
+ return engine.StatusErr |
|
| 90 |
+ } |
|
| 87 | 91 |
if err := job.Eng.Register("start", srv.ContainerStart); err != nil {
|
| 88 | 92 |
job.Error(err) |
| 89 | 93 |
return engine.StatusErr |
| ... | ... |
@@ -1419,16 +1423,28 @@ func (srv *Server) ContainerCreate(job *engine.Job) engine.Status {
|
| 1419 | 1419 |
return engine.StatusOK |
| 1420 | 1420 |
} |
| 1421 | 1421 |
|
| 1422 |
-func (srv *Server) ContainerRestart(name string, t int) error {
|
|
| 1422 |
+func (srv *Server) ContainerRestart(job *engine.Job) engine.Status {
|
|
| 1423 |
+ if len(job.Args) != 1 {
|
|
| 1424 |
+ job.Errorf("Usage: %s CONTAINER\n", job.Name)
|
|
| 1425 |
+ return engine.StatusErr |
|
| 1426 |
+ } |
|
| 1427 |
+ name := job.Args[0] |
|
| 1428 |
+ t := job.GetenvInt("t")
|
|
| 1429 |
+ if t == -1 {
|
|
| 1430 |
+ t = 10 |
|
| 1431 |
+ } |
|
| 1423 | 1432 |
if container := srv.runtime.Get(name); container != nil {
|
| 1424 |
- if err := container.Restart(t); err != nil {
|
|
| 1425 |
- return fmt.Errorf("Cannot restart container %s: %s", name, err)
|
|
| 1433 |
+ if err := container.Restart(int(t)); err != nil {
|
|
| 1434 |
+ job.Errorf("Cannot restart container %s: %s\n", name, err)
|
|
| 1435 |
+ return engine.StatusErr |
|
| 1426 | 1436 |
} |
| 1427 | 1437 |
srv.LogEvent("restart", container.ID, srv.runtime.repositories.ImageName(container.Image))
|
| 1428 | 1438 |
} else {
|
| 1429 |
- return fmt.Errorf("No such container: %s", name)
|
|
| 1439 |
+ job.Errorf("No such container: %s\n", name)
|
|
| 1440 |
+ return engine.StatusErr |
|
| 1430 | 1441 |
} |
| 1431 |
- return nil |
|
| 1442 |
+ return engine.StatusOK |
|
| 1443 |
+ |
|
| 1432 | 1444 |
} |
| 1433 | 1445 |
|
| 1434 | 1446 |
func (srv *Server) ContainerDestroy(name string, removeVolume, removeLink bool) error {
|