| @@ -1040,9 +1040,20 @@ func UpdateJob(job *Cloudbrain) error { | |||||
| } | } | ||||
| func updateJob(e Engine, job *Cloudbrain) error { | func updateJob(e Engine, job *Cloudbrain) error { | ||||
| var sess *xorm.Session | |||||
| sess = e.Where("job_id = ?", job.JobID) | |||||
| _, err := sess.Cols("status", "container_id", "container_ip").Update(job) | |||||
| return err | |||||
| } | |||||
| func UpdateTrainJobVersion(job *Cloudbrain) error { | |||||
| return updateJobTrainVersion(x, job) | |||||
| } | |||||
| func updateJobTrainVersion(e Engine, job *Cloudbrain) error { | |||||
| var sess *xorm.Session | var sess *xorm.Session | ||||
| sess = e.Where("job_id = ? AND version_name=?", job.JobID, job.VersionName) | sess = e.Where("job_id = ? AND version_name=?", job.JobID, job.VersionName) | ||||
| _, err := sess.Cols("status", "train_job_duration", "container_id", "container_ip").Update(job) | |||||
| _, err := sess.Cols("status", "train_job_duration").Update(job) | |||||
| return err | return err | ||||
| } | } | ||||
| @@ -80,6 +80,7 @@ type GenerateTrainJobReq struct { | |||||
| IsLatestVersion string | IsLatestVersion string | ||||
| Params string | Params string | ||||
| BranchName string | BranchName string | ||||
| PreVersionId int64 | |||||
| PreVersionName string | PreVersionName string | ||||
| FlavorName string | FlavorName string | ||||
| VersionCount int | VersionCount int | ||||
| @@ -297,7 +298,7 @@ func GenerateTrainJob(ctx *context.Context, req *GenerateTrainJobReq) (err error | |||||
| return nil | return nil | ||||
| } | } | ||||
| func GenerateTrainJobVersion(ctx *context.Context, req *GenerateTrainJobVersionReq, jobId string) (err error) { | |||||
| func GenerateTrainJobVersion(ctx *context.Context, req *GenerateTrainJobReq, jobId string) (err error) { | |||||
| jobResult, err := createTrainJobVersion(models.CreateTrainJobVersionParams{ | jobResult, err := createTrainJobVersion(models.CreateTrainJobVersionParams{ | ||||
| Description: req.Description, | Description: req.Description, | ||||
| Config: models.TrainJobVersionConfig{ | Config: models.TrainJobVersionConfig{ | ||||
| @@ -327,6 +328,19 @@ func GenerateTrainJobVersion(ctx *context.Context, req *GenerateTrainJobVersionR | |||||
| return err | return err | ||||
| } | } | ||||
| repo := ctx.Repo.Repository | |||||
| VersionTaskList, VersionListCount, err := models.CloudbrainsVersionList(&models.CloudbrainsOptions{ | |||||
| RepoID: repo.ID, | |||||
| Type: models.TypeCloudBrainTwo, | |||||
| JobType: string(models.JobTypeTrain), | |||||
| JobID: strconv.FormatInt(jobResult.JobID, 10), | |||||
| }) | |||||
| if err != nil { | |||||
| ctx.ServerError("Cloudbrain", err) | |||||
| return err | |||||
| } | |||||
| //将当前版本的isLatestVersion设置为"1"和任务数量更新,任务数量包括当前版本数VersionCount和历史创建的总版本数TotalVersionCount | |||||
| err = models.CreateCloudbrain(&models.Cloudbrain{ | err = models.CreateCloudbrain(&models.Cloudbrain{ | ||||
| Status: TransTrainJobStatus(jobResult.Status), | Status: TransTrainJobStatus(jobResult.Status), | ||||
| UserID: ctx.User.ID, | UserID: ctx.User.ID, | ||||
| @@ -340,6 +354,7 @@ func GenerateTrainJobVersion(ctx *context.Context, req *GenerateTrainJobVersionR | |||||
| Uuid: req.Uuid, | Uuid: req.Uuid, | ||||
| DatasetName: attach.Name, | DatasetName: attach.Name, | ||||
| CommitID: req.CommitID, | CommitID: req.CommitID, | ||||
| IsLatestVersion: req.IsLatestVersion, | |||||
| PreVersionName: req.PreVersionName, | PreVersionName: req.PreVersionName, | ||||
| ComputeResource: ComputeResource, | ComputeResource: ComputeResource, | ||||
| EngineID: req.EngineID, | EngineID: req.EngineID, | ||||
| @@ -355,49 +370,18 @@ func GenerateTrainJobVersion(ctx *context.Context, req *GenerateTrainJobVersionR | |||||
| WorkServerNumber: req.WorkServerNumber, | WorkServerNumber: req.WorkServerNumber, | ||||
| FlavorName: req.FlavorName, | FlavorName: req.FlavorName, | ||||
| EngineName: req.EngineName, | EngineName: req.EngineName, | ||||
| TotalVersionCount: req.TotalVersionCount, | |||||
| TotalVersionCount: VersionTaskList[0].TotalVersionCount + 1, | |||||
| VersionCount: VersionListCount + 1, | |||||
| }) | }) | ||||
| if err != nil { | if err != nil { | ||||
| log.Error("CreateCloudbrain(%s) failed:%v", req.JobName, err.Error()) | log.Error("CreateCloudbrain(%s) failed:%v", req.JobName, err.Error()) | ||||
| return err | return err | ||||
| } | } | ||||
| repo := ctx.Repo.Repository | |||||
| page := ctx.QueryInt("page") | |||||
| if page <= 0 { | |||||
| page = 1 | |||||
| } | |||||
| _, VersionListCount, err := models.CloudbrainsVersionList(&models.CloudbrainsOptions{ | |||||
| ListOptions: models.ListOptions{ | |||||
| Page: page, | |||||
| PageSize: setting.UI.IssuePagingNum, | |||||
| }, | |||||
| RepoID: repo.ID, | |||||
| Type: models.TypeCloudBrainTwo, | |||||
| JobType: string(models.JobTypeTrain), | |||||
| JobID: strconv.FormatInt(jobResult.JobID, 10), | |||||
| }) | |||||
| if err != nil { | |||||
| ctx.ServerError("Cloudbrain", err) | |||||
| return err | |||||
| } | |||||
| //将训练任务的上一版本的isLatestVersion设置为"0" | //将训练任务的上一版本的isLatestVersion设置为"0" | ||||
| latestTask, err := models.GetCloudbrainByJobIDAndIsLatestVersion(strconv.FormatInt(jobResult.JobID, 10), IsLatestVersion) | |||||
| if err != nil { | |||||
| ctx.ServerError("GetCloudbrainByJobIDAndIsLatestVersion faild:", err) | |||||
| return err | |||||
| } | |||||
| err = models.SetVersionCountAndLatestVersionByJobIDAndVersionName(strconv.FormatInt(jobResult.JobID, 10), latestTask.VersionName, VersionListCount, NotLatestVersion, req.TotalVersionCount) | |||||
| if err != nil { | |||||
| ctx.ServerError("UpdateJobVersionCount failed", err) | |||||
| return err | |||||
| } | |||||
| //将当前版本的isLatestVersion设置为"1"和任务数量更新,任务数量包括当前版本数VersionCount和历史创建的总版本数TotalVersionCount | |||||
| err = models.SetVersionCountAndLatestVersionByJobIDAndVersionName(strconv.FormatInt(jobResult.JobID, 10), jobResult.VersionName, VersionListCount, IsLatestVersion, req.TotalVersionCount) | |||||
| err = models.SetVersionCountAndLatestVersionByJobIDAndVersionName(strconv.FormatInt(jobResult.JobID, 10), VersionTaskList[0].VersionName, VersionCount, NotLatestVersion, TotalVersionCount) | |||||
| if err != nil { | if err != nil { | ||||
| ctx.ServerError("UpdateJobVersionCount failed", err) | |||||
| ctx.ServerError("Update IsLatestVersion failed", err) | |||||
| return err | return err | ||||
| } | } | ||||
| @@ -14,7 +14,6 @@ import ( | |||||
| "code.gitea.io/gitea/modules/context" | "code.gitea.io/gitea/modules/context" | ||||
| "code.gitea.io/gitea/modules/log" | "code.gitea.io/gitea/modules/log" | ||||
| "code.gitea.io/gitea/modules/modelarts" | "code.gitea.io/gitea/modules/modelarts" | ||||
| "code.gitea.io/gitea/modules/setting" | |||||
| "code.gitea.io/gitea/modules/storage" | "code.gitea.io/gitea/modules/storage" | ||||
| ) | ) | ||||
| @@ -112,7 +111,7 @@ func GetModelArtsTrainJobVersion(ctx *context.APIContext) { | |||||
| job.TrainJobDuration = "00:00:00" | job.TrainJobDuration = "00:00:00" | ||||
| } | } | ||||
| err = models.UpdateJob(job) | |||||
| err = models.UpdateTrainJobVersion(job) | |||||
| if err != nil { | if err != nil { | ||||
| log.Error("UpdateJob failed:", err) | log.Error("UpdateJob failed:", err) | ||||
| } | } | ||||
| @@ -213,31 +212,24 @@ func DelTrainJobVersion(ctx *context.APIContext) { | |||||
| return | return | ||||
| } | } | ||||
| _, err = modelarts.DelTrainJobVersion(jobID, strconv.FormatInt(task.VersionID, 10)) | |||||
| //删除数据库记录 | |||||
| err = models.DeleteJobVersion(task) | |||||
| if err != nil { | if err != nil { | ||||
| log.Error("DelTrainJobVersion(%s) failed:%v", task.JobName, err.Error()) | |||||
| ctx.ServerError("DeleteJobVersion failed", err) | |||||
| ctx.NotFound(err) | ctx.NotFound(err) | ||||
| return | return | ||||
| } | } | ||||
| err = models.DeleteJobVersion(task) | |||||
| //删除modelarts上的记录 | |||||
| _, err = modelarts.DelTrainJobVersion(jobID, strconv.FormatInt(task.VersionID, 10)) | |||||
| if err != nil { | if err != nil { | ||||
| ctx.ServerError("DeleteJobVersion failed", err) | |||||
| log.Error("DelTrainJobVersion(%s) failed:%v", task.JobName, err.Error()) | |||||
| ctx.NotFound(err) | ctx.NotFound(err) | ||||
| return | return | ||||
| } | } | ||||
| //获取删除后的版本数量 | //获取删除后的版本数量 | ||||
| repo := ctx.Repo.Repository | repo := ctx.Repo.Repository | ||||
| page := ctx.QueryInt("page") | |||||
| if page <= 0 { | |||||
| page = 1 | |||||
| } | |||||
| VersionListTasks, VersionListCount, err := models.CloudbrainsVersionList(&models.CloudbrainsOptions{ | |||||
| ListOptions: models.ListOptions{ | |||||
| Page: page, | |||||
| PageSize: setting.UI.IssuePagingNum, | |||||
| }, | |||||
| VersionTaskList, VersionListCount, err := models.CloudbrainsVersionList(&models.CloudbrainsOptions{ | |||||
| RepoID: repo.ID, | RepoID: repo.ID, | ||||
| Type: models.TypeCloudBrainTwo, | Type: models.TypeCloudBrainTwo, | ||||
| JobType: string(models.JobTypeTrain), | JobType: string(models.JobTypeTrain), | ||||
| @@ -248,20 +240,15 @@ func DelTrainJobVersion(ctx *context.APIContext) { | |||||
| return | return | ||||
| } | } | ||||
| //判断当前的任务是否是最新版本,若是,将排序后的第一个版本设置为最新版本,若不是,最新版本不变,更改最新版本的版本数。 | |||||
| // 判断当前删掉的任务是否是最新版本,若是,将排序后的TotalVersionCount置为删掉的最新版本的TotalVersionCount,若不是,按时间排序后的版本列表的第一个版本设置为最新版本,TotalVersionCount不变 | |||||
| if task.IsLatestVersion == modelarts.IsLatestVersion { | if task.IsLatestVersion == modelarts.IsLatestVersion { | ||||
| err = models.SetVersionCountAndLatestVersionByJobIDAndVersionName(jobID, VersionListTasks[0].Cloudbrain.VersionName, VersionListCount, modelarts.IsLatestVersion, VersionListTasks[0].Cloudbrain.TotalVersionCount) | |||||
| err = models.SetVersionCountAndLatestVersionByJobIDAndVersionName(jobID, VersionTaskList[0].Cloudbrain.VersionName, VersionListCount, modelarts.IsLatestVersion, task.TotalVersionCount) | |||||
| if err != nil { | if err != nil { | ||||
| ctx.ServerError("UpdateJobVersionCount failed", err) | ctx.ServerError("UpdateJobVersionCount failed", err) | ||||
| return | return | ||||
| } | } | ||||
| } else { | } else { | ||||
| latestTask, err := models.GetCloudbrainByJobIDAndIsLatestVersion(jobID, modelarts.IsLatestVersion) | |||||
| if err != nil { | |||||
| ctx.ServerError("GetCloudbrainByJobIDAndIsLatestVersion faild:", err) | |||||
| return | |||||
| } | |||||
| err = models.SetVersionCountAndLatestVersionByJobIDAndVersionName(jobID, latestTask.VersionName, VersionListCount, modelarts.IsLatestVersion, VersionListTasks[0].Cloudbrain.TotalVersionCount) | |||||
| err = models.SetVersionCountAndLatestVersionByJobIDAndVersionName(jobID, VersionTaskList[0].VersionName, VersionListCount, modelarts.IsLatestVersion, VersionTaskList[0].Cloudbrain.TotalVersionCount) | |||||
| if err != nil { | if err != nil { | ||||
| ctx.ServerError("UpdateJobVersionCount failed", err) | ctx.ServerError("UpdateJobVersionCount failed", err) | ||||
| return | return | ||||
| @@ -34,7 +34,6 @@ const ( | |||||
| tplModelArtsTrainJobIndex base.TplName = "repo/modelarts/trainjob/index" | tplModelArtsTrainJobIndex base.TplName = "repo/modelarts/trainjob/index" | ||||
| tplModelArtsTrainJobNew base.TplName = "repo/modelarts/trainjob/new" | tplModelArtsTrainJobNew base.TplName = "repo/modelarts/trainjob/new" | ||||
| tplModelArtsTrainJobShow base.TplName = "repo/modelarts/trainjob/show" | tplModelArtsTrainJobShow base.TplName = "repo/modelarts/trainjob/show" | ||||
| tplModelArtsTrainJobShowModels base.TplName = "repo/modelarts/trainjob/models/index" | |||||
| tplModelArtsTrainJobVersionNew base.TplName = "repo/modelarts/trainjob/version_new" | tplModelArtsTrainJobVersionNew base.TplName = "repo/modelarts/trainjob/version_new" | ||||
| ) | ) | ||||
| @@ -481,8 +480,6 @@ func trainJobNewVersionDataPrepare(ctx *context.Context) error { | |||||
| func TrainJobCreate(ctx *context.Context, form auth.CreateModelArtsTrainJobForm) { | func TrainJobCreate(ctx *context.Context, form auth.CreateModelArtsTrainJobForm) { | ||||
| ctx.Data["PageIsTrainJob"] = true | ctx.Data["PageIsTrainJob"] = true | ||||
| VersionOutputPath := modelarts.GetVersionOutputPathByTotalVersionCount(modelarts.TotalVersionCount) | VersionOutputPath := modelarts.GetVersionOutputPathByTotalVersionCount(modelarts.TotalVersionCount) | ||||
| // StringTotalVersionCount := fmt.Sprintf("%04d", modelarts.TotalVersionCount) | |||||
| // VersionOutputPath := "V" + StringTotalVersionCount | |||||
| jobName := form.JobName | jobName := form.JobName | ||||
| uuid := form.Attachment | uuid := form.Attachment | ||||
| description := form.Description | description := form.Description | ||||
| @@ -539,15 +536,12 @@ func TrainJobCreate(ctx *context.Context, form auth.CreateModelArtsTrainJobForm) | |||||
| ctx.Data["params"] = form.Params | ctx.Data["params"] = form.Params | ||||
| ctx.Data["branch_name"] = branch_name | ctx.Data["branch_name"] = branch_name | ||||
| trainJobNewDataPrepare(ctx) | trainJobNewDataPrepare(ctx) | ||||
| // ctx.RenderWithErr("Failed to clone repository", tplModelArtsTrainJobNew, &form) | |||||
| ctx.RenderWithErr("创建任务失败,任务名称已存在!", tplModelArtsTrainJobNew, &form) | ctx.RenderWithErr("创建任务失败,任务名称已存在!", tplModelArtsTrainJobNew, &form) | ||||
| // ctx.RenderWithErr(err, tplModelArtsTrainJobNew, &form) | |||||
| return | return | ||||
| } | } | ||||
| //todo: upload code (send to file_server todo this work?) | //todo: upload code (send to file_server todo this work?) | ||||
| if err := obsMkdir(setting.CodePathPrefix + jobName + modelarts.OutputPath + VersionOutputPath + "/"); err != nil { | if err := obsMkdir(setting.CodePathPrefix + jobName + modelarts.OutputPath + VersionOutputPath + "/"); err != nil { | ||||
| // if err := obsMkdir(setting.CodePathPrefix + jobName + modelarts.OutputPath); err != nil { | |||||
| log.Error("Failed to obsMkdir_output: %s (%v)", repo.FullName(), err) | log.Error("Failed to obsMkdir_output: %s (%v)", repo.FullName(), err) | ||||
| trainJobNewDataPrepare(ctx) | trainJobNewDataPrepare(ctx) | ||||
| ctx.RenderWithErr("Failed to obsMkdir_output", tplModelArtsTrainJobNew, &form) | ctx.RenderWithErr("Failed to obsMkdir_output", tplModelArtsTrainJobNew, &form) | ||||
| @@ -681,8 +675,6 @@ func TrainJobCreateVersion(ctx *context.Context, form auth.CreateModelArtsTrainJ | |||||
| ctx.ServerError("GetCloudbrainByJobIDAndIsLatestVersion faild:", err) | ctx.ServerError("GetCloudbrainByJobIDAndIsLatestVersion faild:", err) | ||||
| return | return | ||||
| } | } | ||||
| // StringTotalVersionCount := fmt.Sprintf("%04d", latestTask.TotalVersionCount+1) | |||||
| // VersionOutputPath := "V" + StringTotalVersionCount | |||||
| VersionOutputPath := modelarts.GetVersionOutputPathByTotalVersionCount(latestTask.TotalVersionCount + 1) | VersionOutputPath := modelarts.GetVersionOutputPathByTotalVersionCount(latestTask.TotalVersionCount + 1) | ||||
| jobName := form.JobName | jobName := form.JobName | ||||
| @@ -705,6 +697,7 @@ func TrainJobCreateVersion(ctx *context.Context, form auth.CreateModelArtsTrainJ | |||||
| PreVersionName := form.VersionName | PreVersionName := form.VersionName | ||||
| FlavorName := form.FlavorName | FlavorName := form.FlavorName | ||||
| EngineName := form.EngineName | EngineName := form.EngineName | ||||
| isLatestVersion := modelarts.IsLatestVersion | |||||
| if err := paramCheckCreateTrainJob(form); err != nil { | if err := paramCheckCreateTrainJob(form); err != nil { | ||||
| log.Error("paramCheckCreateTrainJob failed:(%v)", err) | log.Error("paramCheckCreateTrainJob failed:(%v)", err) | ||||
| @@ -738,9 +731,7 @@ func TrainJobCreateVersion(ctx *context.Context, form auth.CreateModelArtsTrainJ | |||||
| ctx.Data["datasetName"] = attach.Name | ctx.Data["datasetName"] = attach.Name | ||||
| ctx.Data["params"] = form.Params | ctx.Data["params"] = form.Params | ||||
| ctx.Data["branch_name"] = branch_name | ctx.Data["branch_name"] = branch_name | ||||
| // ctx.RenderWithErr("Failed to clone repository", tplModelArtsTrainJobNew, &form) | |||||
| ctx.RenderWithErr("创建任务失败,任务名称已存在!", tplModelArtsTrainJobVersionNew, &form) | ctx.RenderWithErr("创建任务失败,任务名称已存在!", tplModelArtsTrainJobVersionNew, &form) | ||||
| // ctx.RenderWithErr(err, tplModelArtsTrainJobNew, &form) | |||||
| return | return | ||||
| } | } | ||||
| @@ -842,7 +833,7 @@ func TrainJobCreateVersion(ctx *context.Context, form auth.CreateModelArtsTrainJ | |||||
| ctx.RenderWithErr(err.Error(), tplModelArtsTrainJobVersionNew, &form) | ctx.RenderWithErr(err.Error(), tplModelArtsTrainJobVersionNew, &form) | ||||
| return | return | ||||
| } | } | ||||
| req := &modelarts.GenerateTrainJobVersionReq{ | |||||
| req := &modelarts.GenerateTrainJobReq{ | |||||
| JobName: task.JobName, | JobName: task.JobName, | ||||
| DataUrl: dataPath, | DataUrl: dataPath, | ||||
| Description: description, | Description: description, | ||||
| @@ -852,6 +843,7 @@ func TrainJobCreateVersion(ctx *context.Context, form auth.CreateModelArtsTrainJ | |||||
| TrainUrl: outputObsPath, | TrainUrl: outputObsPath, | ||||
| FlavorCode: flavorCode, | FlavorCode: flavorCode, | ||||
| WorkServerNumber: workServerNumber, | WorkServerNumber: workServerNumber, | ||||
| IsLatestVersion: isLatestVersion, | |||||
| EngineID: int64(engineID), | EngineID: int64(engineID), | ||||
| LogUrl: logObsPath, | LogUrl: logObsPath, | ||||
| PoolID: poolID, | PoolID: poolID, | ||||
| @@ -866,6 +858,7 @@ func TrainJobCreateVersion(ctx *context.Context, form auth.CreateModelArtsTrainJ | |||||
| PreVersionName: PreVersionName, | PreVersionName: PreVersionName, | ||||
| TotalVersionCount: latestTask.TotalVersionCount + 1, | TotalVersionCount: latestTask.TotalVersionCount + 1, | ||||
| } | } | ||||
| err = modelarts.GenerateTrainJobVersion(ctx, req, jobID) | err = modelarts.GenerateTrainJobVersion(ctx, req, jobID) | ||||
| if err != nil { | if err != nil { | ||||
| log.Error("GenerateTrainJob failed:%v", err.Error()) | log.Error("GenerateTrainJob failed:%v", err.Error()) | ||||
| @@ -1088,16 +1081,8 @@ func trainJobGetLog(jobID string) (*models.GetTrainJobLogFileNamesResult, *model | |||||
| func TrainJobDel(ctx *context.Context) { | func TrainJobDel(ctx *context.Context) { | ||||
| var jobID = ctx.Params(":jobid") | var jobID = ctx.Params(":jobid") | ||||
| repo := ctx.Repo.Repository | repo := ctx.Repo.Repository | ||||
| page := ctx.QueryInt("page") | |||||
| if page <= 0 { | |||||
| page = 1 | |||||
| } | |||||
| VersionListTasks, _, err := models.CloudbrainsVersionList(&models.CloudbrainsOptions{ | VersionListTasks, _, err := models.CloudbrainsVersionList(&models.CloudbrainsOptions{ | ||||
| ListOptions: models.ListOptions{ | |||||
| Page: page, | |||||
| PageSize: setting.UI.IssuePagingNum, | |||||
| }, | |||||
| RepoID: repo.ID, | RepoID: repo.ID, | ||||
| Type: models.TypeCloudBrainTwo, | Type: models.TypeCloudBrainTwo, | ||||
| JobType: string(models.JobTypeTrain), | JobType: string(models.JobTypeTrain), | ||||
| @@ -1107,6 +1092,7 @@ func TrainJobDel(ctx *context.Context) { | |||||
| ctx.ServerError("get VersionListTasks failed", err) | ctx.ServerError("get VersionListTasks failed", err) | ||||
| return | return | ||||
| } | } | ||||
| //删除数据库Cloudbrain表的记录 | |||||
| for _, task := range VersionListTasks { | for _, task := range VersionListTasks { | ||||
| err = models.DeleteJobVersion(&task.Cloudbrain) | err = models.DeleteJobVersion(&task.Cloudbrain) | ||||
| if err != nil { | if err != nil { | ||||
| @@ -1114,6 +1100,7 @@ func TrainJobDel(ctx *context.Context) { | |||||
| return | return | ||||
| } | } | ||||
| } | } | ||||
| //删除modelarts上的任务记录 | |||||
| _, err = modelarts.DelTrainJob(jobID) | _, err = modelarts.DelTrainJob(jobID) | ||||
| if err != nil { | if err != nil { | ||||
| log.Error("DelTrainJob(%s) failed:%v", jobID, err.Error()) | log.Error("DelTrainJob(%s) failed:%v", jobID, err.Error()) | ||||
| @@ -1206,43 +1193,3 @@ func getConfigList(perPage, page int, sortBy, order, searchContent, configType s | |||||
| return list, nil | return list, nil | ||||
| } | } | ||||
| func TrainJobShowModels(ctx *context.Context) { | |||||
| ctx.Data["PageIsCloudBrain"] = true | |||||
| jobID := ctx.Params(":jobid") | |||||
| parentDir := ctx.Query("parentDir") | |||||
| dirArray := strings.Split(parentDir, "/") | |||||
| task, err := models.GetCloudbrainByJobID(jobID) | |||||
| if err != nil { | |||||
| log.Error("no such job!", ctx.Data["msgID"]) | |||||
| ctx.ServerError("no such job:", err) | |||||
| return | |||||
| } | |||||
| models, err := storage.GetObsListObject(task.JobName, parentDir) | |||||
| if err != nil { | |||||
| log.Info("get TrainJobListModel failed:", err) | |||||
| ctx.ServerError("GetObsListObject:", err) | |||||
| return | |||||
| } | |||||
| ctx.Data["Path"] = dirArray | |||||
| ctx.Data["Dirs"] = models | |||||
| ctx.Data["task"] = task | |||||
| ctx.Data["JobID"] = jobID | |||||
| ctx.HTML(200, tplModelArtsTrainJobShowModels) | |||||
| } | |||||
| func TrainJobDownloadModel(ctx *context.Context) { | |||||
| parentDir := ctx.Query("parentDir") | |||||
| fileName := ctx.Query("fileName") | |||||
| jobName := ctx.Query("jobName") | |||||
| url, err := storage.GetObsCreateSignedUrl(jobName, parentDir, fileName) | |||||
| if err != nil { | |||||
| log.Error("GetObsCreateSignedUrl failed: %v", err.Error(), ctx.Data["msgID"]) | |||||
| ctx.ServerError("GetObsCreateSignedUrl", err) | |||||
| return | |||||
| } | |||||
| http.Redirect(ctx.Resp, ctx.Req.Request, url, http.StatusMovedPermanently) | |||||
| } | |||||