diff --git a/models/cloudbrain_static.go b/models/cloudbrain_static.go index 4d0e7cfaa..9e2e2e0fc 100644 --- a/models/cloudbrain_static.go +++ b/models/cloudbrain_static.go @@ -36,7 +36,41 @@ type CloudbrainStatistic struct { UpdatedUnix timeutil.TimeStamp `xorm:"INDEX updated" json:"-"` } -func GenerateDebugOneCount(beginTime time.Time, endTime time.Time) (int64, error) { +func GetJobWaitingCount(beginTime time.Time, endTime time.Time) (int64, error) { + countSql := "SELECT count(*) FROM " + + "public.cloudbrain where created_unix >=" + strconv.FormatInt(beginTime.Unix(), 10) + + " and created_unix<" + strconv.FormatInt(endTime.Unix(), 10) + + " and status ='" + string(JobWaiting) + "'" + + return x.SQL(countSql).Count() +} +func GetJobRunningCount(beginTime time.Time, endTime time.Time) (int64, error) { + countSql := "SELECT count(*) FROM " + + "public.cloudbrain where created_unix >=" + strconv.FormatInt(beginTime.Unix(), 10) + + " and created_unix<" + strconv.FormatInt(endTime.Unix(), 10) + + " and status ='" + string(JobRunning) + "'" + + return x.SQL(countSql).Count() +} +func GetJobSucceededCount(beginTime time.Time, endTime time.Time) (int64, error) { + countSql := "SELECT count(*) FROM " + + "public.cloudbrain where created_unix >=" + strconv.FormatInt(beginTime.Unix(), 10) + + " and created_unix<" + strconv.FormatInt(endTime.Unix(), 10) + + " and status ='" + string(JobSucceeded) + "'" + + return x.SQL(countSql).Count() +} + +// func GetWaitingCount(beginTime time.Time, endTime time.Time) (int64, error) { +// countSql := "SELECT distinct count(*) FROM " + +// "public.cloudbrain where created_unix >=" + strconv.FormatInt(beginTime.Unix(), 10) + +// " and created_unix<" + strconv.FormatInt(endTime.Unix(), 10) + +// " and status ='" + string(JobWaiting) + "'" + +// return x.SQL(countSql).Count() +// } + +func GetDebugOneCount(beginTime time.Time, endTime time.Time) (int64, error) { countSql := "SELECT count(*) FROM " + "public.cloudbrain where created_unix >=" + strconv.FormatInt(beginTime.Unix(), 10) + " and created_unix<" + strconv.FormatInt(endTime.Unix(), 10) + @@ -54,7 +88,7 @@ func GetDebugOneDuration(beginTime time.Time, endTime time.Time) (int64, error) return total, nil } -func GenerateTrainOneCount(beginTime time.Time, endTime time.Time) (int64, error) { +func GetTrainOneCount(beginTime time.Time, endTime time.Time) (int64, error) { countSql := "SELECT count(*) FROM " + "public.cloudbrain where created_unix >=" + strconv.FormatInt(beginTime.Unix(), 10) + " and created_unix<" + strconv.FormatInt(endTime.Unix(), 10) + @@ -72,7 +106,7 @@ func GetTrainOneDuration(beginTime time.Time, endTime time.Time) (int64, error) return total, nil } -func GenerateBenchmarkOneCount(beginTime time.Time, endTime time.Time) (int64, error) { +func GetBenchmarkOneCount(beginTime time.Time, endTime time.Time) (int64, error) { countSql := "SELECT count(*) FROM " + "public.cloudbrain where created_unix >=" + strconv.FormatInt(beginTime.Unix(), 10) + " and created_unix<" + strconv.FormatInt(endTime.Unix(), 10) + @@ -88,7 +122,7 @@ func GetBenchmarkOneDuration(beginTime time.Time, endTime time.Time) (int64, err return total, nil } -func GenerateDebugTwoCount(beginTime time.Time, endTime time.Time) (int64, error) { +func GetDebugTwoCount(beginTime time.Time, endTime time.Time) (int64, error) { countSql := "SELECT count(*) FROM " + "public.cloudbrain where created_unix >=" + strconv.FormatInt(beginTime.Unix(), 10) + " and created_unix<" + strconv.FormatInt(endTime.Unix(), 10) + @@ -103,7 +137,7 @@ func GetDebugTwoDuration(beginTime time.Time, endTime time.Time) (int64, error) } return total, nil } -func GenerateTrainTwoCount(beginTime time.Time, endTime time.Time) (int64, error) { +func GetTrainTwoCount(beginTime time.Time, endTime time.Time) (int64, error) { countSql := "SELECT count(*) FROM " + "public.cloudbrain where created_unix >=" + strconv.FormatInt(beginTime.Unix(), 10) + " and created_unix<" + strconv.FormatInt(endTime.Unix(), 10) + @@ -118,7 +152,7 @@ func GetTrainTwoDuration(beginTime time.Time, endTime time.Time) (int64, error) } return total, nil } -func GenerateInferenceTwoCount(beginTime time.Time, endTime time.Time) (int64, error) { +func GetInferenceTwoCount(beginTime time.Time, endTime time.Time) (int64, error) { countSql := "SELECT count(*) FROM " + "public.cloudbrain where created_unix >=" + strconv.FormatInt(beginTime.Unix(), 10) + " and created_unix<" + strconv.FormatInt(endTime.Unix(), 10) + diff --git a/routers/api/v1/api.go b/routers/api/v1/api.go index 27b624968..b377b7af9 100755 --- a/routers/api/v1/api.go +++ b/routers/api/v1/api.go @@ -562,8 +562,9 @@ func RegisterRoutes(m *macaron.Macaron) { // m.Get("/downloadStatistics", repo.ServeCloudbrainPeriodStatisticsFile) m.Get("/downloadAll", repo.DownloadCloudBrainBoard) m.Group("/cloudbrain", func() { + m.Get("/overview", repo.GetAllCloudbrainsOverview) m.Get("/trend", repo.GetAllCloudbrainsTrend) - m.Get("/statistics", repo.GetAllCloudbrainsPeriodStatistics) + m.Get("/distribution", repo.GetAllCloudbrainsPeriodDistribution) }) }, operationReq) diff --git a/routers/api/v1/repo/cloudbrain_dashboard.go b/routers/api/v1/repo/cloudbrain_dashboard.go index f061bdcad..c79d7c811 100644 --- a/routers/api/v1/repo/cloudbrain_dashboard.go +++ b/routers/api/v1/repo/cloudbrain_dashboard.go @@ -21,6 +21,9 @@ type CloudbrainsPeriodData struct { DebugTwoCount int64 `json:"debugTwoCount"` TrainTwoCount int64 `json:"trainTwoCount"` InferenceTwoCount int64 `json:"inferenceTwoCount"` + JobWaitingCount int64 `json:"jobWaitingCount"` + JobRunningCount int64 `json:"jobRunningCount"` + JobSucceededCount int64 `json:"jobRunningCount"` } type TimeCloudbrainsNum struct { TimeCloudbrainNum []DateCloudbrainNum `json:"dateCloudbrainNum"` @@ -38,6 +41,33 @@ type DateCloudbrainNum struct { CloudbrainCount int64 `json:"cloudbrainCount"` } +func GetAllCloudbrainsOverview(ctx *context.Context) { + now := time.Now() + //today overview + beginTime := now.AddDate(0, 0, 0) + beginTime = time.Date(beginTime.Year(), beginTime.Month(), beginTime.Day(), 0, 0, 0, 0, now.Location()) + endTime := now + jobWaitingCount, err := models.GetJobWaitingCount(beginTime, endTime) + if err != nil { + log.Error("Can not query jobWaitingCount.", err) + } + jobRunningCount, err := models.GetJobRunningCount(beginTime, endTime) + if err != nil { + log.Error("Can not query jobRunningCount.", err) + } + jobSucceededCount, err := models.GetJobSucceededCount(beginTime, endTime) + if err != nil { + log.Error("Can not query jobSucceededCount.", err) + } + cloudbrainsPeriodData := CloudbrainsPeriodData{ + JobWaitingCount: jobWaitingCount, + JobRunningCount: jobRunningCount, + JobSucceededCount: jobSucceededCount, + } + + ctx.JSON(http.StatusOK, cloudbrainsPeriodData) +} + func GetAllCloudbrainsTrend(ctx *context.Context) { brainRecordBeginTime, err := getBrainRecordBeginTime() if err != nil { @@ -194,7 +224,7 @@ func GetAllCloudbrainsTrend(ctx *context.Context) { } -func GetAllCloudbrainsPeriodStatistics(ctx *context.Context) { +func GetAllCloudbrainsPeriodDistribution(ctx *context.Context) { recordBeginTime, err := getBrainRecordBeginTime() if err != nil { log.Error("Can not get record begin time", err) @@ -215,37 +245,37 @@ func GetAllCloudbrainsPeriodStatistics(ctx *context.Context) { if pageSize <= 0 { pageSize = DEFAULT_PAGE_SIZE } - debugOneCount, err := models.GenerateDebugOneCount(beginTime, endTime) + debugOneCount, err := models.GetDebugOneCount(beginTime, endTime) if err != nil { log.Error("Can not query debugOneCount.", err) ctx.Error(http.StatusBadRequest, ctx.Tr("debugOneCount_get_error")) return } - benchmarkOneCount, err := models.GenerateBenchmarkOneCount(beginTime, endTime) + benchmarkOneCount, err := models.GetBenchmarkOneCount(beginTime, endTime) if err != nil { log.Error("Can not query benchmarkCount.", err) ctx.Error(http.StatusBadRequest, ctx.Tr("benchmarkOneCount_get_error")) return } - trainOneCount, err := models.GenerateTrainOneCount(beginTime, endTime) + trainOneCount, err := models.GetTrainOneCount(beginTime, endTime) if err != nil { log.Error("Can not query trainOneCount.", err) ctx.Error(http.StatusBadRequest, ctx.Tr("trainOneCount_get_error")) return } - debugTwoCount, err := models.GenerateDebugTwoCount(beginTime, endTime) + debugTwoCount, err := models.GetDebugTwoCount(beginTime, endTime) if err != nil { log.Error("Can not query debugTwoCount.", err) ctx.Error(http.StatusBadRequest, ctx.Tr("debugTwoCount_get_error")) return } - trainTwoCount, err := models.GenerateTrainTwoCount(beginTime, endTime) + trainTwoCount, err := models.GetTrainTwoCount(beginTime, endTime) if err != nil { log.Error("Can not query DebugOneTotal count.", err) ctx.Error(http.StatusBadRequest, ctx.Tr("total_count_get_error")) return } - inferenceTwoCount, err := models.GenerateInferenceTwoCount(beginTime, endTime) + inferenceTwoCount, err := models.GetInferenceTwoCount(beginTime, endTime) if err != nil { log.Error("Can not query inferenceTwoCount.", err) ctx.Error(http.StatusBadRequest, ctx.Tr("inferenceTwoCount_get_error")) @@ -259,44 +289,37 @@ func GetAllCloudbrainsPeriodStatistics(ctx *context.Context) { TrainTwoCount: trainTwoCount, InferenceTwoCount: inferenceTwoCount, } - now := time.Now() - endTime = now - beginTime = time.Date(endTime.Year(), endTime.Month(), 2, 0, 0, 0, 0, now.Location()) - testtime := now.AddDate(0, -1, 1) - fmt.Printf("beginTime is: %s", beginTime) - fmt.Printf("endTime is: %s", endTime) - fmt.Printf("testtime is:%s", testtime) ctx.JSON(http.StatusOK, cloudbrainsPeriodData) } func getCloudbrainCount(beginTime time.Time, endTime time.Time) (int64, int64, int64, int64, int64, int64, int64, int64, int64, error) { - debugOneCount, err := models.GenerateDebugOneCount(beginTime, endTime) + debugOneCount, err := models.GetDebugOneCount(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.GenerateBenchmarkOneCount(beginTime, endTime) + benchmarkOneCount, err := models.GetBenchmarkOneCount(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.GenerateTrainOneCount(beginTime, endTime) + trainOneCount, err := models.GetTrainOneCount(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.GenerateDebugTwoCount(beginTime, endTime) + debugTwoCount, err := models.GetDebugTwoCount(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.GenerateTrainTwoCount(beginTime, endTime) + trainTwoCount, err := models.GetTrainTwoCount(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.GenerateInferenceTwoCount(beginTime, endTime) + inferenceTwoCount, err := models.GetInferenceTwoCount(beginTime, endTime) if err != nil { log.Error("Can not query inferenceTwoCount.", err) return 0, 0, 0, 0, 0, 0, 0, 0, 0, err @@ -306,6 +329,7 @@ func getCloudbrainCount(beginTime time.Time, endTime time.Time) (int64, int64, i cloudbrainCount := cloudbrainOneCount + cloudbrainTwoCount return debugOneCount, benchmarkOneCount, trainOneCount, debugTwoCount, trainTwoCount, inferenceTwoCount, cloudbrainOneCount, cloudbrainTwoCount, cloudbrainCount, err } + func getHourCloudbrainNum(beginTime time.Time, endTimeTemp time.Time, endTime time.Time) ([]DateCloudbrainNum, error) { dayCloudbrainNum := make([]DateCloudbrainNum, 0) for endTimeTemp.Before(endTime) || endTimeTemp.Equal(endTime) { @@ -334,7 +358,8 @@ func getHourCloudbrainNum(beginTime time.Time, endTimeTemp time.Time, endTime ti func getDayCloudbrainNum(beginTime time.Time, endTimeTemp time.Time, endTime time.Time) ([]DateCloudbrainNum, error) { dayCloudbrainNum := make([]DateCloudbrainNum, 0) for endTimeTemp.Before(endTime) { - debugOneCount, benchmarkOneCount, trainOneCount, debugTwoCount, trainTwoCount, inferenceTwoCount, cloudbrainOneCount, cloudbrainTwoCount, cloudbrainCount, err := getCloudbrainCount(beginTime, endTimeTemp) + debugOneCount, benchmarkOneCount, trainOneCount, debugTwoCount, trainTwoCount, inferenceTwoCount, cloudbrainOneCount, + cloudbrainTwoCount, cloudbrainCount, err := getCloudbrainCount(beginTime, endTimeTemp) if err != nil { log.Error("Can not query getCloudbrainCount.", err) return nil, err @@ -359,7 +384,8 @@ func getDayCloudbrainNum(beginTime time.Time, endTimeTemp time.Time, endTime tim func getYearCloudbrainNum(beginTime time.Time, endTimeTemp time.Time, endTime time.Time) ([]DateCloudbrainNum, error) { yearCloudbrainNum := make([]DateCloudbrainNum, 0) for endTimeTemp.Before(endTime) { - debugOneCount, benchmarkOneCount, trainOneCount, debugTwoCount, trainTwoCount, inferenceTwoCount, cloudbrainOneCount, cloudbrainTwoCount, cloudbrainCount, err := getCloudbrainCount(beginTime, endTimeTemp) + debugOneCount, benchmarkOneCount, trainOneCount, debugTwoCount, trainTwoCount, inferenceTwoCount, cloudbrainOneCount, + cloudbrainTwoCount, cloudbrainCount, err := getCloudbrainCount(beginTime, endTimeTemp) if err != nil { log.Error("Can not query getCloudbrainCount.", err) return nil, err diff --git a/routers/repo/cloudbrain_statistic.go b/routers/repo/cloudbrain_statistic.go index 142b0c14e..f14d6b259 100644 --- a/routers/repo/cloudbrain_statistic.go +++ b/routers/repo/cloudbrain_statistic.go @@ -33,29 +33,29 @@ func CloudbrainStatisticDaily(date string) { if whichHour == 25 { beginTime, endTime = models.GetDayStatTime(date) } - numDubugOne, err := models.GenerateDebugOneCount(beginTime, endTime) + numDubugOne, err := models.GetDebugOneCount(beginTime, endTime) if err != nil { - log.Error("GenerateDebugOneCount failed(%s): %v", numDubugOne, err) + log.Error("GetDebugOneCount failed(%s): %v", numDubugOne, err) } - numBenchmarkOne, err := models.GenerateBenchmarkOneCount(beginTime, endTime) + numBenchmarkOne, err := models.GetBenchmarkOneCount(beginTime, endTime) if err != nil { - log.Error("GenerateBenchmarkOneCount failed(%s): %v", numBenchmarkOne, err) + log.Error("GetBenchmarkOneCount failed(%s): %v", numBenchmarkOne, err) } - numTrainOne, err := models.GenerateTrainOneCount(beginTime, endTime) + numTrainOne, err := models.GetTrainOneCount(beginTime, endTime) if err != nil { - log.Error("GenerateTrainOneCount failed(%s): %v", numTrainOne, err) + log.Error("GetTrainOneCount failed(%s): %v", numTrainOne, err) } - numDebugTwo, err := models.GenerateDebugTwoCount(beginTime, endTime) + numDebugTwo, err := models.GetDebugTwoCount(beginTime, endTime) if err != nil { - log.Error("GenerateDebugTwoCount failed(%s): %v", numDebugTwo, err) + log.Error("GetDebugTwoCount failed(%s): %v", numDebugTwo, err) } - numTrainTwo, err := models.GenerateTrainTwoCount(beginTime, endTime) + numTrainTwo, err := models.GetTrainTwoCount(beginTime, endTime) if err != nil { - log.Error("GenerateTrainTwoCount failed(%s): %v", numTrainTwo, err) + log.Error("GetTrainTwoCount failed(%s): %v", numTrainTwo, err) } - numInferenceTwo, err := models.GenerateInferenceTwoCount(beginTime, endTime) + numInferenceTwo, err := models.GetInferenceTwoCount(beginTime, endTime) if err != nil { - log.Error("GenerateInferenceTwoCount failed(%s): %v", numInferenceTwo, err) + log.Error("GetInferenceTwoCount failed(%s): %v", numInferenceTwo, err) } numCloudOneAll := numDubugOne + numBenchmarkOne + numTrainOne numCloudTwoAll := numDebugTwo + numTrainTwo + numInferenceTwo