k9s/internal/render/hpa.go

51 lines
1.1 KiB
Go

// SPDX-License-Identifier: Apache-2.0
// Copyright Authors of K9s
package render
import (
"strconv"
"strings"
"github.com/derailed/k9s/internal/model1"
"github.com/derailed/tcell/v2"
)
// HorizontalPodAutoscaler renders a K8s HorizontalPodAutoscaler to screen.
type HorizontalPodAutoscaler struct {
Generic
}
// ColorerFunc colors a resource row.
func (hpa HorizontalPodAutoscaler) ColorerFunc() model1.ColorerFunc {
return func(ns string, h model1.Header, re *model1.RowEvent) tcell.Color {
c := model1.DefaultColorer(ns, h, re)
maxPodsIndex, ok := h.IndexOf("MAXPODS", true)
if !ok || maxPodsIndex >= len(re.Row.Fields) {
return c
}
replicasIndex, ok := h.IndexOf("REPLICAS", true)
if !ok || replicasIndex >= len(re.Row.Fields) {
return c
}
maxPodsS := strings.TrimSpace(re.Row.Fields[maxPodsIndex])
currentReplicasS := strings.TrimSpace(re.Row.Fields[replicasIndex])
maxPods, err := strconv.Atoi(maxPodsS)
if err != nil {
return c
}
currentReplicas, err := strconv.Atoi(currentReplicasS)
if err != nil {
return c
}
if currentReplicas >= maxPods {
c = model1.ErrColor
}
return c
}
}