mirror of
https://github.com/komodorio/helm-dashboard.git
synced 2026-03-24 03:38:04 +00:00
* Add logo * Refactor out structs * Data layer context-awareness * Mod * Data layer improvements * Progress * Progress * Progress * Figured the time format shorter * Statuses colors * Sticky URL * Calculate some diffs inside * Separate checks * Scrap gofmt * Skip custom test in GH * Shows some colorful diff
59 lines
1.3 KiB
Go
59 lines
1.3 KiB
Go
package dashboard
|
|
|
|
import (
|
|
"context"
|
|
"github.com/gin-gonic/gin"
|
|
log "github.com/sirupsen/logrus"
|
|
"net/http"
|
|
"os"
|
|
)
|
|
|
|
func StartServer() (string, ControlChan) {
|
|
data := DataLayer{}
|
|
err := data.CheckConnectivity()
|
|
if err != nil {
|
|
log.Errorf("Failed to check that Helm is operational, cannot continue. The error was: %s", err)
|
|
os.Exit(1) // TODO: propagate error instead?
|
|
}
|
|
|
|
address := os.Getenv("HD_BIND")
|
|
if address == "" {
|
|
address = "localhost"
|
|
}
|
|
|
|
if os.Getenv("HD_PORT") == "" {
|
|
address += ":8080" // TODO: better default port to clash less?
|
|
} else {
|
|
address += ":" + os.Getenv("HD_PORT")
|
|
}
|
|
|
|
abort := make(ControlChan)
|
|
api := NewRouter(abort, data)
|
|
done := startBackgroundServer(address, api, abort)
|
|
|
|
return "http://" + address, done
|
|
}
|
|
|
|
func startBackgroundServer(addr string, routes *gin.Engine, abort ControlChan) ControlChan {
|
|
done := make(ControlChan)
|
|
server := &http.Server{Addr: addr, Handler: routes}
|
|
|
|
go func() {
|
|
err := server.ListenAndServe()
|
|
if err != nil && err != http.ErrServerClosed {
|
|
panic(err) // TODO: in case of "port busy", check that it's another instance of us and just open browser
|
|
}
|
|
done <- struct{}{}
|
|
}()
|
|
|
|
go func() {
|
|
<-abort
|
|
err := server.Shutdown(context.Background())
|
|
if err != nil {
|
|
log.Warnf("Had problems shutting down the server: %s", err)
|
|
}
|
|
}()
|
|
|
|
return done
|
|
}
|