|
- /* ******************************************************************************
- * 2019 - present Contributed by Apulis Technology (Shenzhen) Co. LTD
- *
- * This program and the accompanying materials are made available under the
- * terms of the MIT License, which is available at
- * https://www.opensource.org/licenses/MIT
- *
- * See the NOTICE file distributed with this work for additional
- * information regarding copyright ownership.
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- *
- * SPDX-License-Identifier: MIT
- ******************************************************************************/
- package controllers
-
- import (
- "errors"
- "fmt"
- "github.com/apulis/go-business/pkg/jwt"
- "net/http"
- "net/url"
-
- "github.com/apulis/app/ai-arts-backend/internal/configs"
- "github.com/apulis/app/ai-arts-backend/internal/dto"
- "github.com/apulis/app/ai-arts-backend/internal/middlewares"
- "github.com/apulis/app/ai-arts-backend/internal/services"
- "github.com/gin-gonic/gin"
- )
-
- type MlrunController struct{}
-
- func (mlrunController *MlrunController) Forward(c *gin.Context, path string) {
- header := http.Header{}
- header["Authorization"] = append(header["Authorization"], c.Request.Header.Get("Authorization"))
-
- director := func(req *http.Request) {
- urlpath := path //configs.GetAppConfig().Resources.Dataset + "/cv_datasets"
- u, _ := url.Parse(urlpath)
- req.URL.Path = u.Path
- req.URL.Host = u.Host
- req.URL.Scheme = u.Scheme
-
- req.Host = u.Host
- req.Header = header
-
- fmt.Println(req.URL.String(), req.Header)
- }
- services.GetProxy(director).ServeHTTP(c.Writer, c.Request)
- }
-
- func (mlrunController *MlrunController) GetEndPoints(c *gin.Context) {
- lab := c.Param("lab")
- runId := c.Param("runId")
-
- uinfo,err := services.GetGlobalAiLabService().AiLabQueryRunUserInfo(runId)
- if err != nil {
- fail(c,err)
- return
- }
- uid,_ := jwt.UserId(c)
- if uinfo.UserId != uint64(uid) {
- fail(c,errors.New("access deny for endpoints query !!!"))
- return
- }
- mlrunController.Forward(c, configs.GetAppConfig().Resources.Ailab+fmt.Sprintf("/labs/%s/runs/%s/endpoints", lab, runId))
- }
-
- func (mlrunController *MlrunController) CreateEndPoints(c *gin.Context) {
- lab := c.Param("lab")
- runId := c.Param("runId")
- mlrunController.Forward(c, configs.GetAppConfig().Resources.Ailab+fmt.Sprintf("/labs/%s/runs/%s/endpoints", lab, runId))
- }
-
- func (mlrunController *MlrunController) DeleteEndPoints(c *gin.Context) {
- lab := c.Param("lab")
- runId := c.Param("runId")
- name := c.Param("name")
- mlrunController.Forward(c, configs.GetAppConfig().Resources.Ailab+fmt.Sprintf("/labs/%s/runs/%s/endpoints/%s", lab, runId, name))
- }
-
- func (mlrunController *MlrunController) ImageOpt(c *gin.Context) {
- var req dto.ImageReq
- if bindAndValidate(c, &req) {
- userName := middlewares.UserName(c)
- userId, _ := middlewares.UserId(c)
- //userGroupId, _ := middlewares.UserId(c)
-
- fmt.Println(req)
- saveReq := &dto.AiLabRunOptReq{}
- if req.Action == "save" {
- saveReq.Action = "scratch"
- } else if req.Action == "cancel" {
- saveReq.Action = "cancel_scratch"
- }
-
- imageInfo, ok := configs.GetAppConfig().SystemImages["scratch"]
- if !ok {
- fail(c, fmt.Errorf("register error,imageInfo config not exist"))
- return
- }
-
- saveReq.LabId = req.LabId
- saveReq.Name = fmt.Sprintf("%sImage-%s", req.Action, req.RunId)
- saveReq.Engine = ""
- saveReq.Description = ""
- saveReq.Creator = userName
- saveReq.UserId = userId
- saveReq.Cmd = []string{"/code/start/aiarts_launcher"}
- imageConfig := dto.LaunchConfig{}
- imageConfig.UserParams = append(imageConfig.UserParams, dto.UserParamsType{Name: "imageName", Value: req.ImageName})
- saveReq.Config = map[string]dto.LaunchConfig{}
- saveReq.Config["imageInfo"] = imageConfig
- saveReq.RunId = req.RunId
-
- saveReq.Quota.Request.CPU = imageInfo.Cpu
- saveReq.Quota.Request.Memory = imageInfo.Mem
- saveReq.Quota.Limit = saveReq.Quota.Request
-
- aiLabService := services.GetGlobalAiLabService()
- _, commResp, err := aiLabService.AiLabRunOpt(saveReq, c.Request.Header)
-
- if err != nil {
- fail(c, err)
- return
- } else if commResp.Code != 0 && commResp.Code != 280000023 {
- failWithData(c, commResp.Code, commResp.Msg, commResp.Data)
- return
- }
-
- //req := dto.JobGetResourceReq{}
- //req.UsrGroupId = fmt.Sprintf("%v", userGroupId)
- //resources, commResp, err := services.GetGlobalJobSchedulerService().GetResources(&req, nil)
- //if err != nil {
- // fail(c, err)
- // return
- //}
-
- respWithData(c, commResp.Msg)
- }
- }
|