src/go/plugin/go.d/modules/k8s_state/update_node_state.go
// SPDX-License-Identifier: GPL-3.0-or-later
package k8s_state
func (ks *KubeState) updateNodeState(r resource) {
if r.value() == nil {
if ns, ok := ks.state.nodes[r.source()]; ok {
ns.deleted = true
}
return
}
node, err := toNode(r)
if err != nil {
ks.Warning(err)
return
}
if myNodeName != "" && node.Name != myNodeName {
return
}
ns, ok := ks.state.nodes[r.source()]
if !ok {
ns = newNodeState()
ks.state.nodes[r.source()] = ns
}
if !ok {
ns.name = node.Name
ns.creationTime = node.CreationTimestamp.Time
ns.allocatableCPU = int64(node.Status.Allocatable.Cpu().AsApproximateFloat64() * 1000)
ns.allocatableMem = node.Status.Allocatable.Memory().Value()
ns.allocatablePods = node.Status.Allocatable.Pods().Value()
copyLabels(ns.labels, node.Labels)
}
ns.unSchedulable = node.Spec.Unschedulable
for _, c := range node.Status.Conditions {
if v, ok := ns.conditions[string(c.Type)]; !ok {
ns.conditions[string(c.Type)] = &nodeStateCondition{new: true, status: c.Status}
} else {
v.status = c.Status
}
}
}