k9s/internal/watch/helpers.go

69 lines
1.3 KiB
Go

package watch
import (
"github.com/rs/zerolog/log"
v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
func resourceDiff(l1, l2 v1.ResourceList) bool {
if l1.Cpu().Cmp(*l2.Cpu()) != 0 {
return true
}
if l1.Memory().Cmp(*l2.Memory()) != 0 {
return true
}
return false
}
// MetaFQN computes unique resource id based on metadata.
func MetaFQN(m metav1.ObjectMeta) string {
if m.Namespace == "" {
return m.Name
}
return m.Namespace + "/" + m.Name
}
// ToSelector converts a string selector into a map.
func toSelector(s string) map[string]string {
var m map[string]string
ls, err := metav1.ParseToLabelSelector(s)
if err != nil {
log.Error().Err(err).Msg("StringToSel")
return m
}
mSel, err := metav1.LabelSelectorAsMap(ls)
if err != nil {
log.Error().Err(err).Msg("SelToMap")
return m
}
return mSel
}
// MatchesNode checks if pod selector matches node name.
func matchesNode(name string, selector map[string]string) bool {
if len(selector) == 0 {
return true
}
return selector["spec.nodeName"] == name
}
// MatchesLabels check if pod labels matches a given selector.
func matchesLabels(labels, selector map[string]string) bool {
if len(selector) == 0 {
return true
}
for k, v := range selector {
la, ok := labels[k]
if !ok || la != v {
return false
}
}
return true
}