diff --git a/internal/logic/inference/deployinstancelistlogic.go b/internal/logic/inference/deployinstancelistlogic.go index dc79c645..053d2fe7 100644 --- a/internal/logic/inference/deployinstancelistlogic.go +++ b/internal/logic/inference/deployinstancelistlogic.go @@ -59,23 +59,21 @@ func (l *DeployInstanceListLogic) DeployInstanceList(req *types.DeployInstanceLi } list := common.ConcatMultipleSlices(slices) - if len(list) == 0 { - return - } + if len(list) != 0 { + go updater.UpdateDeployInstanceStatusBatch(l.svcCtx, list) - go updater.UpdateDeployInstanceStatusBatch(l.svcCtx, list) - - ins := list[0] - for i := range list { - uTime, _ := time.Parse(time.RFC3339, ins.UpdateTime) - latest, _ := time.Parse(time.RFC3339, list[i].UpdateTime) - if latest.After(uTime) { - ins = list[i] + ins := list[0] + for i := range list { + uTime, _ := time.Parse(time.RFC3339, ins.UpdateTime) + latest, _ := time.Parse(time.RFC3339, list[i].UpdateTime) + if latest.After(uTime) { + ins = list[i] + } } - } - go updater.UpdateDeployInstanceStatus(l.svcCtx, ins, true) - go updater.UpdateDeployTaskStatus(l.svcCtx) + go updater.UpdateDeployInstanceStatus(l.svcCtx, ins, true) + go updater.UpdateDeployTaskStatus(l.svcCtx) + } resp.List = &deployTasks resp.PageSize = req.PageSize diff --git a/internal/logic/inference/getdeploytasksbytypelogic.go b/internal/logic/inference/getdeploytasksbytypelogic.go index 90c96b5c..f1cd5268 100644 --- a/internal/logic/inference/getdeploytasksbytypelogic.go +++ b/internal/logic/inference/getdeploytasksbytypelogic.go @@ -3,6 +3,8 @@ package inference import ( "context" "github.com/pkg/errors" + "gitlink.org.cn/JointCloud/pcm-coordinator/pkg/constants" + "gitlink.org.cn/JointCloud/pcm-coordinator/pkg/models" "gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc" "gitlink.org.cn/JointCloud/pcm-coordinator/internal/types" @@ -36,6 +38,47 @@ func (l *GetDeployTasksByTypeLogic) GetDeployTasksByType(req *types.GetDeployTas return nil, errors.New("实列不存在") } - resp.List = list + listcopy := make([]*models.AiDeployInstanceTask, len(list)) + copy(listcopy, list) + + for _, task := range list { + inslist, err := l.svcCtx.Scheduler.AiStorages.GetInstanceListByDeployTaskId(task.Id) + if err != nil { + return nil, err + } + if len(inslist) == 0 { + removeItem(&listcopy, task.Id) + } + var count int + for _, ins := range inslist { + if ins.Status == constants.Running { + count++ + } + } + if count >= 1 { + continue + } + + removeItem(&listcopy, task.Id) + } + + resp.List = listcopy return resp, nil } + +func removeItem(items *[]*models.AiDeployInstanceTask, id int64) { + if len(*items) == 0 { + return + } + if len(*items) == 1 { + if (*items)[0].Id == id { + (*items) = nil + return + } + } + for i := len(*items) - 1; i >= 0; i-- { + if (*items)[i].Id == id { + *items = append((*items)[:i], (*items)[i+1:]...) + } + } +} diff --git a/internal/logic/inference/imageinferencelogic.go b/internal/logic/inference/imageinferencelogic.go index a1a4df53..242cf265 100644 --- a/internal/logic/inference/imageinferencelogic.go +++ b/internal/logic/inference/imageinferencelogic.go @@ -136,6 +136,7 @@ func (l *ImageInferenceLogic) ImageInfer(r *http.Request, req *types.ImageInfere return nil, errors.New("clusters is nil") } + //remove empty replica for i := len(clusters) - 1; i >= 0; i-- { if clusters[i].Replicas == 0 { clusters = append(clusters[:i], clusters[i+1:]...)