Add a FileServer for master's logs

This commit is contained in:
Dawn Chen 2014-06-27 16:08:35 -07:00
parent c292b72495
commit 85152fc137

View File

@ -76,9 +76,10 @@ func MakeAsync(fn WorkFunc) <-chan interface{} {
// //
// TODO: consider migrating this to go-restful which is a more full-featured version of the same thing. // TODO: consider migrating this to go-restful which is a more full-featured version of the same thing.
type ApiServer struct { type ApiServer struct {
prefix string prefix string
storage map[string]RESTStorage storage map[string]RESTStorage
ops *Operations ops *Operations
logserver http.Handler
} }
// New creates a new ApiServer object. // New creates a new ApiServer object.
@ -86,9 +87,10 @@ type ApiServer struct {
// 'prefix' is the hosting path prefix. // 'prefix' is the hosting path prefix.
func New(storage map[string]RESTStorage, prefix string) *ApiServer { func New(storage map[string]RESTStorage, prefix string) *ApiServer {
return &ApiServer{ return &ApiServer{
storage: storage, storage: storage,
prefix: prefix, prefix: prefix,
ops: NewOperations(), ops: NewOperations(),
logserver: http.StripPrefix("/logs/", http.FileServer(http.Dir("/var/log/"))),
} }
} }
@ -120,6 +122,10 @@ func (server *ApiServer) ServeHTTP(w http.ResponseWriter, req *http.Request) {
server.handleIndex(w) server.handleIndex(w)
return return
} }
if strings.HasPrefix(url.Path, "/logs/") {
server.logserver.ServeHTTP(w, req)
return
}
if !strings.HasPrefix(url.Path, server.prefix) { if !strings.HasPrefix(url.Path, server.prefix) {
server.notFound(req, w) server.notFound(req, w)
return return