JCC-CSScheduler/common/pkgs/mq/collector/apis.go

161 lines
4.2 KiB
Go

package collector
import (
"gitlink.org.cn/cloudream/common/models"
"gitlink.org.cn/cloudream/common/pkgs/mq"
myreflect "gitlink.org.cn/cloudream/common/utils/reflect"
)
// 获取package的缓存分布情况
var _ = Register(Service.PackageGetCachedNodes)
type PackageGetCachedNodes struct {
UserID int64 `json:"userID"`
PackageID int64 `json:"packageID"`
}
func NewPackageGetCachedNodes(userID int64, packageID int64) PackageGetCachedNodes {
return PackageGetCachedNodes{
UserID: userID,
PackageID: packageID,
}
}
type PackageGetCachedNodesResp struct {
models.PackageCachingInfo
}
func NewPackageGetCachedNodesResp(nodeInfos []models.NodePackageCachingInfo, packageSize int64, redunancyType string) PackageGetCachedNodesResp {
return PackageGetCachedNodesResp{
PackageCachingInfo: models.PackageCachingInfo{
NodeInfos: nodeInfos,
PackageSize: packageSize,
RedunancyType: redunancyType,
},
}
}
func (c *Client) PackageGetCachedNodes(msg PackageGetCachedNodes, opts ...mq.RequestOption) (*PackageGetCachedNodesResp, error) {
return mq.Request[PackageGetCachedNodesResp](c.rabbitCli, msg, opts...)
}
// 获取package的存储分布情况
var _ = Register(Service.PackageGetLoadedNodes)
type PackageGetLoadedNodes struct {
UserID int64 `json:"userID"`
PackageID int64 `json:"packageID"`
}
func NewPackageGetLoadedNodes(userID int64, packageID int64) PackageGetLoadedNodes {
return PackageGetLoadedNodes{
UserID: userID,
PackageID: packageID,
}
}
type PackageGetLoadedNodesResp struct {
NodeIDs []int64 `json:"nodeIDs"`
}
func NewPackageGetLoadedNodesResp(nodeIDs []int64) PackageGetLoadedNodesResp {
return PackageGetLoadedNodesResp{
NodeIDs: nodeIDs,
}
}
func (c *Client) PackageGetLoadedNodes(msg PackageGetLoadedNodes, opts ...mq.RequestOption) (*PackageGetLoadedNodesResp, error) {
return mq.Request[PackageGetLoadedNodesResp](c.rabbitCli, msg, opts...)
}
// 获取节点信息
var _ = Register(Service.GetSlwNodeInfo)
type GetSlwNodeInfo struct {
}
func NewGetSlwNodeInfo() GetSlwNodeInfoResp {
return GetSlwNodeInfoResp{}
}
type GetSlwNodeInfoResp struct {
Nodes []models.SlwNode `json:"nodes"`
}
func NewGetSlwNodeInfoResp(nodes []models.SlwNode) GetSlwNodeInfoResp {
return GetSlwNodeInfoResp{
Nodes: nodes,
}
}
func (c *Client) GetSlwNodeInfo(msg GetSlwNodeInfo, opts ...mq.RequestOption) (*[]GetSlwNodeInfoResp, error) {
return mq.Request[[]GetSlwNodeInfoResp](c.rabbitCli, msg, opts...)
}
// 根据nodeID和类型名称获取节点中某一类型的信息
var _ = Register(Service.GetOneResourceData)
type GetOneResourceData struct {
NodeId int64 `json:"nodeId"`
ResourceType string `json:"type"`
}
func NewGetOneResourceData(nodeId int64, resourceType string) GetOneResourceData {
return GetOneResourceData{
NodeId: nodeId,
ResourceType: resourceType,
}
}
type GetOneResourceDataResp struct {
Data models.ResourceData `json:"data"`
}
func NewGetOneResourceDataResp(data models.ResourceData) GetOneResourceDataResp {
return GetOneResourceDataResp{
Data: data,
}
}
func (c *Client) GetOneResourceData(msg GetOneResourceData, opts ...mq.RequestOption) (*GetOneResourceDataResp, error) {
return mq.Request[GetOneResourceDataResp](c.rabbitCli, msg, opts...)
}
// 根据nodeID获取节点全部资源信息
var _ = Register(Service.GetAllResourceData)
type GetAllResourceData struct {
NodeId int64 `json:"nodeId"`
}
func NewGetAllResourceData(nodeId int64) GetAllResourceData {
return GetAllResourceData{
NodeId: nodeId,
}
}
type GetAllResourceDataResp struct {
Datas []models.ResourceData `json:"datas"`
}
func NewGetAllResourceDataResp(datas []models.ResourceData) GetAllResourceDataResp {
return GetAllResourceDataResp{
Datas: datas,
}
}
func (c *Client) GetAllResourceData(msg GetAllResourceData, opts ...mq.RequestOption) (*GetAllResourceDataResp, error) {
return mq.Request[GetAllResourceDataResp](c.rabbitCli, msg, opts...)
}
func init() {
mq.RegisterTypeSet[models.ResourceData](
myreflect.TypeOf[models.CPUResourceData](),
myreflect.TypeOf[models.NPUResourceData](),
myreflect.TypeOf[models.GPUResourceData](),
myreflect.TypeOf[models.MLUResourceData](),
myreflect.TypeOf[models.StorageResourceData](),
myreflect.TypeOf[models.MemoryResourceData](),
)
}