@@ -11,6 +11,7 @@ import (
1111
1212 "github.com/citadel/citadel"
1313 "github.com/codegangsta/negroni"
14+ "github.com/docker/docker/pkg/stdcopy"
1415 "github.com/gorilla/context"
1516 "github.com/gorilla/mux"
1617 "github.com/shipyard/shipyard"
@@ -137,6 +138,25 @@ func stopContainer(w http.ResponseWriter, r *http.Request) {
137138 w .WriteHeader (http .StatusNoContent )
138139}
139140
141+ func containerLogs (w http.ResponseWriter , r * http.Request ) {
142+ vars := mux .Vars (r )
143+ id := vars ["id" ]
144+ container , err := controllerManager .Container (id )
145+ if err != nil {
146+ http .Error (w , err .Error (), http .StatusInternalServerError )
147+ return
148+ }
149+
150+ data , err := controllerManager .ClusterManager ().Logs (container , true , true )
151+ if err != nil {
152+ logger .Errorf ("error getting logs for %s: %s" , container .ID , err )
153+ http .Error (w , err .Error (), http .StatusInternalServerError )
154+ return
155+ }
156+
157+ stdcopy .StdCopy (w , w , data )
158+ }
159+
140160func restartContainer (w http.ResponseWriter , r * http.Request ) {
141161 vars := mux .Vars (r )
142162 id := vars ["id" ]
@@ -707,6 +727,7 @@ func main() {
707727 apiRouter .HandleFunc ("/api/containers/{id}/stop" , stopContainer ).Methods ("GET" )
708728 apiRouter .HandleFunc ("/api/containers/{id}/restart" , restartContainer ).Methods ("GET" )
709729 apiRouter .HandleFunc ("/api/containers/{id}/scale" , scaleContainer ).Methods ("GET" )
730+ apiRouter .HandleFunc ("/api/containers/{id}/logs" , containerLogs ).Methods ("GET" )
710731 apiRouter .HandleFunc ("/api/events" , events ).Methods ("GET" )
711732 apiRouter .HandleFunc ("/api/events" , purgeEvents ).Methods ("DELETE" )
712733 apiRouter .HandleFunc ("/api/engines" , engines ).Methods ("GET" )
0 commit comments