@@ -205,7 +205,7 @@ type Cloudbrain struct { | |||||
BenchmarkTypeRankLink string `xorm:"-"` | BenchmarkTypeRankLink string `xorm:"-"` | ||||
StartTime timeutil.TimeStamp | StartTime timeutil.TimeStamp | ||||
EndTime timeutil.TimeStamp | EndTime timeutil.TimeStamp | ||||
Cleared bool `xorm:"DEFAULT false"` | |||||
Cleared bool `xorm:"DEFAULT false"` | |||||
Spec *Specification `xorm:"-"` | Spec *Specification `xorm:"-"` | ||||
} | } | ||||
@@ -1823,7 +1823,7 @@ func QueryModelTrainJobVersionList(jobId string) ([]*Cloudbrain, int, error) { | |||||
return cloudbrains, int(len(cloudbrains)), nil | return cloudbrains, int(len(cloudbrains)), nil | ||||
} | } | ||||
func QueryModelTrainJobList(repoId int64) ([]*CloudbrainInfo, int, error) { | |||||
func QueryModelTrainJobList(repoId int64) ([]*Cloudbrain, int, error) { | |||||
sess := x.NewSession() | sess := x.NewSession() | ||||
defer sess.Close() | defer sess.Close() | ||||
var cond = builder.NewCond() | var cond = builder.NewCond() | ||||
@@ -1840,14 +1840,14 @@ func QueryModelTrainJobList(repoId int64) ([]*CloudbrainInfo, int, error) { | |||||
// builder.In("type", 0, 1), | // builder.In("type", 0, 1), | ||||
// ) | // ) | ||||
cloudbrains := make([]*CloudbrainInfo, 0) | |||||
cloudbrains := make([]*Cloudbrain, 0) | |||||
if err := sess.Select("job_id,display_job_name").Table(&Cloudbrain{}).Where(cond).OrderBy("created_unix DESC"). | if err := sess.Select("job_id,display_job_name").Table(&Cloudbrain{}).Where(cond).OrderBy("created_unix DESC"). | ||||
Find(&cloudbrains); err != nil { | Find(&cloudbrains); err != nil { | ||||
return nil, 0, fmt.Errorf("Find: %v", err) | return nil, 0, fmt.Errorf("Find: %v", err) | ||||
} | } | ||||
keys := make(map[string]string) | keys := make(map[string]string) | ||||
uniqueElements := make([]*CloudbrainInfo, 0) | |||||
uniqueElements := make([]*Cloudbrain, 0) | |||||
for _, entry := range cloudbrains { | for _, entry := range cloudbrains { | ||||
if _, value := keys[entry.JobID]; !value { | if _, value := keys[entry.JobID]; !value { | ||||
keys[entry.JobID] = entry.DisplayJobName | keys[entry.JobID] = entry.DisplayJobName | ||||
@@ -1988,7 +1988,7 @@ func GetCloudbrainByID(id string) (*Cloudbrain, error) { | |||||
return getRepoCloudBrain(cb) | return getRepoCloudBrain(cb) | ||||
} | } | ||||
func IsCloudbrainExistByJobName(jobName string)(bool,error){ | |||||
func IsCloudbrainExistByJobName(jobName string) (bool, error) { | |||||
return x.Unscoped().Exist(&Cloudbrain{ | return x.Unscoped().Exist(&Cloudbrain{ | ||||
JobName: jobName, | JobName: jobName, | ||||
}) | }) | ||||
@@ -2181,25 +2181,25 @@ func GetCloudBrainOneStoppedNotDebugJobDaysAgo(days int, limit int) ([]*Cloudbra | |||||
Limit(limit). | Limit(limit). | ||||
Find(&cloudbrains) | Find(&cloudbrains) | ||||
} | } | ||||
/** | /** | ||||
本方法考虑了再次调试的情况,多次调试取最后一次的任务的结束时间 | 本方法考虑了再次调试的情况,多次调试取最后一次的任务的结束时间 | ||||
*/ | |||||
*/ | |||||
func GetCloudBrainOneStoppedDebugJobDaysAgo(days int, limit int) ([]*Cloudbrain, error) { | func GetCloudBrainOneStoppedDebugJobDaysAgo(days int, limit int) ([]*Cloudbrain, error) { | ||||
cloudbrains := make([]*Cloudbrain, 0, 10) | cloudbrains := make([]*Cloudbrain, 0, 10) | ||||
endTimeBefore := time.Now().Unix() - int64(days)*24*3600 | endTimeBefore := time.Now().Unix() - int64(days)*24*3600 | ||||
missEndTimeBefore := endTimeBefore - 24*3600 | missEndTimeBefore := endTimeBefore - 24*3600 | ||||
sql:=`SELECT id,job_name,job_id from (SELECT DISTINCT ON (job_name) | |||||
sql := `SELECT id,job_name,job_id from (SELECT DISTINCT ON (job_name) | |||||
id, job_name, job_id,status,end_time,updated_unix,cleared | id, job_name, job_id,status,end_time,updated_unix,cleared | ||||
FROM cloudbrain | FROM cloudbrain | ||||
where type=0 and job_type='DEBUG' | where type=0 and job_type='DEBUG' | ||||
ORDER BY job_name, updated_unix DESC) a | ORDER BY job_name, updated_unix DESC) a | ||||
where status in ('STOPPED','SUCCEEDED','FAILED') and (((end_time is null or end_time=0) and updated_unix<? and updated_unix != 0 ) or (end_time<? and end_time != 0)) and cleared=false` | where status in ('STOPPED','SUCCEEDED','FAILED') and (((end_time is null or end_time=0) and updated_unix<? and updated_unix != 0 ) or (end_time<? and end_time != 0)) and cleared=false` | ||||
return cloudbrains, x.Unscoped().SQL(sql,missEndTimeBefore, endTimeBefore).Limit(limit).Find(&cloudbrains) | |||||
return cloudbrains, x.Unscoped().SQL(sql, missEndTimeBefore, endTimeBefore).Limit(limit).Find(&cloudbrains) | |||||
} | } | ||||
func UpdateCloudBrainRecordsCleared(ids []int64) error { | func UpdateCloudBrainRecordsCleared(ids []int64) error { | ||||
pageSize := 150 | pageSize := 150 | ||||
n := len(ids) / pageSize | n := len(ids) / pageSize | ||||
@@ -34,8 +34,7 @@ func ToCloudBrain(task *models.Cloudbrain) *api.Cloudbrain { | |||||
StartTime: int64(task.StartTime), | StartTime: int64(task.StartTime), | ||||
EndTime: int64(task.EndTime), | EndTime: int64(task.EndTime), | ||||
Spec: ToSpecification(task.Spec), | |||||
Spec: ToSpecification(task.Spec), | |||||
} | } | ||||
} | } | ||||
func ToAttachment(attachment *models.Attachment) *api.AttachmentShow { | func ToAttachment(attachment *models.Attachment) *api.AttachmentShow { | ||||
@@ -89,6 +88,9 @@ func ToDataset(dataset *models.Dataset) *api.Dataset { | |||||
} | } | ||||
func ToSpecification(s *models.Specification) *api.SpecificationShow { | func ToSpecification(s *models.Specification) *api.SpecificationShow { | ||||
if s == nil { | |||||
return nil | |||||
} | |||||
return &api.SpecificationShow{ | return &api.SpecificationShow{ | ||||
ID: s.ID, | ID: s.ID, | ||||
AccCardsNum: s.AccCardsNum, | AccCardsNum: s.AccCardsNum, | ||||
@@ -577,6 +577,7 @@ static.CloudBrainTaskNum=CloudBrain Task Count | |||||
static.CloudBrainRunTime=CloudBrain Run Time | static.CloudBrainRunTime=CloudBrain Run Time | ||||
static.CommitDatasetNum=Commit Dataset Count | static.CommitDatasetNum=Commit Dataset Count | ||||
static.CommitModelCount=Commit Model Count | static.CommitModelCount=Commit Model Count | ||||
static.ModelConvertCount=Model Convert Count | |||||
static.UserIndex=Normalized user index | static.UserIndex=Normalized user index | ||||
static.UserIndexPrimitive=User Index | static.UserIndexPrimitive=User Index | ||||
static.countdate=Count Date | static.countdate=Count Date | ||||
@@ -581,6 +581,7 @@ static.CloudBrainTaskNum=云脑任务数 | |||||
static.CloudBrainRunTime=云脑运行时间(小时) | static.CloudBrainRunTime=云脑运行时间(小时) | ||||
static.CommitDatasetNum=上传(提交)数据集文件数 | static.CommitDatasetNum=上传(提交)数据集文件数 | ||||
static.CommitModelCount=提交模型数 | static.CommitModelCount=提交模型数 | ||||
static.ModelConvertCount=模型转换数 | |||||
static.UserIndex=归一化用户指数 | static.UserIndex=归一化用户指数 | ||||
static.UserIndexPrimitive=用户指数 | static.UserIndexPrimitive=用户指数 | ||||
static.countdate=系统统计时间 | static.countdate=系统统计时间 | ||||
@@ -1672,7 +1673,7 @@ issues.action_assignee_no_select=未指派 | |||||
issues.opened_by=由 <a href="%[2]s">%[3]s</a> 于 %[1]s创建 | issues.opened_by=由 <a href="%[2]s">%[3]s</a> 于 %[1]s创建 | ||||
pulls.merged_by=由 <a href="%[2]s">%[3]s</a> 于 %[1]s 合并 | pulls.merged_by=由 <a href="%[2]s">%[3]s</a> 于 %[1]s 合并 | ||||
pulls.merged_by_fake=由 %[2]s 于 %[1]s 合并 | pulls.merged_by_fake=由 %[2]s 于 %[1]s 合并 | ||||
issues.closed_by=按 <a href="%[2]s">%[3]s</a> 关闭%[1]s | |||||
issues.closed_by=由 <a href="%[2]s">%[3]s</a> 创建,被关闭于 %[1]s | |||||
issues.opened_by_fake=由 %[2]s 于 %[1]s创建 | issues.opened_by_fake=由 %[2]s 于 %[1]s创建 | ||||
issues.closed_by_fake=通过 %[2]s 关闭 %[1]s | issues.closed_by_fake=通过 %[2]s 关闭 %[1]s | ||||
issues.previous=上一页 | issues.previous=上一页 | ||||
@@ -1024,6 +1024,8 @@ func RegisterRoutes(m *macaron.Macaron) { | |||||
m.Get("/query_model_byName", repo.QueryModelByName) | m.Get("/query_model_byName", repo.QueryModelByName) | ||||
m.Get("/query_model_for_predict", repo.QueryModelListForPredict) | m.Get("/query_model_for_predict", repo.QueryModelListForPredict) | ||||
m.Get("/query_modelfile_for_predict", repo.QueryModelFileForPredict) | m.Get("/query_modelfile_for_predict", repo.QueryModelFileForPredict) | ||||
m.Get("/query_train_job", repo.QueryTrainJobList) | |||||
m.Get("/query_train_job_version", repo.QueryTrainJobVersionList) | |||||
m.Get("/query_train_model", repo.QueryTrainModelList) | m.Get("/query_train_model", repo.QueryTrainModelList) | ||||
m.Post("/create_model_convert", repo.CreateModelConvert) | m.Post("/create_model_convert", repo.CreateModelConvert) | ||||
m.Post("/convert_stop", repo.StopModelConvert) | m.Post("/convert_stop", repo.StopModelConvert) | ||||
@@ -4,8 +4,10 @@ import ( | |||||
"net/http" | "net/http" | ||||
"code.gitea.io/gitea/modules/context" | "code.gitea.io/gitea/modules/context" | ||||
"code.gitea.io/gitea/modules/convert" | |||||
"code.gitea.io/gitea/modules/log" | "code.gitea.io/gitea/modules/log" | ||||
"code.gitea.io/gitea/modules/storage" | "code.gitea.io/gitea/modules/storage" | ||||
api "code.gitea.io/gitea/modules/structs" | |||||
routerRepo "code.gitea.io/gitea/routers/repo" | routerRepo "code.gitea.io/gitea/routers/repo" | ||||
) | ) | ||||
@@ -54,6 +56,21 @@ func QueryModelListForPredict(ctx *context.APIContext) { | |||||
routerRepo.QueryModelListForPredict(ctx.Context) | routerRepo.QueryModelListForPredict(ctx.Context) | ||||
} | } | ||||
func QueryTrainJobList(ctx *context.APIContext) { | |||||
result, err := routerRepo.QueryTrainJobListApi(ctx.Context) | |||||
if err != nil { | |||||
log.Info("query error." + err.Error()) | |||||
ctx.JSON(http.StatusOK, nil) | |||||
} else { | |||||
re := make([]*api.Cloudbrain, 0) | |||||
for _, task := range result { | |||||
conRe := convert.ToCloudBrain(task) | |||||
re = append(re, conRe) | |||||
} | |||||
ctx.JSON(http.StatusOK, re) | |||||
} | |||||
} | |||||
func QueryTrainModelList(ctx *context.APIContext) { | func QueryTrainModelList(ctx *context.APIContext) { | ||||
result, err := routerRepo.QueryTrainModelFileById(ctx.Context) | result, err := routerRepo.QueryTrainModelFileById(ctx.Context) | ||||
if err != nil { | if err != nil { | ||||
@@ -63,6 +80,21 @@ func QueryTrainModelList(ctx *context.APIContext) { | |||||
ctx.JSON(http.StatusOK, re) | ctx.JSON(http.StatusOK, re) | ||||
} | } | ||||
func QueryTrainJobVersionList(ctx *context.APIContext) { | |||||
result, err := routerRepo.QueryTrainJobVersionListApi(ctx.Context) | |||||
if err != nil { | |||||
log.Info("query error." + err.Error()) | |||||
ctx.JSON(http.StatusOK, nil) | |||||
} else { | |||||
re := make([]*api.Cloudbrain, 0) | |||||
for _, task := range result { | |||||
conRe := convert.ToCloudBrain(task) | |||||
re = append(re, conRe) | |||||
} | |||||
ctx.JSON(http.StatusOK, re) | |||||
} | |||||
} | |||||
func convertFileFormat(result []storage.FileInfo) []FileInfo { | func convertFileFormat(result []storage.FileInfo) []FileInfo { | ||||
re := make([]FileInfo, 0) | re := make([]FileInfo, 0) | ||||
if result != nil { | if result != nil { | ||||
@@ -2,7 +2,6 @@ package repo | |||||
import ( | import ( | ||||
"archive/zip" | "archive/zip" | ||||
"code.gitea.io/gitea/services/repository" | |||||
"encoding/json" | "encoding/json" | ||||
"errors" | "errors" | ||||
"fmt" | "fmt" | ||||
@@ -12,6 +11,8 @@ import ( | |||||
"regexp" | "regexp" | ||||
"strings" | "strings" | ||||
"code.gitea.io/gitea/services/repository" | |||||
"code.gitea.io/gitea/models" | "code.gitea.io/gitea/models" | ||||
"code.gitea.io/gitea/modules/context" | "code.gitea.io/gitea/modules/context" | ||||
"code.gitea.io/gitea/modules/log" | "code.gitea.io/gitea/modules/log" | ||||
@@ -710,36 +711,42 @@ func downloadFromCloudBrainTwo(path string, task *models.AiModelManage, ctx *con | |||||
} | } | ||||
func QueryTrainJobVersionList(ctx *context.Context) { | func QueryTrainJobVersionList(ctx *context.Context) { | ||||
VersionListTasks, err := QueryTrainJobVersionListApi(ctx) | |||||
if err != nil { | |||||
ctx.JSON(200, nil) | |||||
} else { | |||||
ctx.JSON(200, VersionListTasks) | |||||
} | |||||
} | |||||
func QueryTrainJobVersionListApi(ctx *context.Context) ([]*models.Cloudbrain, error) { | |||||
log.Info("query train job version list. start.") | log.Info("query train job version list. start.") | ||||
JobID := ctx.Query("jobId") | JobID := ctx.Query("jobId") | ||||
if JobID == "" { | if JobID == "" { | ||||
JobID = ctx.Query("JobId") | JobID = ctx.Query("JobId") | ||||
} | } | ||||
VersionListTasks, count, err := models.QueryModelTrainJobVersionList(JobID) | VersionListTasks, count, err := models.QueryModelTrainJobVersionList(JobID) | ||||
log.Info("query return count=" + fmt.Sprint(count)) | log.Info("query return count=" + fmt.Sprint(count)) | ||||
return VersionListTasks, err | |||||
} | |||||
func QueryTrainJobList(ctx *context.Context) { | |||||
VersionListTasks, err := QueryTrainJobListApi(ctx) | |||||
if err != nil { | if err != nil { | ||||
ctx.ServerError("QueryTrainJobList:", err) | |||||
ctx.JSON(200, nil) | |||||
} else { | } else { | ||||
ctx.JSON(200, VersionListTasks) | ctx.JSON(200, VersionListTasks) | ||||
} | } | ||||
} | } | ||||
func QueryTrainJobList(ctx *context.Context) { | |||||
log.Info("query train job list. start.") | |||||
func QueryTrainJobListApi(ctx *context.Context) ([]*models.Cloudbrain, error) { | |||||
repoId := ctx.QueryInt64("repoId") | repoId := ctx.QueryInt64("repoId") | ||||
VersionListTasks, count, err := models.QueryModelTrainJobList(repoId) | VersionListTasks, count, err := models.QueryModelTrainJobList(repoId) | ||||
log.Info("query return count=" + fmt.Sprint(count)) | log.Info("query return count=" + fmt.Sprint(count)) | ||||
if err != nil { | |||||
ctx.ServerError("QueryTrainJobList:", err) | |||||
} else { | |||||
ctx.JSON(200, VersionListTasks) | |||||
} | |||||
return VersionListTasks, err | |||||
} | } | ||||
func QueryTrainModelFileById(ctx *context.Context) ([]storage.FileInfo, error) { | func QueryTrainModelFileById(ctx *context.Context) ([]storage.FileInfo, error) { | ||||
@@ -1641,6 +1641,21 @@ func CloudBrainDownloadModel(ctx *context.Context) { | |||||
ctx.Resp.Header().Set("Cache-Control", "max-age=0") | ctx.Resp.Header().Set("Cache-Control", "max-age=0") | ||||
http.Redirect(ctx.Resp, ctx.Req.Request, url, http.StatusMovedPermanently) | http.Redirect(ctx.Resp, ctx.Req.Request, url, http.StatusMovedPermanently) | ||||
} | } | ||||
func CloudBrainDownloadMultiModel(ctx *context.Context) { | |||||
parentDir := ctx.Query("parentDir") | |||||
jobName := ctx.Query("jobName") | |||||
filePath := "jobs/" + jobName + "/model/" + parentDir | |||||
allFile, err := storage.GetAllObjectByBucketAndPrefixMinio(setting.Attachment.Minio.Bucket, filePath) | |||||
if err == nil { | |||||
returnFileName := jobName + ".zip" | |||||
MinioDownloadManyFile(filePath, ctx, returnFileName, allFile) | |||||
} else { | |||||
log.Info("error,msg=" + err.Error()) | |||||
ctx.ServerError("no file to download.", err) | |||||
} | |||||
} | |||||
func CloudBrainDownloadInferenceResult(ctx *context.Context) { | func CloudBrainDownloadInferenceResult(ctx *context.Context) { | ||||
parentDir := ctx.Query("parentDir") | parentDir := ctx.Query("parentDir") | ||||
fileName := ctx.Query("fileName") | fileName := ctx.Query("fileName") | ||||
@@ -2657,6 +2657,44 @@ func InferenceJobShow(ctx *context.Context) { | |||||
ctx.HTML(http.StatusOK, tplModelArtsInferenceJobShow) | ctx.HTML(http.StatusOK, tplModelArtsInferenceJobShow) | ||||
} | } | ||||
func MultiModelDownload(ctx *context.Context) { | |||||
var ( | |||||
err error | |||||
) | |||||
jobID := ctx.Params(":jobid") | |||||
versionName := ctx.Query("version_name") | |||||
parentDir := ctx.Query("parent_dir") | |||||
task, err := models.GetCloudbrainByJobIDAndVersionName(jobID, versionName) | |||||
if err != nil { | |||||
log.Error("GetCloudbrainByJobIDAndVersionName(%s) failed:%v", task.JobName, err.Error()) | |||||
return | |||||
} | |||||
if task.ComputeResource == models.NPUResource { | |||||
path := strings.TrimPrefix(path.Join(setting.TrainJobModelPath, task.JobName, setting.OutPutPath, versionName, parentDir), "/") | |||||
allFile, err := storage.GetAllObjectByBucketAndPrefix(setting.Bucket, path) | |||||
if err == nil { | |||||
returnFileName := task.DisplayJobName + ".zip" | |||||
ObsDownloadManyFile(path, ctx, returnFileName, allFile) | |||||
} else { | |||||
log.Info("error,msg=" + err.Error()) | |||||
ctx.ServerError("no file to download.", err) | |||||
} | |||||
} else if task.ComputeResource == models.GPUResource { | |||||
filePath := setting.CBCodePathPrefix + task.JobName + cloudbrain.ModelMountPath + "/" + parentDir | |||||
allFile, err := storage.GetAllObjectByBucketAndPrefixMinio(setting.Attachment.Minio.Bucket, filePath) | |||||
if err == nil { | |||||
returnFileName := task.DisplayJobName + ".zip" | |||||
MinioDownloadManyFile(filePath, ctx, returnFileName, allFile) | |||||
} else { | |||||
log.Info("error,msg=" + err.Error()) | |||||
ctx.ServerError("no file to download.", err) | |||||
} | |||||
} | |||||
} | |||||
func ModelDownload(ctx *context.Context) { | func ModelDownload(ctx *context.Context) { | ||||
var ( | var ( | ||||
err error | err error | ||||
@@ -1186,6 +1186,7 @@ func RegisterRoutes(m *macaron.Macaron) { | |||||
m.Get("/rate", reqRepoCloudBrainReader, repo.GetRate) | m.Get("/rate", reqRepoCloudBrainReader, repo.GetRate) | ||||
m.Get("/models", reqRepoCloudBrainReader, repo.CloudBrainShowModels) | m.Get("/models", reqRepoCloudBrainReader, repo.CloudBrainShowModels) | ||||
m.Get("/download_model", cloudbrain.AdminOrJobCreaterRight, repo.CloudBrainDownloadModel) | m.Get("/download_model", cloudbrain.AdminOrJobCreaterRight, repo.CloudBrainDownloadModel) | ||||
m.Get("/download_multi_model", cloudbrain.AdminOrJobCreaterRight, repo.CloudBrainDownloadMultiModel) | |||||
}) | }) | ||||
m.Get("/create", reqWechatBind, reqRepoCloudBrainWriter, context.PointAccount(), repo.CloudBrainNew) | m.Get("/create", reqWechatBind, reqRepoCloudBrainWriter, context.PointAccount(), repo.CloudBrainNew) | ||||
m.Post("/create", reqWechatBind, reqRepoCloudBrainWriter, bindIgnErr(auth.CreateCloudBrainForm{}), repo.CloudBrainCreate) | m.Post("/create", reqWechatBind, reqRepoCloudBrainWriter, bindIgnErr(auth.CreateCloudBrainForm{}), repo.CloudBrainCreate) | ||||
@@ -1209,6 +1210,7 @@ func RegisterRoutes(m *macaron.Macaron) { | |||||
m.Post("/del", cloudbrain.AdminOrOwnerOrJobCreaterRightForTrain, repo.CloudBrainTrainJobDel) | m.Post("/del", cloudbrain.AdminOrOwnerOrJobCreaterRightForTrain, repo.CloudBrainTrainJobDel) | ||||
//m.Get("/models", reqRepoCloudBrainReader, repo.CloudBrainShowModels) | //m.Get("/models", reqRepoCloudBrainReader, repo.CloudBrainShowModels) | ||||
m.Get("/download_model", cloudbrain.AdminOrOwnerOrJobCreaterRightForTrain, repo.CloudBrainDownloadModel) | m.Get("/download_model", cloudbrain.AdminOrOwnerOrJobCreaterRightForTrain, repo.CloudBrainDownloadModel) | ||||
m.Get("/download_multi_model", cloudbrain.AdminOrJobCreaterRight, repo.CloudBrainDownloadMultiModel) | |||||
//m.Get("/get_log", cloudbrain.AdminOrJobCreaterRightForTrain, repo.GetLogFromModelDir) | //m.Get("/get_log", cloudbrain.AdminOrJobCreaterRightForTrain, repo.GetLogFromModelDir) | ||||
//m.Post("/create_version", reqWechatBind, cloudbrain.AdminOrJobCreaterRightForTrain, bindIgnErr(auth.CreateModelArtsTrainJobForm{}), repo.TrainJobCreateVersion) | //m.Post("/create_version", reqWechatBind, cloudbrain.AdminOrJobCreaterRightForTrain, bindIgnErr(auth.CreateModelArtsTrainJobForm{}), repo.TrainJobCreateVersion) | ||||
m.Get("/create_version", reqWechatBind, cloudbrain.AdminOrJobCreaterRightForTrain, repo.CloudBrainTrainJobVersionNew) | m.Get("/create_version", reqWechatBind, cloudbrain.AdminOrJobCreaterRightForTrain, repo.CloudBrainTrainJobVersionNew) | ||||
@@ -1221,7 +1223,7 @@ func RegisterRoutes(m *macaron.Macaron) { | |||||
m.Group("/:jobid", func() { | m.Group("/:jobid", func() { | ||||
m.Get("", reqRepoCloudBrainReader, repo.InferenceCloudBrainJobShow) | m.Get("", reqRepoCloudBrainReader, repo.InferenceCloudBrainJobShow) | ||||
m.Get("/result_download", cloudbrain.AdminOrJobCreaterRightForTrain, repo.CloudBrainDownloadInferenceResult) | m.Get("/result_download", cloudbrain.AdminOrJobCreaterRightForTrain, repo.CloudBrainDownloadInferenceResult) | ||||
m.Get("/download_multi_model", cloudbrain.AdminOrJobCreaterRight, repo.CloudBrainDownloadMultiModel) | |||||
m.Get("/downloadall", repo.DownloadInferenceResultFile) | m.Get("/downloadall", repo.DownloadInferenceResultFile) | ||||
}) | }) | ||||
m.Get("/create", reqWechatBind, reqRepoCloudBrainWriter, context.PointAccount(), repo.InferenceCloudBrainJobNew) | m.Get("/create", reqWechatBind, reqRepoCloudBrainWriter, context.PointAccount(), repo.InferenceCloudBrainJobNew) | ||||