diff options
Diffstat (limited to 'src/go/collectors/go.d.plugin/modules/k8s_state/update_node_state.go')
-rw-r--r-- | src/go/collectors/go.d.plugin/modules/k8s_state/update_node_state.go | 47 |
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 + } + } +} |