forked from JointCloud/JCC-CSScheduler
86 lines
2.8 KiB
Go
86 lines
2.8 KiB
Go
package schmod
|
||
|
||
import (
|
||
"fmt"
|
||
"time"
|
||
|
||
pcmsdk "gitlink.org.cn/cloudream/common/sdks/pcm"
|
||
schsdk "gitlink.org.cn/cloudream/common/sdks/scheduler"
|
||
cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
|
||
uopsdk "gitlink.org.cn/cloudream/common/sdks/unifyops"
|
||
myreflect "gitlink.org.cn/cloudream/common/utils/reflect"
|
||
"gitlink.org.cn/cloudream/common/utils/serder"
|
||
)
|
||
|
||
type ExecutorID string
|
||
|
||
type AdvisorID string
|
||
|
||
type ComputingCenter struct {
|
||
// 计算中心名称
|
||
CCID schsdk.CCID `json:"CCID" db:"CCID"`
|
||
// 计算中心在运控系统的ID
|
||
UOPSlwNodeID uopsdk.SlwNodeID `json:"uopSlwNodeID" db:"UOPSlwNodeID"`
|
||
// 计算中心在PCM系统的ID
|
||
PCMParticipantID pcmsdk.ParticipantID `json:"pcmParticipantID" db:"PCMParticipantID"`
|
||
// 计算中心在存储系统的ID
|
||
CDSNodeID cdssdk.NodeID `json:"cdsNodeID" db:"CDSNodeID"`
|
||
// 此算力中心的存储服务对应在存储系统中的ID
|
||
CDSStorageID cdssdk.StorageID `json:"cdsStorageID" db:"CDSStorageID"`
|
||
// 计算中心名称
|
||
Name string `json:"name" db:"Name"`
|
||
}
|
||
|
||
type Image struct {
|
||
// 调度系统内的镜像ID
|
||
ImageID schsdk.ImageID `json:"imageID" db:"ImageID"`
|
||
// 镜像文件对应的存储系统PackageID,可以为空,为空则代表此镜像不可被自动导入到算力中心,比如是预制镜像
|
||
CDSPackageID *cdssdk.PackageID `json:"cdsPackageID" db:"CDSPackageID"`
|
||
// 镜像名称,在调度系统上设置的
|
||
Name string `json:"name" db:"Name"`
|
||
// 镜像创建时间
|
||
CreateTime time.Time `json:"createTime" db:"CreateTime"`
|
||
}
|
||
|
||
type PCMImage struct {
|
||
// 调度系统内的镜像ID
|
||
ImageID schsdk.ImageID `json:"imageID" db:"ImageID"`
|
||
// 导入到的计算中心的ID
|
||
CCID schsdk.CCID `json:"ccID" db:"CCID"`
|
||
// 通过PCM系统导入到各计算中心后,得到的ID
|
||
PCMImageID pcmsdk.ImageID `json:"pcmImageID" db:"PCMImageID"`
|
||
// 镜像名称,通过PCM导入后获得
|
||
Name string `json:"name" db:"Name"`
|
||
// 镜像导入时间
|
||
UploadTime time.Time `json:"uploadTime" db:"UploadTime"`
|
||
}
|
||
|
||
type CCResource struct {
|
||
// 计算中心ID
|
||
CCID schsdk.CCID `json:"ccID" db:"CCID"`
|
||
// PCM系统返回的资源规格ID
|
||
PCMResourceID pcmsdk.ResourceID `json:"pcmResourceID" db:"PCMResourceID"`
|
||
// PCM系统返回的资源规格名称
|
||
PCMResourceName string `json:"pcmResourceName" db:"PCMResourceName"`
|
||
// 此种规格具体包含的资源信息
|
||
Resource CCResourceInfo `json:"resource" db:"Resource"`
|
||
}
|
||
|
||
type CCResourceInfo struct {
|
||
CPU float64 `json:"cpu"`
|
||
GPU float64 `json:"gpu"`
|
||
NPU float64 `json:"npu"`
|
||
MLU float64 `json:"mlu"`
|
||
Storage int64 `json:"storage"`
|
||
Memory int64 `json:"memory"`
|
||
}
|
||
|
||
func (i *CCResourceInfo) Scan(src interface{}) error {
|
||
data, ok := src.([]uint8)
|
||
if !ok {
|
||
return fmt.Errorf("unknow src type: %v", myreflect.TypeOfValue(data).String())
|
||
}
|
||
|
||
return serder.JSONToObject(data, i)
|
||
}
|