github.com/netdata/go.d.plugin@v0.58.1/modules/k8s_state/update_node_state.go (about) 1 // SPDX-License-Identifier: GPL-3.0-or-later 2 3 package k8s_state 4 5 func (ks *KubeState) updateNodeState(r resource) { 6 if r.value() == nil { 7 if ns, ok := ks.state.nodes[r.source()]; ok { 8 ns.deleted = true 9 } 10 return 11 } 12 13 node, err := toNode(r) 14 if err != nil { 15 ks.Warning(err) 16 return 17 } 18 19 if myNodeName != "" && node.Name != myNodeName { 20 return 21 } 22 23 ns, ok := ks.state.nodes[r.source()] 24 if !ok { 25 ns = newNodeState() 26 ks.state.nodes[r.source()] = ns 27 } 28 29 if !ok { 30 ns.name = node.Name 31 ns.creationTime = node.CreationTimestamp.Time 32 ns.allocatableCPU = int64(node.Status.Allocatable.Cpu().AsApproximateFloat64() * 1000) 33 ns.allocatableMem = node.Status.Allocatable.Memory().Value() 34 ns.allocatablePods = node.Status.Allocatable.Pods().Value() 35 copyLabels(ns.labels, node.Labels) 36 } 37 38 ns.unSchedulable = node.Spec.Unschedulable 39 40 for _, c := range node.Status.Conditions { 41 if v, ok := ns.conditions[string(c.Type)]; !ok { 42 ns.conditions[string(c.Type)] = &nodeStateCondition{new: true, status: c.Status} 43 } else { 44 v.status = c.Status 45 } 46 } 47 }