summaryrefslogtreecommitdiffstats
path: root/src/go/collectors/go.d.plugin/modules/k8s_state/update_node_state.go
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/go/collectors/go.d.plugin/modules/k8s_state/update_node_state.go47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/go/collectors/go.d.plugin/modules/k8s_state/update_node_state.go b/src/go/collectors/go.d.plugin/modules/k8s_state/update_node_state.go
new file mode 100644
index 000000000..80f5c26c8
--- /dev/null
+++ b/src/go/collectors/go.d.plugin/modules/k8s_state/update_node_state.go
@@ -0,0 +1,47 @@
+// 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
+ }
+ }
+}