From f26896274a4ac8eee3ee5ca5c1fcde52d3ac14c2 Mon Sep 17 00:00:00 2001 From: Ben Firshman Date: Fri, 6 Jun 2014 18:27:22 -0700 Subject: [PATCH 1/4] Remove debugging statement from debug backend Signed-off-by: Ben Firshman --- backends/debug.go | 1 - 1 file changed, 1 deletion(-) diff --git a/backends/debug.go b/backends/debug.go index 42e4cad579..fa8020676f 100644 --- a/backends/debug.go +++ b/backends/debug.go @@ -11,7 +11,6 @@ func Debug() beam.Sender { backend := beam.NewServer() backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error { instance := beam.Task(func(in beam.Receiver, out beam.Sender) { - fmt.Printf("debug backend!") for { msg, err := in.Receive(beam.Ret) if err != nil { From 2d6548b96244c519f8f3f22c72617cb480984055 Mon Sep 17 00:00:00 2001 From: Ben Firshman Date: Fri, 6 Jun 2014 18:28:16 -0700 Subject: [PATCH 2/4] Use http.StatusOK instead of int Signed-off-by: Ben Firshman --- backends/apiserver.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backends/apiserver.go b/backends/apiserver.go index 198109fef6..dbffd35ea5 100644 --- a/backends/apiserver.go +++ b/backends/apiserver.go @@ -58,7 +58,7 @@ func getContainersJSON(out beam.Sender, version version.Version, w http.Response return err } - return writeJSON(w, 200, names) + return writeJSON(w, http.StatusOK, names) } func createRouter(out beam.Sender) (*mux.Router, error) { From 41f3776cf8058ab4170679adcf4da80da5ff5369 Mon Sep 17 00:00:00 2001 From: Ben Firshman Date: Fri, 6 Jun 2014 18:28:34 -0700 Subject: [PATCH 3/4] Support attaching to containers in forward backend Signed-off-by: Ben Firshman --- backends/forward.go | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/backends/forward.go b/backends/forward.go index 4ec2c54ca0..e808228b27 100644 --- a/backends/forward.go +++ b/backends/forward.go @@ -46,10 +46,15 @@ type forwarder struct { } func (f *forwarder) attach(ctx *beam.Message) error { - ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: f.Server}) - for { - time.Sleep(1 * time.Second) - (&beam.Object{ctx.Ret}).Log("forward: heartbeat") + if ctx.Args[0] == "" { + ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: f.Server}) + for { + time.Sleep(1 * time.Second) + (&beam.Object{ctx.Ret}).Log("forward: heartbeat") + } + } else { + c := f.newContainer(ctx.Args[0]) + ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: c}) } return nil } From 9b7ad0bb63f7ecaace3aa9da53042cc10f00151c Mon Sep 17 00:00:00 2001 From: Ben Firshman Date: Fri, 6 Jun 2014 18:29:42 -0700 Subject: [PATCH 4/4] Add start to apiserver Signed-off-by: Ben Firshman --- backends/apiserver.go | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/backends/apiserver.go b/backends/apiserver.go index dbffd35ea5..a163657753 100644 --- a/backends/apiserver.go +++ b/backends/apiserver.go @@ -61,6 +61,27 @@ func getContainersJSON(out beam.Sender, version version.Version, w http.Response return writeJSON(w, http.StatusOK, names) } +func postContainersStart(out beam.Sender, version version.Version, w http.ResponseWriter, r *http.Request, vars map[string]string) error { + if vars == nil { + return fmt.Errorf("Missing parameter") + } + + // TODO: r.Body + + name := vars["name"] + _, containerOut, err := beam.Obj(out).Attach(name) + container := beam.Obj(containerOut) + if err != nil { + return err + } + if err := container.Start(); err != nil { + return err + } + + w.WriteHeader(http.StatusNoContent) + return nil +} + func createRouter(out beam.Sender) (*mux.Router, error) { r := mux.NewRouter() m := map[string]map[string]HttpApiFunc{ @@ -68,7 +89,9 @@ func createRouter(out beam.Sender) (*mux.Router, error) { "/_ping": ping, "/containers/json": getContainersJSON, }, - "POST": {}, + "POST": { + "/containers/{name:.*}/start": postContainersStart, + }, "DELETE": {}, "OPTIONS": {}, }