forked from JointCloud/JCC-CSScheduler
56 lines
1.6 KiB
Go
56 lines
1.6 KiB
Go
package services
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
schsdk "gitlink.org.cn/cloudream/common/sdks/scheduler"
|
|
cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
|
|
schglb "gitlink.org.cn/cloudream/scheduler/common/globals"
|
|
mgrmq "gitlink.org.cn/cloudream/scheduler/common/pkgs/mq/manager"
|
|
)
|
|
|
|
type JobSetService struct {
|
|
*Service
|
|
}
|
|
|
|
func (svc *Service) JobSetSvc() *JobSetService {
|
|
return &JobSetService{Service: svc}
|
|
}
|
|
|
|
// 提交任务集
|
|
func (svc *JobSetService) Submit(info schsdk.JobSetInfo) (schsdk.JobSetID, *schsdk.JobSetFilesUploadScheme, error) {
|
|
mgrCli, err := schglb.ManagerMQPool.Acquire()
|
|
if err != nil {
|
|
return "", nil, fmt.Errorf("new manager client: %w", err)
|
|
}
|
|
defer schglb.ManagerMQPool.Release(mgrCli)
|
|
|
|
schScheme, uploadScheme, err := svc.preScheduler.Schedule(&info)
|
|
if err != nil {
|
|
return "", nil, fmt.Errorf("pre scheduling: %w", err)
|
|
}
|
|
|
|
resp, err := mgrCli.SubmitJobSet(mgrmq.NewSubmitJobSet(info, *schScheme))
|
|
if err != nil {
|
|
return "", nil, fmt.Errorf("submitting job set to manager: %w", err)
|
|
}
|
|
|
|
return resp.JobSetID, uploadScheme, nil
|
|
}
|
|
|
|
// 任务集中某个文件上传完成
|
|
func (svc *JobSetService) LocalFileUploaded(jobSetID schsdk.JobSetID, localPath string, errMsg string, packageID cdssdk.PackageID) error {
|
|
mgrCli, err := schglb.ManagerMQPool.Acquire()
|
|
if err != nil {
|
|
return fmt.Errorf("new manager client: %w", err)
|
|
}
|
|
defer schglb.ManagerMQPool.Release(mgrCli)
|
|
|
|
_, err = mgrCli.JobSetLocalFileUploaded(mgrmq.NewJobSetLocalFileUploaded(jobSetID, localPath, errMsg, packageID))
|
|
if err != nil {
|
|
return fmt.Errorf("notify manager local file uploaded: %w", err)
|
|
}
|
|
|
|
return nil
|
|
}
|