| @@ -278,84 +278,69 @@ func GetAllCloudbrainsTrend(ctx *context.Context) { | |||
| } | |||
| func GetAllCloudbrainsTrendDetail(ctx *context.Context) { | |||
| // brainRecordBeginTime, err := getBrainRecordBeginTime() | |||
| // if err != nil { | |||
| // log.Error("Can not get brain record begin time", err) | |||
| // ctx.Error(http.StatusBadRequest, ctx.Tr("repo.brain_record_begintime_get_err")) | |||
| // return | |||
| // } | |||
| // queryType := ctx.QueryTrim("type") | |||
| now := time.Now() | |||
| var beginTime time.Time | |||
| var endTime time.Time | |||
| var endTimeTemp time.Time | |||
| // dateCloudbrainNum := make([]DateCloudbrainNum, 0) | |||
| recordBeginTime, err := getBrainRecordBeginTime() | |||
| if err != nil { | |||
| log.Error("Can not get record begin time", err) | |||
| ctx.Error(http.StatusBadRequest, ctx.Tr("repo.record_begintime_get_err")) | |||
| return | |||
| } | |||
| beginTime, endTime, err := getTimePeroid(ctx, recordBeginTime) | |||
| beginTime = now.AddDate(0, 0, -30) // | |||
| // beginTime = brainRecordBeginTime | |||
| beginTime = time.Date(beginTime.Year(), beginTime.Month(), beginTime.Day(), 0, 0, 0, 0, now.Location()) | |||
| endTime = now | |||
| endTimeTemp = endTime.AddDate(0, 0, -1) | |||
| dayCloudbrainInfo, err := getDayCloudbrainInfo(beginTime, endTimeTemp, endTime) | |||
| if err != nil { | |||
| log.Error("Parameter is wrong", err) | |||
| ctx.Error(http.StatusBadRequest, ctx.Tr("repo.parameter_is_wrong")) | |||
| log.Error("Can not query getDayCloudbrainInfo.", err) | |||
| ctx.Error(http.StatusBadRequest, ctx.Tr("getDayCloudbrainInfo_get_error")) | |||
| return | |||
| } | |||
| cloudbrains, err := models.GetAllCloudBrain() | |||
| if err != nil { | |||
| log.Error("Getcloudbrains failed:%v", err) | |||
| return | |||
| page := ctx.QueryInt("page") | |||
| if page <= 0 { | |||
| page = 1 | |||
| } | |||
| cloudOneJobTypeRes := make(map[string]int) | |||
| cloudTwoJobTypeRes := make(map[string]int) | |||
| intelligentNetJobTypeRes := make(map[string]int) | |||
| cloudBrainPeriodNum := make(map[int]int) | |||
| for _, cloudbrain := range cloudbrains { | |||
| if int64(cloudbrain.Cloudbrain.CreatedUnix) >= beginTime.Unix() && int64(cloudbrain.Cloudbrain.CreatedUnix) < endTime.Unix() { | |||
| if cloudbrain.Cloudbrain.Type == models.TypeCloudBrainOne { | |||
| if _, ok := cloudOneJobTypeRes[cloudbrain.JobType]; !ok { | |||
| cloudOneJobTypeRes[cloudbrain.JobType] = 1 | |||
| } else { | |||
| cloudOneJobTypeRes[cloudbrain.JobType] += 1 | |||
| } | |||
| } | |||
| if cloudbrain.Cloudbrain.Type == models.TypeCloudBrainTwo { | |||
| if _, ok := cloudTwoJobTypeRes[cloudbrain.JobType]; !ok { | |||
| cloudTwoJobTypeRes[cloudbrain.JobType] = 1 | |||
| } else { | |||
| cloudTwoJobTypeRes[cloudbrain.JobType] += 1 | |||
| } | |||
| } | |||
| pagesize := ctx.QueryInt("pagesize") | |||
| if pagesize <= 0 { | |||
| pagesize = 5 | |||
| } | |||
| // pager := context.NewPagination(len(dateCloudbrainNum), pagesize, page, 5) | |||
| if _, ok := cloudBrainPeriodNum[cloudbrain.Cloudbrain.Type]; !ok { | |||
| cloudBrainPeriodNum[cloudbrain.Cloudbrain.Type] = 1 | |||
| } else { | |||
| cloudBrainPeriodNum[cloudbrain.Cloudbrain.Type] += 1 | |||
| } | |||
| pageDateCloudbrainNum := getPageDateCloudbrainNum(dayCloudbrainInfo, page, pagesize) | |||
| } | |||
| //load attachment creator | |||
| // for _, attachment := range pageAttachments { | |||
| // uploader, _ := models.GetUserByID(attachment.UploaderID) | |||
| // attachment.Uploader = uploader | |||
| // } | |||
| cloudbrainsPeriodData := TimeCloudbrainsNum{ | |||
| TimeCloudbrainNum: pageDateCloudbrainNum, | |||
| } | |||
| jobTypeList := []string{"DEBUG", "BENCHMARK", "INFERENCE", "TRAIN", "SNN4IMAGENET", "BRAINSCORE"} | |||
| for _, v := range jobTypeList { | |||
| if _, ok := cloudOneJobTypeRes[v]; !ok { | |||
| cloudOneJobTypeRes[v] = 0 | |||
| } | |||
| if _, ok := cloudTwoJobTypeRes[v]; !ok { | |||
| cloudTwoJobTypeRes[v] = 0 | |||
| } | |||
| if _, ok := intelligentNetJobTypeRes[v]; !ok { | |||
| intelligentNetJobTypeRes[v] = 0 | |||
| } | |||
| ctx.JSON(http.StatusOK, cloudbrainsPeriodData) | |||
| } | |||
| func getPageDateCloudbrainNum(dateCloudbrainNums []DateCloudbrainNum, page int, pagesize int) []DateCloudbrainNum { | |||
| begin := (page - 1) * pagesize | |||
| end := (page) * pagesize | |||
| if begin > len(dateCloudbrainNums)-1 { | |||
| return nil | |||
| } | |||
| cloudBrainTypeList := []int{0, 1, 2} | |||
| for _, v := range cloudBrainTypeList { | |||
| if _, ok := cloudBrainPeriodNum[v]; !ok { | |||
| cloudBrainPeriodNum[v] = 0 | |||
| } | |||
| if end > len(dateCloudbrainNums)-1 { | |||
| return dateCloudbrainNums[begin:] | |||
| } else { | |||
| return dateCloudbrainNums[begin:end] | |||
| } | |||
| // totalTasksCount := cloudBrainPeriodNum[0] + cloudBrainPeriodNum[1] + cloudBrainPeriodNum[2] | |||
| cloudOneJobTypeRes["EVALUATION"] = cloudOneJobTypeRes["BENCHMARK"] + cloudOneJobTypeRes["SNN4IMAGENET"] + cloudOneJobTypeRes["BRAINSCORE"] | |||
| cloudTwoJobTypeRes["EVALUATION"] = cloudTwoJobTypeRes["BENCHMARK"] + cloudTwoJobTypeRes["SNN4IMAGENET"] + cloudTwoJobTypeRes["BRAINSCORE"] | |||
| intelligentNetJobTypeRes["EVALUATION"] = intelligentNetJobTypeRes["BENCHMARK"] + intelligentNetJobTypeRes["SNN4IMAGENET"] + intelligentNetJobTypeRes["BRAINSCORE"] | |||
| ctx.JSON(http.StatusOK, map[string]interface{}{ | |||
| "cloudOneJobTypeRes": cloudOneJobTypeRes, | |||
| "cloudTwoJobTypeRes": cloudTwoJobTypeRes, | |||
| "intelligentNetJobTypeRes": intelligentNetJobTypeRes, | |||
| "cloudBrainPeriodNum": cloudBrainPeriodNum, | |||
| }) | |||
| } | |||
| func GetAllCloudbrainsPeriodDistribution(ctx *context.Context) { | |||
| @@ -722,47 +707,6 @@ func GetCloudbrainsRunHoursData(ctx *context.Context) { | |||
| } | |||
| func getCloudbrainCount(beginTime time.Time, endTime time.Time) (map[string]int, map[string]int, map[string]int, map[int]int, map[string]int, error) { | |||
| // debugOneCount, err := models.GetDebugOnePeriodCount(beginTime, endTime) | |||
| // if err != nil { | |||
| // log.Error("Can not query debugOneCount.", err) | |||
| // return 0, 0, 0, 0, 0, 0, 0, 0, 0, err | |||
| // } | |||
| // benchmarkOneCount, err := models.GetBenchmarkOnePeriodCount(beginTime, endTime) | |||
| // if err != nil { | |||
| // log.Error("Can not query benchmarkCount.", err) | |||
| // return 0, 0, 0, 0, 0, 0, 0, 0, 0, err | |||
| // } | |||
| // trainOneCount, err := models.GetTrainOnePeriodCount(beginTime, endTime) | |||
| // if err != nil { | |||
| // log.Error("Can not query trainOneCount.", err) | |||
| // return 0, 0, 0, 0, 0, 0, 0, 0, 0, err | |||
| // } | |||
| // debugTwoCount, err := models.GetDebugTwoPeriodCount(beginTime, endTime) | |||
| // if err != nil { | |||
| // log.Error("Can not query debugTwoCount.", err) | |||
| // return 0, 0, 0, 0, 0, 0, 0, 0, 0, err | |||
| // } | |||
| // trainTwoCount, err := models.GetTrainTwoPeriodCount(beginTime, endTime) | |||
| // if err != nil { | |||
| // log.Error("Can not query DebugOneTotal count.", err) | |||
| // return 0, 0, 0, 0, 0, 0, 0, 0, 0, err | |||
| // } | |||
| // inferenceTwoCount, err := models.GetInferenceTwoPeriodCount(beginTime, endTime) | |||
| // if err != nil { | |||
| // log.Error("Can not query inferenceTwoCount.", err) | |||
| // return 0, 0, 0, 0, 0, 0, 0, 0, 0, err | |||
| // } | |||
| // cloudbrainOneCount, err := models.GetCloudBrainOnePeriodCount(beginTime, endTime) | |||
| // if err != nil { | |||
| // log.Error("Can not query cloudbrainOneCount.", err) | |||
| // return 0, 0, 0, 0, 0, 0, 0, 0, 0, err | |||
| // } | |||
| // cloudbrainTwoCount, err := models.GetCloudBrainTwoPeriodCount(beginTime, endTime) | |||
| // if err != nil { | |||
| // log.Error("Can not query cloudbrainOneCount.", err) | |||
| // return 0, 0, 0, 0, 0, 0, 0, 0, 0, err | |||
| // } | |||
| // cloudbrainCount := cloudbrainOneCount + cloudbrainTwoCount | |||
| cloudbrains, err := models.GetAllCloudBrain() | |||
| if err != nil { | |||
| @@ -898,6 +842,30 @@ func getYearCloudbrainNum(beginTime time.Time, endTimeTemp time.Time, endTime ti | |||
| } | |||
| return yearCloudbrainNum, nil | |||
| } | |||
| func getDayCloudbrainInfo(beginTime time.Time, endTimeTemp time.Time, endTime time.Time) ([]DateCloudbrainNum, error) { | |||
| dayCloudbrainNum := make([]DateCloudbrainNum, 0) | |||
| for beginTime.Before(endTimeTemp) { | |||
| cloudOneJobTypeRes, cloudTwoJobTypeRes, intelligentNetJobTypeRes, cloudBrainPeriodNum, cloudBrainComputeResource, err := getCloudbrainCount(endTimeTemp, endTime) | |||
| if err != nil { | |||
| log.Error("Can not query getCloudbrainCount.", err) | |||
| return nil, err | |||
| } | |||
| dayCloudbrainNum = append(dayCloudbrainNum, DateCloudbrainNum{ | |||
| Date: endTime.Format("2006/01/02"), | |||
| CloudOneJobTypeRes: cloudOneJobTypeRes, | |||
| CloudTwoJobTypeRes: cloudTwoJobTypeRes, | |||
| IntelligentNetJobTypeRes: intelligentNetJobTypeRes, | |||
| CloudBrainPeriodNum: cloudBrainPeriodNum, | |||
| CloudBrainComputeResource: cloudBrainComputeResource, | |||
| }) | |||
| if beginTime.Before(endTimeTemp) { | |||
| endTime = endTimeTemp | |||
| endTimeTemp = endTimeTemp.AddDate(0, 0, -1) | |||
| } | |||
| } | |||
| return dayCloudbrainNum, nil | |||
| } | |||
| func getBrainRecordBeginTime() (time.Time, error) { | |||
| return time.ParseInLocation(DATE_FORMAT, setting.BrainRecordBeginTime, time.Local) | |||
| } | |||