fix db bugs

Former-commit-id: 3e372dc02fb4f2a4e4f9ab14922abaa51dbc7eea
This commit is contained in:
tzwang 2024-05-14 15:03:31 +08:00
parent 564380be1a
commit bd3f60d62e
7 changed files with 57 additions and 25 deletions

View File

@ -68,6 +68,8 @@ func (l *GetCenterTaskListLogic) GetCenterTaskList() (resp *types.CenterTaskList
t := &types.AiTask{ t := &types.AiTask{
Name: task.Name, Name: task.Name,
Status: task.Status, Status: task.Status,
Cluster: task.ClusterName,
Card: task.Card,
TimeElapsed: int32(elapsed.Seconds()), TimeElapsed: int32(elapsed.Seconds()),
} }
resp.List = append(resp.List, t) resp.List = append(resp.List, t)

View File

@ -73,7 +73,12 @@ func (l *ScheduleSubmitLogic) ScheduleSubmit(req *types.ScheduleReq) (resp *type
scheResult.Strategy = r.Strategy scheResult.Strategy = r.Strategy
scheResult.Replica = r.Replica scheResult.Replica = r.Replica
scheResult.Msg = r.Msg scheResult.Msg = r.Msg
err := l.svcCtx.Scheduler.AiStorages.SaveAiTask(id, opt, r.ClusterId, r.TaskId, constants.Saved, r.Msg)
opt.ComputeCard = r.Card
clusterName, _ := l.svcCtx.Scheduler.AiStorages.GetClusterNameById(r.ClusterId)
err := l.svcCtx.Scheduler.AiStorages.SaveAiTask(id, opt, r.ClusterId, clusterName, r.TaskId, constants.Saved, r.Msg)
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@ -35,6 +35,16 @@ func (s *AiStorage) GetClustersByAdapterId(id string) (*types.ClusterListResp, e
return &resp, nil return &resp, nil
} }
func (s *AiStorage) GetClusterNameById(id string) (string, error) {
var name string
tx := s.DbEngin.Raw("select `description` from t_cluster where `id` = ?", id).Scan(&name)
if tx.Error != nil {
logx.Errorf(tx.Error.Error())
return "", tx.Error
}
return name, nil
}
func (s *AiStorage) GetAdapterIdsByType(adapterType string) ([]string, error) { func (s *AiStorage) GetAdapterIdsByType(adapterType string) ([]string, error) {
var list []types.AdapterInfo var list []types.AdapterInfo
var ids []string var ids []string
@ -90,7 +100,7 @@ func (s *AiStorage) SaveTask(name string, strategyCode int64, synergyStatus int6
return taskModel.Id, nil return taskModel.Id, nil
} }
func (s *AiStorage) SaveAiTask(taskId int64, option *option.AiOption, clusterId string, jobId string, status string, msg string) error { func (s *AiStorage) SaveAiTask(taskId int64, option *option.AiOption, clusterId string, clusterName string, jobId string, status string, msg string) error {
// 构建主任务结构体 // 构建主任务结构体
aId, err := strconv.ParseInt(option.AdapterId, 10, 64) aId, err := strconv.ParseInt(option.AdapterId, 10, 64)
if err != nil { if err != nil {
@ -100,10 +110,14 @@ func (s *AiStorage) SaveAiTask(taskId int64, option *option.AiOption, clusterId
if err != nil { if err != nil {
return err return err
} }
del, _ := time.Parse(constants.Layout, constants.Layout)
aiTaskModel := models.TaskAi{ aiTaskModel := models.TaskAi{
TaskId: taskId, TaskId: taskId,
AdapterId: aId, AdapterId: aId,
ClusterId: cId, ClusterId: cId,
ClusterName: clusterName,
Name: option.TaskName, Name: option.TaskName,
Replica: option.Replica, Replica: option.Replica,
JobId: jobId, JobId: jobId,
@ -111,6 +125,8 @@ func (s *AiStorage) SaveAiTask(taskId int64, option *option.AiOption, clusterId
Strategy: option.StrategyName, Strategy: option.StrategyName,
Status: status, Status: status,
Msg: msg, Msg: msg,
Card: option.ComputeCard,
DeletedAt: del,
CommitTime: time.Now(), CommitTime: time.Now(),
} }
// 保存任务数据到数据库 // 保存任务数据到数据库

View File

@ -46,6 +46,7 @@ type AiResult struct {
ClusterId string ClusterId string
Strategy string Strategy string
Replica int32 Replica int32
Card string
Msg string Msg string
} }
@ -156,6 +157,7 @@ func (as *AiScheduler) AssignTask(clusters []*strategy.AssignedCluster) (interfa
result.Replica = c.Replicas result.Replica = c.Replicas
result.ClusterId = c.ClusterId result.ClusterId = c.ClusterId
result.Strategy = as.option.StrategyName result.Strategy = as.option.StrategyName
result.Card = opt.ComputeCard
ch <- result ch <- result
wg.Done() wg.Done()
@ -192,23 +194,29 @@ func (as *AiScheduler) AssignTask(clusters []*strategy.AssignedCluster) (interfa
}) })
msg := fmt.Sprintf("clusterId: %v , error: %v \n", e.clusterId, e.err.Error()) msg := fmt.Sprintf("clusterId: %v , error: %v \n", e.clusterId, e.err.Error())
errmsg += msg errmsg += msg
err := as.AiStorages.SaveAiTask(taskId, as.option, e.clusterId, "", constants.Failed, msg)
clusterName, _ := as.AiStorages.GetClusterNameById(e.clusterId)
err := as.AiStorages.SaveAiTask(taskId, as.option, e.clusterId, clusterName, "", constants.Failed, msg)
if err != nil { if err != nil {
return nil, errors.New("database add failed: " + err.Error()) return nil, errors.New("database add failed: " + err.Error())
} }
} }
for _, s := range results { for _, s := range results {
as.option.ComputeCard = s.Card //execute card
clusterName, _ := as.AiStorages.GetClusterNameById(s.ClusterId)
if s.Msg != "" { if s.Msg != "" {
msg := fmt.Sprintf("clusterId: %v , error: %v \n", s.ClusterId, s.Msg) msg := fmt.Sprintf("clusterId: %v , error: %v \n", s.ClusterId, s.Msg)
errmsg += msg errmsg += msg
err := as.AiStorages.SaveAiTask(taskId, as.option, s.ClusterId, "", constants.Failed, msg) err := as.AiStorages.SaveAiTask(taskId, as.option, s.ClusterId, clusterName, "", constants.Failed, msg)
if err != nil { if err != nil {
return nil, errors.New("database add failed: " + err.Error()) return nil, errors.New("database add failed: " + err.Error())
} }
} else { } else {
msg := fmt.Sprintf("clusterId: %v , submitted successfully, taskId: %v \n", s.ClusterId, s.TaskId) msg := fmt.Sprintf("clusterId: %v , submitted successfully, taskId: %v \n", s.ClusterId, s.TaskId)
errmsg += msg errmsg += msg
err := as.AiStorages.SaveAiTask(taskId, as.option, s.ClusterId, s.TaskId, constants.Saved, msg) err := as.AiStorages.SaveAiTask(taskId, as.option, s.ClusterId, clusterName, s.TaskId, constants.Saved, msg)
if err != nil { if err != nil {
return nil, errors.New("database add failed: " + err.Error()) return nil, errors.New("database add failed: " + err.Error())
} }

View File

@ -19,6 +19,7 @@ type Strategy interface {
type AssignedCluster struct { type AssignedCluster struct {
ClusterId string ClusterId string
ClusterName string
Replicas int32 Replicas int32
} }

View File

@ -402,7 +402,7 @@ func (o *OctopusLink) DownloadAlgorithmCode(ctx context.Context, resourceType st
aLatest := &octopus.Algorithms{} aLatest := &octopus.Algorithms{}
for i, _ := range algorithms { for i, _ := range algorithms {
if time.Unix(aLatest.CreatedAt, 0).After(time.Unix(algorithms[i].CreatedAt, 0)) { if time.Unix(algorithms[i].CreatedAt, 0).After(time.Unix(aLatest.CreatedAt, 0)) {
aLatest = algorithms[i] aLatest = algorithms[i]
} }
} }
@ -789,36 +789,32 @@ func setResourceIdByCard(option *option.AiOption, specs *octopus.GetResourceSpec
} }
switch computeCard { switch computeCard {
case GCU: case GCU:
option.ComputeCard = computeCard
if cardNum == s { // 1, 4, 8 if cardNum == s { // 1, 4, 8
option.ResourceId = spec.Id option.ResourceId = spec.Id
option.ComputeCard = computeCard
return nil return nil
} }
if 1 < cardNum && cardNum <= 4 && s == 4 { if 1 < cardNum && cardNum <= 4 && s == 4 {
option.ResourceId = spec.Id option.ResourceId = spec.Id
option.ComputeCard = computeCard
return nil return nil
} }
if 4 < cardNum && s == 8 { if 4 < cardNum && s == 8 {
option.ResourceId = spec.Id option.ResourceId = spec.Id
option.ComputeCard = computeCard
return nil return nil
} }
case MLU: // 1, 2, 4 case MLU: // 1, 2, 4
option.ComputeCard = computeCard
if cardNum/2 == s { if cardNum/2 == s {
option.ResourceId = spec.Id option.ResourceId = spec.Id
option.ComputeCard = computeCard
return nil return nil
} }
if 1 < cardNum/2 && cardNum/2 <= 2 && s == 2 { if 1 < cardNum/2 && cardNum/2 <= 2 && s == 2 {
option.ResourceId = spec.Id option.ResourceId = spec.Id
option.ComputeCard = computeCard
return nil return nil
} }
if 2 < cardNum/2 && s == 4 { if 2 < cardNum/2 && s == 4 {
option.ResourceId = spec.Id option.ResourceId = spec.Id
option.ComputeCard = computeCard
return nil return nil
} }
} }

View File

@ -565,10 +565,14 @@ func (s *ShuguangAi) generateResourceId(option *option.AiOption) error {
if option.ResourceType == CPU { if option.ResourceType == CPU {
option.ResourceId = "WodTB2rJ8SobMgQ1nrtR245jxOrsovFi" option.ResourceId = "WodTB2rJ8SobMgQ1nrtR245jxOrsovFi"
option.ComputeCard = CPU
return nil return nil
} }
if option.ResourceType == CARD { if option.ResourceType == CARD {
option.ComputeCard = DCU
if 0 <= option.Tops && option.Tops <= DCU_TOPS { if 0 <= option.Tops && option.Tops <= DCU_TOPS {
option.ResourceId = "WodTB2rJ8SobMgQ1nrtR245jxOrsovFi" option.ResourceId = "WodTB2rJ8SobMgQ1nrtR245jxOrsovFi"
return nil return nil