| @@ -127,6 +127,18 @@ type ( | |||||
| } | } | ||||
| /******************Deploy instance*************************/ | /******************Deploy instance*************************/ | ||||
| GetDeployInstanceReq{ | |||||
| AdapterId string `form:"adapterId"` | |||||
| ClusterId string `form:"clusterId"` | |||||
| Id string `form:"id"` | |||||
| InstanceId string `form:"instanceId"` | |||||
| } | |||||
| GetDeployInstanceResp { | |||||
| Instance interface{} `json:"instance"` | |||||
| } | |||||
| DeployInstanceListReq{ | DeployInstanceListReq{ | ||||
| PageInfo | PageInfo | ||||
| } | } | ||||
| @@ -960,6 +960,9 @@ service pcm { | |||||
| group: inference | group: inference | ||||
| ) | ) | ||||
| service pcm { | service pcm { | ||||
| @handler GetDeployInstanceHandler | |||||
| get /inference/getDeployInstance (GetDeployInstanceReq) returns (GetDeployInstanceResp) | |||||
| @handler CreateInferenceTaskHandler | @handler CreateInferenceTaskHandler | ||||
| post /inference/createTask (CreateInferenceTaskReq) returns (CreateInferenceTaskResp) | post /inference/createTask (CreateInferenceTaskReq) returns (CreateInferenceTaskResp) | ||||
| @@ -0,0 +1,26 @@ | |||||
| package inference | |||||
| import ( | |||||
| "gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result" | |||||
| "net/http" | |||||
| "github.com/zeromicro/go-zero/rest/httpx" | |||||
| "gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/inference" | |||||
| "gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc" | |||||
| "gitlink.org.cn/JointCloud/pcm-coordinator/internal/types" | |||||
| ) | |||||
| func GetDeployInstanceHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { | |||||
| return func(w http.ResponseWriter, r *http.Request) { | |||||
| var req types.GetDeployInstanceReq | |||||
| if err := httpx.Parse(r, &req); err != nil { | |||||
| result.ParamErrorResult(r, w, err) | |||||
| return | |||||
| } | |||||
| l := inference.NewGetDeployInstanceLogic(r.Context(), svcCtx) | |||||
| resp, err := l.GetDeployInstance(&req) | |||||
| result.HttpResult(r, w, resp, err) | |||||
| } | |||||
| } | |||||
| @@ -1208,6 +1208,11 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) { | |||||
| server.AddRoutes( | server.AddRoutes( | ||||
| []rest.Route{ | []rest.Route{ | ||||
| { | |||||
| Method: http.MethodGet, | |||||
| Path: "/inference/getDeployInstance", | |||||
| Handler: inference.GetDeployInstanceHandler(serverCtx), | |||||
| }, | |||||
| { | { | ||||
| Method: http.MethodPost, | Method: http.MethodPost, | ||||
| Path: "/inference/createTask", | Path: "/inference/createTask", | ||||
| @@ -0,0 +1,44 @@ | |||||
| package inference | |||||
| import ( | |||||
| "context" | |||||
| "strconv" | |||||
| "gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc" | |||||
| "gitlink.org.cn/JointCloud/pcm-coordinator/internal/types" | |||||
| "github.com/zeromicro/go-zero/core/logx" | |||||
| ) | |||||
| type GetDeployInstanceLogic struct { | |||||
| logx.Logger | |||||
| ctx context.Context | |||||
| svcCtx *svc.ServiceContext | |||||
| } | |||||
| func NewGetDeployInstanceLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetDeployInstanceLogic { | |||||
| return &GetDeployInstanceLogic{ | |||||
| Logger: logx.WithContext(ctx), | |||||
| ctx: ctx, | |||||
| svcCtx: svcCtx, | |||||
| } | |||||
| } | |||||
| func (l *GetDeployInstanceLogic) GetDeployInstance(req *types.GetDeployInstanceReq) (resp *types.GetDeployInstanceResp, err error) { | |||||
| resp = &types.GetDeployInstanceResp{} | |||||
| id, err := strconv.ParseInt(req.Id, 10, 64) | |||||
| ins, err := l.svcCtx.Scheduler.AiStorages.GetInferDeployInstanceById(id) | |||||
| if err != nil { | |||||
| return nil, err | |||||
| } | |||||
| in, err := l.svcCtx.Scheduler.AiService.InferenceAdapterMap[strconv.FormatInt(ins.AdapterId, 10)][strconv.FormatInt(ins.ClusterId, 10)].GetInferDeployInstance(l.ctx, ins.InstanceId) | |||||
| if err != nil { | |||||
| return nil, err | |||||
| } | |||||
| resp.Instance = in | |||||
| return | |||||
| } | |||||
| @@ -17,7 +17,7 @@ func UpdateDeployInstanceStatusBatch(svc *svc.ServiceContext, insList []*models. | |||||
| if needfilter { | if needfilter { | ||||
| for i := len(list) - 1; i >= 0; i-- { | for i := len(list) - 1; i >= 0; i-- { | ||||
| if list[i].Status == constants.Running || list[i].Status == constants.Stopped { | |||||
| if list[i].Status == constants.Running || list[i].Status == constants.Stopped || list[i].Status == constants.Failed { | |||||
| list = append(list[:i], list[i+1:]...) | list = append(list[:i], list[i+1:]...) | ||||
| } | } | ||||
| } | } | ||||
| @@ -156,6 +156,47 @@ func UpdateDeployInstanceStatus(svc *svc.ServiceContext, instance *models.AiInfe | |||||
| default: | default: | ||||
| instance.Status = ins.Status | instance.Status = ins.Status | ||||
| } | } | ||||
| case storeLink.TYPE_OPENI: | |||||
| switch ins.Status { | |||||
| case "RUNNING": | |||||
| if instance.Status == constants.Running { | |||||
| if ch != nil { | |||||
| <-ch | |||||
| return | |||||
| } | |||||
| return | |||||
| } | |||||
| instance.Status = constants.Running | |||||
| case "STOPPED": | |||||
| if instance.Status == constants.Stopped { | |||||
| if ch != nil { | |||||
| <-ch | |||||
| return | |||||
| } | |||||
| return | |||||
| } | |||||
| instance.Status = constants.Stopped | |||||
| case "CREATED_FAILED": | |||||
| if instance.Status == constants.Failed { | |||||
| if ch != nil { | |||||
| <-ch | |||||
| return | |||||
| } | |||||
| return | |||||
| } | |||||
| instance.Status = constants.Failed | |||||
| case "FAILED": | |||||
| if instance.Status == constants.Failed { | |||||
| if ch != nil { | |||||
| <-ch | |||||
| return | |||||
| } | |||||
| return | |||||
| } | |||||
| instance.Status = constants.Failed | |||||
| default: | |||||
| instance.Status = ins.Status | |||||
| } | |||||
| } | } | ||||
| err = svc.Scheduler.AiStorages.UpdateInferDeployInstance(instance, updatetime) | err = svc.Scheduler.AiStorages.UpdateInferDeployInstance(instance, updatetime) | ||||
| @@ -6250,6 +6250,17 @@ type TextToImageInferenceResp struct { | |||||
| Result []byte `json:"result"` | Result []byte `json:"result"` | ||||
| } | } | ||||
| type GetDeployInstanceReq struct { | |||||
| AdapterId string `form:"adapterId"` | |||||
| ClusterId string `form:"clusterId"` | |||||
| Id string `form:"id"` | |||||
| InstanceId string `form:"instanceId"` | |||||
| } | |||||
| type GetDeployInstanceResp struct { | |||||
| Instance interface{} `json:"instance"` | |||||
| } | |||||
| type DeployInstanceListReq struct { | type DeployInstanceListReq struct { | ||||
| PageInfo | PageInfo | ||||
| } | } | ||||