New engine command: 'wait'
Upstream-commit: 3569d080afc721a1eb04ad4a65f1309b53da1238 Component: engine
This commit is contained in:
@@ -710,14 +710,18 @@ func postContainersWait(srv *Server, version float64, w http.ResponseWriter, r *
|
||||
if vars == nil {
|
||||
return fmt.Errorf("Missing parameter")
|
||||
}
|
||||
name := vars["name"]
|
||||
|
||||
status, err := srv.ContainerWait(name)
|
||||
job := srv.Eng.Job("wait", vars["name"])
|
||||
var statusStr string
|
||||
job.Stdout.AddString(&statusStr)
|
||||
if err := job.Run(); err != nil {
|
||||
return err
|
||||
}
|
||||
// Parse a 16-bit encoded integer to map typical unix exit status.
|
||||
status, err := strconv.ParseInt(statusStr, 10, 16)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return writeJSON(w, http.StatusOK, &APIWait{StatusCode: status})
|
||||
return writeJSON(w, http.StatusOK, &APIWait{StatusCode: int(status)})
|
||||
}
|
||||
|
||||
func postContainersResize(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
||||
|
||||
@@ -256,7 +256,7 @@ func TestRmi(t *testing.T) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if _, err := srv.ContainerWait(containerID); err != nil {
|
||||
if err := eng.Job("wait", containerID).Run(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
@@ -281,7 +281,7 @@ func TestRmi(t *testing.T) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if _, err := srv.ContainerWait(containerID); err != nil {
|
||||
if err := eng.Job("wait", containerID).Run(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
|
||||
@@ -82,6 +82,10 @@ func jobInitApi(job *engine.Job) engine.Status {
|
||||
job.Error(err)
|
||||
return engine.StatusErr
|
||||
}
|
||||
if err := job.Eng.Register("wait", srv.ContainerWait); err != nil {
|
||||
job.Error(err)
|
||||
return engine.StatusErr
|
||||
}
|
||||
return engine.StatusOK
|
||||
}
|
||||
|
||||
@@ -1718,11 +1722,19 @@ func (srv *Server) ContainerStop(name string, t int) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (srv *Server) ContainerWait(name string) (int, error) {
|
||||
if container := srv.runtime.Get(name); container != nil {
|
||||
return container.Wait(), nil
|
||||
func (srv *Server) ContainerWait(job *engine.Job) engine.Status {
|
||||
if len(job.Args) != 1 {
|
||||
job.Errorf("Usage: %s", job.Name)
|
||||
return engine.StatusErr
|
||||
}
|
||||
return 0, fmt.Errorf("No such container: %s", name)
|
||||
name := job.Args[0]
|
||||
if container := srv.runtime.Get(name); container != nil {
|
||||
status := container.Wait()
|
||||
job.Printf("%d\n", status)
|
||||
return engine.StatusOK
|
||||
}
|
||||
job.Errorf("%s: no such container: %s", job.Name, name)
|
||||
return engine.StatusErr
|
||||
}
|
||||
|
||||
func (srv *Server) ContainerResize(name string, h, w int) error {
|
||||
|
||||
Reference in New Issue
Block a user