mirror of
https://github.com/komodorio/helm-dashboard.git
synced 2026-03-24 11:48:04 +00:00
* Less logging when not in DEBUG * Check helm is fine * Display kube context switch * Cosmetics * Displays list of chartss * Linter stuff * Fix option name
77 lines
1.6 KiB
Go
77 lines
1.6 KiB
Go
package dashboard
|
|
|
|
import (
|
|
"embed"
|
|
"github.com/gin-gonic/gin"
|
|
log "github.com/sirupsen/logrus"
|
|
"net/http"
|
|
"os"
|
|
"path"
|
|
)
|
|
|
|
//go:embed static/*
|
|
var staticFS embed.FS
|
|
|
|
func newRouter(abortWeb ControlChan, data DataLayer) *gin.Engine {
|
|
var api *gin.Engine
|
|
if os.Getenv("DEBUG") == "" {
|
|
api = gin.New()
|
|
api.Use(gin.Recovery())
|
|
} else {
|
|
api = gin.Default()
|
|
}
|
|
|
|
fs := http.FS(staticFS)
|
|
|
|
// local dev speed-up
|
|
localDevPath := "pkg/dashboard/static"
|
|
if _, err := os.Stat(localDevPath); err == nil {
|
|
log.Warnf("Using local development path to serve static files")
|
|
|
|
// the root page
|
|
api.GET("/", func(c *gin.Context) {
|
|
c.File(path.Join(localDevPath, "index.html"))
|
|
})
|
|
|
|
// serve a directory called static
|
|
api.GET("/static/*filepath", func(c *gin.Context) {
|
|
c.File(path.Join(localDevPath, c.Param("filepath")))
|
|
})
|
|
} else {
|
|
// the root page
|
|
api.GET("/", func(c *gin.Context) {
|
|
c.FileFromFS("/static/", fs)
|
|
})
|
|
|
|
// serve a directory called static
|
|
api.GET("/static/*filepath", func(c *gin.Context) {
|
|
c.FileFromFS(c.Request.URL.Path, fs)
|
|
})
|
|
}
|
|
|
|
// server shutdown handler
|
|
api.DELETE("/", func(c *gin.Context) {
|
|
abortWeb <- struct{}{}
|
|
})
|
|
|
|
api.GET("/api/helm/charts", func(c *gin.Context) {
|
|
res, err := data.ListInstalled()
|
|
if err != nil {
|
|
_ = c.AbortWithError(http.StatusInternalServerError, err)
|
|
return
|
|
}
|
|
c.IndentedJSON(http.StatusOK, res)
|
|
})
|
|
|
|
api.GET("/api/kube/contexts", func(c *gin.Context) {
|
|
res, err := data.ListContexts()
|
|
if err != nil {
|
|
_ = c.AbortWithError(http.StatusInternalServerError, err)
|
|
return
|
|
}
|
|
c.IndentedJSON(http.StatusOK, res)
|
|
})
|
|
|
|
return api
|
|
}
|