From 5fb7b0313b3a61b1a4ac581a7b6ba00db4be25b5 Mon Sep 17 00:00:00 2001 From: tzwang Date: Thu, 7 Dec 2023 20:10:04 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AD=98=E7=AE=97=E8=81=94=E5=8A=A8=E8=B0=83?= =?UTF-8?q?=E6=95=B43?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/internal/storeLink/shuguangHpc.go | 68 +++++++++++++++++++++++++-- api/internal/storeLink/storeLink.go | 49 +++++++++++++++++++ go.mod | 2 +- go.sum | 4 +- 4 files changed, 116 insertions(+), 7 deletions(-) diff --git a/api/internal/storeLink/shuguangHpc.go b/api/internal/storeLink/shuguangHpc.go index 0354b7120..dad2358e2 100644 --- a/api/internal/storeLink/shuguangHpc.go +++ b/api/internal/storeLink/shuguangHpc.go @@ -5,8 +5,10 @@ import ( "errors" "gitlink.org.cn/jcce-pcm/pcm-ac/hpcAC" "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types" "gitlink.org.cn/jcce-pcm/pcm-coordinator/pkg/models" "gitlink.org.cn/jcce-pcm/pcm-coordinator/pkg/utils" + "strconv" "strings" ) @@ -100,6 +102,17 @@ var RESOURCESPECS = map[string]string{ "79xSdy48yLbVLl9DqEV6tQ2J6jaHe5KO": "2*NODE, CPU:32, 8*DCU", } +var AcStatus = map[string]string{ + "statQ": "Pending", + "statR": "Running", + "statE": "Pending", + "statC": "Completed", + "statH": "Pending", + "statS": "Pending", + "statW": "Pending", + "statX": "Other", +} + type ResourceSpec struct { GAP_NNODE string GAP_NPROC string @@ -188,16 +201,63 @@ func (s ShuguangHpc) SubmitTask(imageId string, cmd string, envs []string, param } func (s ShuguangHpc) QueryTask(taskId string) (interface{}, error) { - //TODO implement me - panic("implement me") + //实时作业 + reqC := &hpcAC.JobDetailReq{ + JobId: taskId, + } + respC, err := s.svcCtx.ACRpc.GetJobDetail(s.ctx, reqC) + if err != nil { + return nil, err + } + + taskRespC, err := ConvertType[hpcAC.GetJobDetailResp](respC, nil) + if err != nil { + return nil, err + } + + //实时作业检查是否成功 + taskResp := taskRespC.(types.GetLinkTaskResp) + if taskResp.Task != nil { + return taskRespC, nil + } + + //历史作业 + reqH := &hpcAC.HistoryJobDetailReq{ + JobId: taskId, + JobmanagerId: strconv.Itoa(StrJobManagerID), + } + + respH, err := s.svcCtx.ACRpc.HistoryJobDetail(s.ctx, reqH) + if err != nil { + return nil, err + } + + taskRespH, err := ConvertType[hpcAC.HistoryJobDetailResp](respH, nil) + if err != nil { + return nil, err + } + + return taskRespH, nil } func (s ShuguangHpc) QuerySpecs() (interface{}, error) { - //TODO implement me - panic("implement me") + var resp types.GetResourceSpecsResp + + for k, v := range RESOURCESPECS { + var respec types.ResourceSpecSl + respec.SpecId = k + respec.SpecName = v + respec.ParticipantId = s.participant.Id + respec.ParticipantName = s.participant.Name + resp.ResourceSpecs = append(resp.ResourceSpecs, &respec) + } + + return resp, nil } func (s ShuguangHpc) DeleteTask(taskId string) (interface{}, error) { + //req := hpcAC.DeleteJobReq{} + //TODO implement me panic("implement me") } diff --git a/api/internal/storeLink/storeLink.go b/api/internal/storeLink/storeLink.go index 7acc13324..63c9edcd0 100644 --- a/api/internal/storeLink/storeLink.go +++ b/api/internal/storeLink/storeLink.go @@ -209,6 +209,17 @@ func ConvertType[T any](in *T, participant *models.StorelinkCenter) (interface{} var resp types.SubmitLinkTaskResp inresp := (interface{})(in).(*hpcAC.SubmitTaskAiResp) + if inresp.Code == "0" { + resp.Success = true + resp.TaskId = inresp.Data + } else { + resp.Success = false + resp.ErrorMsg = inresp.Msg + } + return resp, nil + case *hpcAC.SubmitJobResp: + var resp types.SubmitLinkTaskResp + inresp := (interface{})(in).(*hpcAC.SubmitJobResp) if inresp.Code == "0" { resp.Success = true resp.TaskId = inresp.Data @@ -270,6 +281,44 @@ func ConvertType[T any](in *T, participant *models.StorelinkCenter) (interface{} resp.Task = nil } + return resp, nil + case *hpcAC.GetJobDetailResp: + var resp types.GetLinkTaskResp + inresp := (interface{})(in).(*hpcAC.GetJobDetailResp) + if inresp.Code == "0" { + resp.Success = true + var task types.TaskSl + task.TaskId = inresp.Data.JobId + task.TaskName = inresp.Data.JobName + task.TaskStatus = AcStatus[inresp.Data.JobStatus] + task.StartedAt = timeutils.StringToUnixTime(inresp.Data.JobStartTime) + task.CompletedAt = timeutils.StringToUnixTime(inresp.Data.JobEndTime) + resp.Task = &task + } else { + resp.Success = false + resp.ErrorMsg = inresp.Msg + resp.Task = nil + } + + return resp, nil + case *hpcAC.HistoryJobDetailResp: + var resp types.GetLinkTaskResp + inresp := (interface{})(in).(*hpcAC.HistoryJobDetailResp) + if inresp.Code == "0" { + resp.Success = true + var task types.TaskSl + task.TaskId = inresp.Data.JobId + task.TaskName = inresp.Data.JobName + task.TaskStatus = AcStatus[inresp.Data.JobState] + task.StartedAt = timeutils.StringToUnixTime(inresp.Data.JobStartTime) + task.CompletedAt = timeutils.StringToUnixTime(inresp.Data.JobEndTime) + resp.Task = &task + } else { + resp.Success = false + resp.ErrorMsg = inresp.Msg + resp.Task = nil + } + return resp, nil case *octopus.DeleteTrainJobResp: var resp types.DeleteLinkTaskResp diff --git a/go.mod b/go.mod index 1df1146d7..166502e3f 100644 --- a/go.mod +++ b/go.mod @@ -24,7 +24,7 @@ require ( github.com/rs/zerolog v1.28.0 github.com/shopspring/decimal v1.3.1 github.com/zeromicro/go-zero v1.6.0 - gitlink.org.cn/jcce-pcm/pcm-ac v0.0.0-20231207021053-376383ea3c38 + gitlink.org.cn/jcce-pcm/pcm-ac v0.0.0-20231207111119-cdecc6b118c8 gitlink.org.cn/jcce-pcm/pcm-participant-ceph v0.0.0-20230904090036-24fc730ec87d gitlink.org.cn/jcce-pcm/pcm-participant-kubernetes v0.0.0-20231128034759-01d57082e120 gitlink.org.cn/jcce-pcm/pcm-participant-modelarts v0.0.0-20231101085149-724c7c4cc090 diff --git a/go.sum b/go.sum index 58d23db0c..18a07ab9a 100644 --- a/go.sum +++ b/go.sum @@ -997,8 +997,8 @@ github.com/yuin/gopher-lua v1.1.0/go.mod h1:GBR0iDaNXjAgGg9zfCvksxSRnQx76gclCIb7 github.com/zeromicro/go-zero v1.5.1/go.mod h1:bGYm4XWsGN9GhDsO2O2BngpVoWjf3Eog2a5hUOMhlXs= github.com/zeromicro/go-zero v1.6.0 h1:UwSOR1lGZ2g7L0S07PM8RoneAcubtd5x//EfbuNucQ0= github.com/zeromicro/go-zero v1.6.0/go.mod h1:E9GCFPb0SwsTKFBcFr9UynGvXiDMmfc6fI5F15vqvAQ= -gitlink.org.cn/jcce-pcm/pcm-ac v0.0.0-20231207021053-376383ea3c38 h1:tKVL4JcF1P+rntJd4hFg+MtVgsGmyhnisEaME8tF7J0= -gitlink.org.cn/jcce-pcm/pcm-ac v0.0.0-20231207021053-376383ea3c38/go.mod h1:ySZHK8NpHn4gjbLoOtJbSEUDiYZVwjbnFAcG71gXPgg= +gitlink.org.cn/jcce-pcm/pcm-ac v0.0.0-20231207111119-cdecc6b118c8 h1:J2vJNi4xlWApxpQXizyNvAbvj3qjXep18J3XJrGBGwc= +gitlink.org.cn/jcce-pcm/pcm-ac v0.0.0-20231207111119-cdecc6b118c8/go.mod h1:ySZHK8NpHn4gjbLoOtJbSEUDiYZVwjbnFAcG71gXPgg= gitlink.org.cn/jcce-pcm/pcm-participant-ceph v0.0.0-20230904090036-24fc730ec87d h1:DHjl/rLuH2gKYtY0MKMGNQDHFT12APg25RlMUQo+tHk= gitlink.org.cn/jcce-pcm/pcm-participant-ceph v0.0.0-20230904090036-24fc730ec87d/go.mod h1:r/KLzUpupCV5jdxSfgDhc2pVjP0fBi3VhAWRttsBn30= gitlink.org.cn/jcce-pcm/pcm-participant-kubernetes v0.0.0-20231128034759-01d57082e120 h1:4mUD/FW+i948cpTI9faCgnIUItZW3eoA1UdPsDnzK1M=