зеркало из https://github.com/microsoft/docker.git
Move restart to a job
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
This commit is contained in:
Родитель
f43f3fa218
Коммит
15689b56c8
9
api.go
9
api.go
|
@ -596,15 +596,12 @@ func postContainersRestart(srv *Server, version float64, w http.ResponseWriter,
|
|||
if err := parseForm(r); err != nil {
|
||||
return err
|
||||
}
|
||||
t, err := strconv.Atoi(r.Form.Get("t"))
|
||||
if err != nil || t < 0 {
|
||||
t = 10
|
||||
}
|
||||
if vars == nil {
|
||||
return fmt.Errorf("Missing parameter")
|
||||
}
|
||||
name := vars["name"]
|
||||
if err := srv.ContainerRestart(name, t); err != nil {
|
||||
job := srv.Eng.Job("restart", vars["name"])
|
||||
job.Setenv("t", r.Form.Get("t"))
|
||||
if err := job.Run(); err != nil {
|
||||
return err
|
||||
}
|
||||
w.WriteHeader(http.StatusNoContent)
|
||||
|
|
|
@ -188,7 +188,9 @@ func TestCreateStartRestartStopStartKillRm(t *testing.T) {
|
|||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if err := srv.ContainerRestart(id, 15); err != nil {
|
||||
job = eng.Job("restart", id)
|
||||
job.SetenvInt("t", 15)
|
||||
if err := job.Run(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
|
|
26
server.go
26
server.go
|
@ -84,6 +84,10 @@ func jobInitApi(job *engine.Job) engine.Status {
|
|||
job.Error(err)
|
||||
return engine.StatusErr
|
||||
}
|
||||
if err := job.Eng.Register("restart", srv.ContainerRestart); err != nil {
|
||||
job.Error(err)
|
||||
return engine.StatusErr
|
||||
}
|
||||
if err := job.Eng.Register("start", srv.ContainerStart); err != nil {
|
||||
job.Error(err)
|
||||
return engine.StatusErr
|
||||
|
@ -1419,16 +1423,28 @@ func (srv *Server) ContainerCreate(job *engine.Job) engine.Status {
|
|||
return engine.StatusOK
|
||||
}
|
||||
|
||||
func (srv *Server) ContainerRestart(name string, t int) error {
|
||||
func (srv *Server) ContainerRestart(job *engine.Job) engine.Status {
|
||||
if len(job.Args) != 1 {
|
||||
job.Errorf("Usage: %s CONTAINER\n", job.Name)
|
||||
return engine.StatusErr
|
||||
}
|
||||
name := job.Args[0]
|
||||
t := job.GetenvInt("t")
|
||||
if t == -1 {
|
||||
t = 10
|
||||
}
|
||||
if container := srv.runtime.Get(name); container != nil {
|
||||
if err := container.Restart(t); err != nil {
|
||||
return fmt.Errorf("Cannot restart container %s: %s", name, err)
|
||||
if err := container.Restart(int(t)); err != nil {
|
||||
job.Errorf("Cannot restart container %s: %s\n", name, err)
|
||||
return engine.StatusErr
|
||||
}
|
||||
srv.LogEvent("restart", container.ID, srv.runtime.repositories.ImageName(container.Image))
|
||||
} else {
|
||||
return fmt.Errorf("No such container: %s", name)
|
||||
job.Errorf("No such container: %s\n", name)
|
||||
return engine.StatusErr
|
||||
}
|
||||
return nil
|
||||
return engine.StatusOK
|
||||
|
||||
}
|
||||
|
||||
func (srv *Server) ContainerDestroy(name string, removeVolume, removeLink bool) error {
|
||||
|
|
Загрузка…
Ссылка в новой задаче