forked from JointCloud/pcm-coordinator
77 lines
1.9 KiB
Go
77 lines
1.9 KiB
Go
package ai
|
|
|
|
import (
|
|
"context"
|
|
"github.com/zeromicro/go-zero/core/logx"
|
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/scheduler/service/utils/status"
|
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/constants"
|
|
"time"
|
|
)
|
|
|
|
type GetCenterTaskListLogic struct {
|
|
logx.Logger
|
|
ctx context.Context
|
|
svcCtx *svc.ServiceContext
|
|
}
|
|
|
|
func NewGetCenterTaskListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetCenterTaskListLogic {
|
|
return &GetCenterTaskListLogic{
|
|
Logger: logx.WithContext(ctx),
|
|
ctx: ctx,
|
|
svcCtx: svcCtx,
|
|
}
|
|
}
|
|
|
|
func (l *GetCenterTaskListLogic) GetCenterTaskList() (resp *types.CenterTaskListResp, err error) {
|
|
resp = &types.CenterTaskListResp{}
|
|
|
|
adapterList, err := l.svcCtx.Scheduler.AiStorages.GetAdaptersByType("1")
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
go status.UpdateTrainingTaskStatus(l.svcCtx, adapterList)
|
|
|
|
for _, adapter := range adapterList {
|
|
taskList, err := l.svcCtx.Scheduler.AiStorages.GetAiTasksByAdapterId(adapter.Id)
|
|
if err != nil {
|
|
continue
|
|
}
|
|
if len(taskList) == 0 {
|
|
continue
|
|
}
|
|
for _, task := range taskList {
|
|
var elapsed time.Duration
|
|
switch task.Status {
|
|
case constants.Completed:
|
|
end, err := time.ParseInLocation(constants.Layout, task.EndTime, time.Local)
|
|
if err != nil {
|
|
elapsed = time.Duration(0)
|
|
}
|
|
start, err := time.ParseInLocation(constants.Layout, task.StartTime, time.Local)
|
|
if err != nil {
|
|
elapsed = time.Duration(0)
|
|
}
|
|
elapsed = end.Sub(start)
|
|
case constants.Running:
|
|
elapsed = time.Now().Sub(task.CommitTime)
|
|
default:
|
|
elapsed = 0
|
|
}
|
|
|
|
t := &types.AiTask{
|
|
Name: task.Name,
|
|
Status: task.Status,
|
|
Cluster: task.ClusterName,
|
|
Card: task.Card,
|
|
TimeElapsed: int32(elapsed.Seconds()),
|
|
}
|
|
resp.List = append(resp.List, t)
|
|
}
|
|
}
|
|
|
|
return resp, nil
|
|
}
|