暂时在选择资源ID时直接使用第一个

This commit is contained in:
Sydonian 2023-11-07 15:48:10 +08:00
parent f9c0d22f95
commit 55f556fb8e
4 changed files with 31 additions and 11 deletions

View File

@ -6,16 +6,16 @@ use scheduler;
create table ComputingCenter (
CCID int not null auto_increment primary key comment '计算中心名称',
UOPSlwNodeID int not null comment '计算中心在运控系统的ID',
PCMParticipantID int not null comment '计算中心在PCM系统的ID',
CDSNodeID int not null comment '计算中心在存储系统的ID',
CDSStorageID int not null comment '此算力中心的存储服务对应在存储系统中的ID',
UOPSlwNodeID bigint not null comment '计算中心在运控系统的ID',
PCMParticipantID bigint not null comment '计算中心在PCM系统的ID',
CDSNodeID bigint null comment '计算中心在存储系统的ID',
CDSStorageID bigint null comment '此算力中心的存储服务对应在存储系统中的ID',
Name varchar(100) not null comment '计算中心名称'
) comment = '计算中心';
create table Image (
ImageID int not null auto_increment primary key comment '调度系统内的镜像ID',
CDSStorageID int comment '镜像文件对应的存储系统PackageID',
CDSPackageID bigint comment '镜像文件对应的存储系统PackageID',
Name varchar(200) not null comment '镜像名称,在调度系统上设置的',
CreateTime timestamp not null comment '镜像创建时间'
) comment = "镜像";

View File

@ -1,11 +1,14 @@
package schmod
import (
"fmt"
"time"
pcmsdk "gitlink.org.cn/cloudream/common/sdks/pcm"
schsdk "gitlink.org.cn/cloudream/common/sdks/scheduler"
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
@ -70,3 +73,12 @@ type CCResourceInfo struct {
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)
}

View File

@ -1,7 +1,6 @@
package db
import (
"fmt"
"time"
"github.com/jmoiron/sqlx"
@ -26,13 +25,13 @@ func (*ImageDB) GetByID(ctx SQLContext, id schsdk.ImageID) (schmod.Image, error)
func (*ImageDB) Create(ctx SQLContext, cdsPackageID *int64, name string, createTime time.Time) (schsdk.ImageID, error) {
ret, err := ctx.Exec("insert into Image(CDSPackageID, Name, CreateTime) values(?, ?, ?)", cdsPackageID, name, createTime)
if err != nil {
return "", err
return 0, err
}
id, err := ret.LastInsertId()
if err != nil {
return "", err
return 0, err
}
return schsdk.ImageID(fmt.Sprintf("%d", id)), nil
return schsdk.ImageID(id), nil
}

View File

@ -83,13 +83,22 @@ func (h *ExecutingHandler) onNormalJobEvent(evt event.Event, job *executingJob,
}
// TODO 需要添加DATA_IN、DATA_OUT等环境变量这些数据从Job的信息中来获取
ress, err := h.mgr.db.CCResource().GetByCCID(h.mgr.db.SQLCtx(), norJob.TargetCCID)
if err != nil {
h.changeJobState(job.job, jobmod.NewStateFailed(fmt.Sprintf("getting computing center resource info: %s", err.Error()), job.state))
return
}
if len(ress) == 0 {
h.changeJobState(job.job, jobmod.NewStateFailed(fmt.Sprintf("there is no resource at computing center %v", norJob.TargetCCID), job.state))
return
}
fullTaskID, err := h.mgr.execMgr.StartTask(job.job.GetJobID(),
exetsk.NewSubmitTask(
ccInfo.PCMParticipantID,
pcmImgInfo.PCMImageID,
// TODO 资源ID
"6388d3c27f654fa5b11439a3d6098dbc",
// TODO 选择资源的算法
ress[0].PCMResourceID,
norJob.Info.Runtime.Command,
norJob.Info.Runtime.Envs,
))