JCC-CSScheduler/collector/internal/mq/resource.go

76 lines
2.6 KiB
Go

package mq
import (
"gitlink.org.cn/cloudream/common/consts/errorcode"
"gitlink.org.cn/cloudream/common/pkgs/logger"
"gitlink.org.cn/cloudream/common/pkgs/mq"
uopsdk "gitlink.org.cn/cloudream/common/sdks/unifyops"
schglb "gitlink.org.cn/cloudream/scheduler/common/globals"
colmq "gitlink.org.cn/cloudream/scheduler/common/pkgs/mq/collector"
)
func (svc *Service) GetOneResourceData(msg *colmq.GetOneResourceData) (*colmq.GetOneResourceDataResp, *mq.CodeMessage) {
uniOpsCli, err := schglb.UnifyOpsPool.Acquire()
if err != nil {
logger.Warnf("new unifyOps client, err: %s", err.Error())
return nil, mq.Failed(errorcode.OperationFailed, "new unifyOps client failed")
}
defer schglb.UnifyOpsPool.Release(uniOpsCli)
var resp uopsdk.ResourceData
switch msg.Type {
case uopsdk.ResourceTypeCPU:
resp, err = uniOpsCli.GetCPUData(uopsdk.GetOneResourceDataReq{
SlwNodeID: msg.UOPSlwNodeID,
})
case uopsdk.ResourceTypeNPU:
resp, err = uniOpsCli.GetNPUData(uopsdk.GetOneResourceDataReq{
SlwNodeID: msg.UOPSlwNodeID,
})
case uopsdk.ResourceTypeGPU:
resp, err = uniOpsCli.GetGPUData(uopsdk.GetOneResourceDataReq{
SlwNodeID: msg.UOPSlwNodeID,
})
case uopsdk.ResourceTypeMLU:
resp, err = uniOpsCli.GetMLUData(uopsdk.GetOneResourceDataReq{
SlwNodeID: msg.UOPSlwNodeID,
})
case uopsdk.ResourceTypeStorage:
resp, err = uniOpsCli.GetStorageData(uopsdk.GetOneResourceDataReq{
SlwNodeID: msg.UOPSlwNodeID,
})
case uopsdk.ResourceTypeMemory:
resp, err = uniOpsCli.GetMemoryData(uopsdk.GetOneResourceDataReq{
SlwNodeID: msg.UOPSlwNodeID,
})
default:
return nil, mq.Failed(errorcode.OperationFailed, "invalid resource type")
}
if err != nil {
logger.Warnf("get resource data failed, err: %s", err.Error())
return nil, mq.Failed(errorcode.OperationFailed, "get resource data failed")
}
return mq.ReplyOK(colmq.NewGetOneResourceDataResp(resp))
}
func (svc *Service) GetAllResourceData(msg *colmq.GetAllResourceData) (*colmq.GetAllResourceDataResp, *mq.CodeMessage) {
uniOpsCli, err := schglb.UnifyOpsPool.Acquire()
if err != nil {
logger.Warnf("new unifyOps client, err: %s", err.Error())
return nil, mq.Failed(errorcode.OperationFailed, "new unifyOps client failed")
}
defer schglb.UnifyOpsPool.Release(uniOpsCli)
resps, err := uniOpsCli.GetIndicatorData(uopsdk.GetOneResourceDataReq{
SlwNodeID: msg.UOPSlwNodeID,
})
if err != nil {
logger.Warnf("get all resource data failed, err: %s", err.Error())
return nil, mq.Failed(errorcode.OperationFailed, "get all resource data failed")
}
return mq.ReplyOK(colmq.NewGetAllResourceDataResp(*resps))
}