JCC-CSScheduler/client/internal/services/jobset.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
}