mirror of
https://github.com/komodorio/helm-dashboard.git
synced 2026-03-21 18:58:03 +00:00
* added more info to features.md * added details to FEATURES.md * . * reset to last commit * Update FEATURES.md * feat: add flags to disable slow health and latest version checks - Introduce --no-health and --no-latest CLI flags - Support HD_NO_HEALTH and HD_NO_LATEST environment variables - Skip slow k8s health checks and latest version fetching when flags are set - Optimize frontend data fetching based on these flags * chore: fix lint errors in InstalledPackageCard.tsx * chore: remove accidental lockfile changes
This commit is contained in:
committed by
GitHub
parent
323a60fe31
commit
65a250e2a4
@@ -43,6 +43,8 @@ export interface ApplicationStatus {
|
||||
ClusterMode: boolean;
|
||||
CurVer: string;
|
||||
LatestVer: string;
|
||||
NoHealth: boolean;
|
||||
NoLatest: boolean;
|
||||
}
|
||||
|
||||
export interface KubectlContexts {
|
||||
|
||||
@@ -16,6 +16,7 @@ import { isNewerVersion } from "../../utils";
|
||||
import type { LatestChartVersion } from "../../API/interfaces";
|
||||
import useNavigateWithSearchParams from "../../hooks/useNavigateWithSearchParams";
|
||||
import { useInView } from "react-intersection-observer";
|
||||
import { useGetApplicationStatus } from "../../API/other";
|
||||
|
||||
type InstalledPackageCardProps = {
|
||||
release: Release;
|
||||
@@ -31,14 +32,17 @@ export default function InstalledPackageCard({
|
||||
threshold: 0.3,
|
||||
triggerOnce: true,
|
||||
});
|
||||
const { data: status } = useGetApplicationStatus();
|
||||
|
||||
const { data: latestVersionResult } = useGetLatestVersion(release.chartName, {
|
||||
queryKey: ["chartName", release.chartName],
|
||||
enabled: !status?.NoLatest,
|
||||
});
|
||||
|
||||
const { data: statusData = [], isLoading } = useQuery<ReleaseHealthStatus[]>({
|
||||
queryKey: ["resourceStatus", release],
|
||||
queryFn: () => apiService.getResourceStatus({ release }),
|
||||
enabled: inView,
|
||||
enabled: inView && !status?.NoHealth,
|
||||
});
|
||||
|
||||
const latestVersionData: LatestChartVersion | undefined =
|
||||
|
||||
@@ -104,6 +104,8 @@ export type Status = {
|
||||
Analytics: boolean;
|
||||
CacheHitRatio: number;
|
||||
ClusterMode: boolean;
|
||||
NoHealth: boolean;
|
||||
NoLatest: boolean;
|
||||
};
|
||||
|
||||
export type ChartVersion = {
|
||||
|
||||
4
main.go
4
main.go
@@ -34,6 +34,8 @@ type options struct {
|
||||
Namespace string `short:"n" long:"namespace" description:"Namespace for HELM operations"`
|
||||
Devel bool `long:"devel" description:"Include development versions of charts"`
|
||||
LocalChart []string `long:"local-chart" description:"Specify location of local chart to include into UI"`
|
||||
NoHealth bool `long:"no-health" description:"Disable health checks for installed charts"`
|
||||
NoLatest bool `long:"no-latest" description:"Disable latest version checks for installed charts"`
|
||||
}
|
||||
|
||||
func main() {
|
||||
@@ -62,6 +64,8 @@ func main() {
|
||||
NoTracking: opts.NoTracking,
|
||||
Devel: opts.Devel,
|
||||
LocalCharts: opts.LocalChart,
|
||||
NoHealth: opts.NoHealth,
|
||||
NoLatest: opts.NoLatest,
|
||||
}
|
||||
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
|
||||
@@ -148,7 +148,7 @@ func (h *HelmHandler) Resources(c *gin.Context) {
|
||||
//return
|
||||
}
|
||||
|
||||
if c.Query("health") != "" { // we need to query k8s for health status
|
||||
if c.Query("health") != "" && !h.Data.StatusInfo.NoHealth { // we need to query k8s for health status
|
||||
app := h.GetApp(c)
|
||||
if app == nil {
|
||||
_ = c.AbortWithError(http.StatusInternalServerError, err)
|
||||
@@ -216,6 +216,11 @@ func (h *HelmHandler) RepoLatestVer(c *gin.Context) {
|
||||
return // sets error inside
|
||||
}
|
||||
|
||||
if h.Data.StatusInfo.NoLatest {
|
||||
c.Status(http.StatusNoContent)
|
||||
return
|
||||
}
|
||||
|
||||
rep, err := app.Repositories.Containing(qp.Name)
|
||||
if err != nil {
|
||||
_ = c.AbortWithError(http.StatusInternalServerError, err)
|
||||
|
||||
@@ -41,6 +41,8 @@ type StatusInfo struct {
|
||||
Analytics bool
|
||||
CacheHitRatio float64
|
||||
ClusterMode bool
|
||||
NoHealth bool
|
||||
NoLatest bool
|
||||
}
|
||||
|
||||
func NewDataLayer(ns []string, ver string, cg HelmConfigGetter, devel bool) (*DataLayer, error) {
|
||||
|
||||
@@ -29,6 +29,8 @@ type Server struct {
|
||||
NoTracking bool
|
||||
Devel bool
|
||||
LocalCharts []string
|
||||
NoHealth bool
|
||||
NoLatest bool
|
||||
}
|
||||
|
||||
func (s *Server) StartServer(ctx context.Context, cancel context.CancelFunc) (string, utils.ControlChan, error) {
|
||||
@@ -40,6 +42,9 @@ func (s *Server) StartServer(ctx context.Context, cancel context.CancelFunc) (st
|
||||
data.LocalCharts = s.LocalCharts
|
||||
data.StatusInfo.Analytics = (!s.NoTracking && s.Version != "0.0.0") || utils.EnvAsBool("HD_DEV_ANALYTICS", false)
|
||||
|
||||
data.StatusInfo.NoHealth = s.NoHealth || utils.EnvAsBool("HD_NO_HEALTH", false)
|
||||
data.StatusInfo.NoLatest = s.NoLatest || utils.EnvAsBool("HD_NO_LATEST", false)
|
||||
|
||||
err = s.detectClusterMode(data)
|
||||
if err != nil {
|
||||
return "", nil, errorx.Decorate(err, "Failed to detect cluster mode")
|
||||
|
||||
Reference in New Issue
Block a user