forked from JointCloud/JCC-CSScheduler
74 lines
1.7 KiB
Go
74 lines
1.7 KiB
Go
package task
|
||
|
||
import (
|
||
"time"
|
||
|
||
"gitlink.org.cn/cloudream/common/pkgs/logger"
|
||
"gitlink.org.cn/cloudream/common/pkgs/task"
|
||
exectsk "gitlink.org.cn/cloudream/scheduler/common/pkgs/mq/executor/task"
|
||
)
|
||
|
||
type GetScheduleScheme struct {
|
||
}
|
||
|
||
func NewGetScheduleScheme() *GetScheduleScheme {
|
||
return &GetScheduleScheme{}
|
||
}
|
||
|
||
func (t *GetScheduleScheme) Execute(task *task.Task[TaskContext], ctx TaskContext, complete CompleteFn) {
|
||
log := logger.WithType[GetScheduleScheme]("Task")
|
||
log.Debugf("begin")
|
||
defer log.Debugf("end")
|
||
|
||
err := t.do(task.ID(), ctx)
|
||
if err != nil {
|
||
//TODO 若任务失败,上报的状态failed字段根据情况修改
|
||
ctx.reporter.Report(task.ID(), exectsk.NewScheduleTaskStatus("failed", err.Error(), 0))
|
||
}
|
||
ctx.reporter.ReportNow()
|
||
|
||
complete(err, CompleteOption{
|
||
RemovingDelay: time.Minute,
|
||
})
|
||
}
|
||
|
||
func (t *GetScheduleScheme) do(taskID string, ctx TaskContext) error {
|
||
// pcmCli, err := globals.PCMPool.Acquire()
|
||
// if err != nil {
|
||
// return fmt.Errorf("new pcm client: %w", err)
|
||
// }
|
||
// defer pcmCli.Close()
|
||
|
||
// resp, err := pcmCli.ScheduleTask(pcm.ScheduleTaskReq{
|
||
|
||
// })
|
||
|
||
// if err != nil {
|
||
// return err
|
||
// }
|
||
|
||
// var prevStatus string
|
||
// for {
|
||
// tsResp, err := pcmCli.GetTaskStatus(pcm.GetTaskStatusReq{
|
||
// NodeID: t.nodeID,
|
||
// PCMJobID: resp.PCMJobID,
|
||
// })
|
||
// if err != nil {
|
||
// return err
|
||
// }
|
||
|
||
// if tsResp.Status != prevStatus {
|
||
// ctx.reporter.Report(taskID, exectsk.NewScheduleTaskStatus(tsResp.Status, "", resp.PCMJobID))
|
||
// }
|
||
|
||
// prevStatus = tsResp.Status
|
||
|
||
// // TODO 根据接口result返回情况修改
|
||
// // 根据返回的result判定任务是否完成,若完成 跳出循环,结束任务
|
||
// if tsResp.Status == "Completed" {
|
||
// return nil
|
||
// }
|
||
// }
|
||
return nil
|
||
}
|