@@ -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:"-"` | ||||
} | } | ||||
@@ -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, | ||||
}) | }) | ||||
@@ -2172,25 +2172,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 | ||||
@@ -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.Cloudbrain) | |||||
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.CloudbrainInfo, 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) { | ||||