From 03887d4a1dcadd0ad53b5a87a14958334c2cf29c Mon Sep 17 00:00:00 2001 From: Jeffrey Paul Date: Fri, 8 Nov 2019 22:13:19 -0800 Subject: [PATCH] refactored some things --- apihandlers.go | 2 -- apiserver.go | 58 +++++++++++++++++++++++++++++++------------------- manager.go | 1 + 3 files changed, 37 insertions(+), 24 deletions(-) diff --git a/apihandlers.go b/apihandlers.go index 3f9120f..67d7dd3 100644 --- a/apihandlers.go +++ b/apihandlers.go @@ -71,7 +71,6 @@ func (a *FetaAPIServer) getInstanceListHandler() http.HandlerFunc { func (a *FetaAPIServer) getIndexHandler() http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { - index := &gin.H{ "server": &gin.H{ "now": time.Now().UTC().Format(time.RFC3339), @@ -94,7 +93,6 @@ func (a *FetaAPIServer) getIndexHandler() http.HandlerFunc { w.Header().Set("Content-Type", "application/json") w.Write(json) - } } diff --git a/apiserver.go b/apiserver.go index 0013f27..9e55568 100644 --- a/apiserver.go +++ b/apiserver.go @@ -1,16 +1,21 @@ package feta import "fmt" -import "os" -import "time" import "net/http" +import "os" +import "strconv" +import "time" import "github.com/rs/zerolog/log" import "github.com/gin-gonic/gin" import "github.com/dn365/gin-zerolog" type FetaAPIServer struct { - feta *FetaProcess + feta *FetaProcess + port uint + router *gin.Engine + server *http.Server + debug bool } func (self *FetaAPIServer) SetFeta(feta *FetaProcess) { @@ -21,18 +26,31 @@ func (a *FetaAPIServer) Serve() { if a.feta == nil { panic("must have feta app from which to serve stats") } - s := a.getServer() - err := s.ListenAndServe() + + if os.Getenv("DEBUG") != "" { + a.debug = true + } + + a.port = 8080 + + if os.Getenv("PORT") != "" { + s, err := strconv.ParseUint(os.Getenv("PORT"), 10, 64) + if err != nil { + a.port = uint(s) + } + } + + a.initRouter() + a.initServer() + err := a.server.ListenAndServe() + if err != nil { - log.Fatal().Msg("webserver failure: " + err.Error()) + log.Fatal().Err(err).Msg("webserver failure") return } } -func (a *FetaAPIServer) getRouter() *gin.Engine { - if os.Getenv("DEBUG") == "" { - gin.SetMode(gin.ReleaseMode) - } +func (a *FetaAPIServer) initRouter() { // empty router r := gin.New() @@ -48,25 +66,21 @@ func (a *FetaAPIServer) getRouter() *gin.Engine { r.GET("/feta", gin.WrapF(a.getIndexHandler())) r.GET("/feta/list/instances", gin.WrapF(a.getInstanceListHandler())) - return r + a.router = r } -func (a *FetaAPIServer) getServer() *http.Server { - r := a.getRouter() - - port := "8080" - if os.Getenv("PORT") != "" { - port = os.Getenv("PORT") +func (a *FetaAPIServer) initServer() { + if !a.debug { + gin.SetMode(gin.ReleaseMode) } - log.Info().Str("port", port).Msg("starting webserver") + log.Info().Uint("port", a.port).Msg("starting webserver") - s := &http.Server{ - Addr: fmt.Sprintf(":%s", port), - Handler: r, + a.server = &http.Server{ + Addr: fmt.Sprintf(":%d", a.port), + Handler: a.router, ReadTimeout: 10 * time.Second, WriteTimeout: 10 * time.Second, MaxHeaderBytes: 1 << 20, } - return s } diff --git a/manager.go b/manager.go index fe325d8..e6c4aca 100644 --- a/manager.go +++ b/manager.go @@ -10,6 +10,7 @@ import "github.com/rs/zerolog/log" const HOST_DISCOVERY_PARALLELISM = 1 type InstanceBackend interface { + //FIXME }