|
- package schedule
-
- import (
- "context"
- "errors"
- "fmt"
- "gitlink.org.cn/JointCloud/pcm-coordinator/internal/scheduler/service/utils/status"
- "gitlink.org.cn/JointCloud/pcm-coordinator/pkg/constants"
- "strconv"
-
- "gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
- "gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
-
- "github.com/zeromicro/go-zero/core/logx"
- )
-
- type ScheduleCancelTaskLogic struct {
- logx.Logger
- ctx context.Context
- svcCtx *svc.ServiceContext
- }
-
- func NewScheduleCancelTaskLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ScheduleCancelTaskLogic {
- return &ScheduleCancelTaskLogic{
- Logger: logx.WithContext(ctx),
- ctx: ctx,
- svcCtx: svcCtx,
- }
- }
-
- func (l *ScheduleCancelTaskLogic) ScheduleCancelTask(req *types.CancelTaskReq) (resp *types.CancelTaskResp, err error) {
- task, err := l.svcCtx.Scheduler.AiService.Storage.GetTaskById(req.TaskId)
- if err != nil {
- return nil, err
- }
-
- if task == nil {
- return nil, errors.New("failed to cancel task, task not found")
- }
-
- // find ai tasks
- aitasks, err := l.svcCtx.Scheduler.AiStorages.GetAiTaskListById(task.Id)
- if err != nil {
- return nil, err
- }
-
- if len(aitasks) == 0 {
- return nil, errors.New("failed to cancel task, ai sub tasks have not been created")
- }
-
- // update status
- status.UpdateAiTask(l.svcCtx, aitasks...)
-
- t := aitasks[0]
-
- if t.Status != constants.Running {
- return nil, fmt.Errorf("failed to cancel task, ai sub tasks is %s", t.Status)
- }
-
- // assume a task has only one sub ai task
- err = l.svcCtx.Scheduler.AiService.AiExecutorAdapterMap[strconv.FormatInt(t.AdapterId, 10)][strconv.FormatInt(t.ClusterId, 10)].Stop(l.ctx, t.JobId)
- if err != nil {
- return nil, err
- }
-
- t.Status = constants.Cancelled
- err = l.svcCtx.Scheduler.AiService.Storage.UpdateAiTask(t)
- if err != nil {
- return nil, err
- }
-
- task.Status = constants.Cancelled
- err = l.svcCtx.Scheduler.AiService.Storage.UpdateTaskByModel(task)
- if err != nil {
- return nil, err
- }
-
- return resp, nil
- }
|