package pingmesh
import (
"strconv"
v1 "k8s.io/api/core/v1"
"ascend-common/common-utils/hwlog"
"clusterd/pkg/common/constant"
"clusterd/pkg/domain/node"
"clusterd/pkg/domain/superpod"
)
func NodeCollector(oldNodeInfo, newNodeInfo *v1.Node, operator string) {
nodeDevice, superPodID := node.GetNodeDeviceAndSuperPodID(newNodeInfo)
if superPodID == "" || nodeDevice == nil {
hwlog.RunLog.Debugf("discard illegal super pod device info, superPodID=%s.", superPodID)
return
}
if !isValidDeviceType(nodeDevice) {
hwlog.RunLog.Debugf("discard illegal node device type info, superPodID=%s.", superPodID)
return
}
spIdIntValue, err := strconv.Atoi(superPodID)
if spIdIntValue < 0 || err != nil {
hwlog.RunLog.Debugf("superPodID=%s cannot converto a natural number", superPodID)
return
}
switch operator {
case constant.AddOperator, constant.UpdateOperator:
superpod.SaveNode(superPodID, nodeDevice)
addEvent(superPodID, constant.UpdateOperator)
case constant.DeleteOperator:
superpod.DeleteNode(superPodID, newNodeInfo.Name)
superpod.DeleteNodeInRackMap(superPodID, nodeDevice)
device := superpod.GetSuperPodDevice(superPodID)
if device == nil {
addEvent(superPodID, constant.DeleteOperator)
return
}
addEvent(superPodID, constant.UpdateOperator)
default:
hwlog.RunLog.Errorf("error operator: %s", operator)
}
}