forked from JointCloud/pcm-coordinator
63 lines
1.7 KiB
Go
63 lines
1.7 KiB
Go
package hpc
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/scheduler/service"
|
|
|
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
|
|
|
"github.com/zeromicro/go-zero/core/logx"
|
|
)
|
|
|
|
type GetHpcTaskLogLogic struct {
|
|
logx.Logger
|
|
ctx context.Context
|
|
svcCtx *svc.ServiceContext
|
|
hpcService *service.HpcService
|
|
}
|
|
|
|
// 超算任务日志
|
|
func NewGetHpcTaskLogLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetHpcTaskLogLogic {
|
|
cache := make(map[string]interface{}, 10)
|
|
hpcService, err := service.NewHpcService(&svcCtx.Config, svcCtx.Scheduler.HpcStorages, cache)
|
|
if err != nil {
|
|
return nil
|
|
}
|
|
return &GetHpcTaskLogLogic{
|
|
Logger: logx.WithContext(ctx),
|
|
ctx: ctx,
|
|
svcCtx: svcCtx,
|
|
hpcService: hpcService,
|
|
}
|
|
}
|
|
|
|
func (l *GetHpcTaskLogLogic) GetHpcTaskLog(req *types.HpcTaskLogReq) (resp interface{}, err error) {
|
|
var hpcR TaskHPCResult
|
|
tx := l.svcCtx.DbEngin.Raw(
|
|
"SELECT t.id, hpc.job_id ,hpc.adapter_id FROM task t "+
|
|
"INNER JOIN task_hpc hpc ON t.id = hpc.task_id "+
|
|
"WHERE adapter_type_dict = 2 AND t.id = ?",
|
|
req.TaskId,
|
|
).Scan(&hpcR).Error
|
|
if tx != nil {
|
|
return nil, fmt.Errorf("数据库查询失败: %v", tx.Error)
|
|
}
|
|
if hpcR.ID == 0 {
|
|
return nil, fmt.Errorf("任务不存在")
|
|
}
|
|
var adapterInfo types.AdapterInfo
|
|
l.svcCtx.DbEngin.Raw("SELECT * FROM `t_adapter` where id = ?", hpcR.AdapterId).Scan(&adapterInfo)
|
|
if adapterInfo.Id == "" {
|
|
return nil, fmt.Errorf("adapter not found")
|
|
}
|
|
// 取消作业
|
|
resp, err = l.hpcService.HpcExecutorAdapterMap[adapterInfo.Id].GetTaskLogs(l.ctx, hpcR.JobID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return resp, nil
|
|
}
|