Browse Source

update

tags/v1.22.6.1^2
liuzx 4 years ago
parent
commit
29fdbd5d58
4 changed files with 283 additions and 2 deletions
  1. +10
    -0
      models/cloudbrain_static.go
  2. +1
    -0
      routers/api/v1/api.go
  3. +271
    -1
      routers/api/v1/repo/cloudbrain_dashboard.go
  4. +1
    -1
      routers/repo/cloudbrain_statistic.go

+ 10
- 0
models/cloudbrain_static.go View File

@@ -36,6 +36,16 @@ type CloudbrainStatistic struct {
UpdatedUnix timeutil.TimeStamp `xorm:"INDEX updated" json:"-"`
}

type TimeCloudbrainNum struct {
Time time.Time `json:"time"`
DebugOneCount int64 `json:"debugOneCount"`
BenchmarkOneCount int64 `json:"benchmarkOneCount"`
TrainOneCount int64 `json:"trainOneCount"`
DebugTwoCount int64 `json:"debugTwoCount"`
TrainTwoCount int64 `json:"trainTwoCount"`
InferenceTwoCount int64 `json:"inferenceTwoCount"`
}

func GenerateDebugOneCount(beginTime time.Time, endTime time.Time) (int64, error) {
countSql := "SELECT count(*) FROM " +
"public.cloudbrain where created_unix >=" + strconv.FormatInt(beginTime.Unix(), 10) +


+ 1
- 0
routers/api/v1/api.go View File

@@ -559,6 +559,7 @@ func RegisterRoutes(m *macaron.Macaron) {
m.Group("/cloudbrainboard", func() {
m.Get("/downloadtable", repo.ServeCloudbrainPeriodStatisticsFile)
m.Group("/cloudbrain", func() {
m.Get("/trend", repo.GetAllCloudbrainsTrend)
m.Get("", repo.GetAllCloudbrainsPeriodStatistics)
})
}, operationReq)


+ 271
- 1
routers/api/v1/repo/cloudbrain_dashboard.go View File

@@ -1,8 +1,10 @@
package repo

import (
"fmt"
"net/http"
"net/url"
"time"

"code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/context"
@@ -13,10 +15,52 @@ import (
type CloudbrainsPeriodData struct {
DebugOneCount int64 `json:"debugOneCount"`
BenchmarkOneCount int64 `json:"benchmarkOneCount"`
TrainOneCount int64 `json:"trainOneCount"`
DebugTwoCount int64 `json:"debugTwoCount"`
TrainTwoCount int64 `json:"trainTwoCount"`
InferenceTwoCount int64 `json:"inferenceTwoCount"`
}
type TimeCloudbrainsNum struct {
TimeCloudbrainNum []models.TimeCloudbrainNum `json:"imeCloudbrainNum"`
}

func GetAllCloudbrainsTrend(ctx *context.Context) {

recordBeginTime, err := getRecordBeginTime()
if err != nil {
log.Error("Can not get record begin time", err)
ctx.Error(http.StatusBadRequest, ctx.Tr("repo.record_begintime_get_err"))
return
}
timeCloudbrainNum, beginTime, endTime, err := getCloudbrainTrendTime(ctx, recordBeginTime)
if err != nil {
log.Error("Parameter is wrong", err)
ctx.Error(http.StatusBadRequest, ctx.Tr("repo.parameter_is_wrong"))
return
}
page := ctx.QueryInt("page")
if page <= 0 {
page = 1
}
pageSize := ctx.QueryInt("pagesize")
if pageSize <= 0 {
pageSize = DEFAULT_PAGE_SIZE
}

cloudbrainsPeriodData := TimeCloudbrainsNum{
TimeCloudbrainNum: timeCloudbrainNum,
}
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 GetAllCloudbrainsPeriodStatistics(ctx *context.Context) {

@@ -53,6 +97,12 @@ func GetAllCloudbrainsPeriodStatistics(ctx *context.Context) {
ctx.Error(http.StatusBadRequest, ctx.Tr("benchmarkOneCount_get_error"))
return
}
trainOneCount, err := models.GenerateTrainOneCount(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)
if err != nil {
log.Error("Can not query debugTwoCount.", err)
@@ -75,10 +125,18 @@ func GetAllCloudbrainsPeriodStatistics(ctx *context.Context) {
cloudbrainsPeriodData := CloudbrainsPeriodData{
DebugOneCount: debugOneCount,
BenchmarkOneCount: benchmarkOneCount,
TrainOneCount: trainOneCount,
DebugTwoCount: debugTwoCount,
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)

@@ -91,7 +149,7 @@ func ServeCloudbrainPeriodStatisticsFile(ctx *context.Context) {
ctx.Error(http.StatusBadRequest, ctx.Tr("repo.record_begintime_get_err"))
return
}
beginTime, endTime, err := getTimePeroid(ctx, recordBeginTime)
beginTime, endTime, err := getCloudbrainTimePeroid(ctx, recordBeginTime)
if err != nil {
log.Error("Parameter is wrong", err)
ctx.Error(http.StatusBadRequest, ctx.Tr("repo.parameter_is_wrong"))
@@ -155,3 +213,215 @@ func ServeCloudbrainPeriodStatisticsFile(ctx *context.Context) {
f.WriteTo(ctx.Resp)

}

func getCloudbrainTimePeroid(ctx *context.Context, recordBeginTime time.Time) (time.Time, time.Time, error) {
queryType := ctx.QueryTrim("type")
now := time.Now()
recordBeginTimeTemp := recordBeginTime.AddDate(0, 0, 1)

beginTimeStr := ctx.QueryTrim("beginTime")
endTimeStr := ctx.QueryTrim("endTime")
var beginTime time.Time
var endTime time.Time
var err error
if queryType != "" {

if queryType == "all" {
beginTime = recordBeginTimeTemp
endTime = now
} else if queryType == "yesterday" {
endTime = now
beginTime = time.Date(endTime.Year(), endTime.Month(), endTime.Day(), 0, 0, 0, 0, now.Location())

} else if queryType == "current_week" {
beginTime = now.AddDate(0, 0, -int(time.Now().Weekday())+2) //begin from monday
beginTime = time.Date(beginTime.Year(), beginTime.Month(), beginTime.Day(), 0, 0, 0, 0, now.Location())
endTime = now
} else if queryType == "current_month" {
endTime = now
beginTime = time.Date(endTime.Year(), endTime.Month(), 2, 0, 0, 0, 0, now.Location())
} else if queryType == "monthly" {
endTime = now
beginTime = now.AddDate(0, -1, 1)
beginTime = time.Date(beginTime.Year(), beginTime.Month(), beginTime.Day(), 0, 0, 0, 0, now.Location())

} else if queryType == "current_year" {
endTime = now
beginTime = time.Date(endTime.Year(), 1, 2, 0, 0, 0, 0, now.Location())

} else if queryType == "last_month" {

lastMonthTime := now.AddDate(0, -1, 0)
beginTime = time.Date(lastMonthTime.Year(), lastMonthTime.Month(), 2, 0, 0, 0, 0, now.Location())
endTime = time.Date(now.Year(), now.Month(), 2, 0, 0, 0, 0, now.Location())

} else {
return now, now, fmt.Errorf("The value of type parameter is wrong.")

}

} else {
if beginTimeStr == "" || endTimeStr == "" {
//如果查询类型和开始时间结束时间都未设置,按queryType=all处理
beginTime = recordBeginTimeTemp
endTime = now

} else {

beginTime, err = time.ParseInLocation("2006-01-02", beginTimeStr, time.Local)
if err != nil {
return now, now, err
}

endTime, err = time.ParseInLocation("2006-01-02", endTimeStr, time.Local)
if err != nil {
return now, now, err
}

beginTime = beginTime.AddDate(0, 0, 1)
endTime = endTime.AddDate(0, 0, 1)
}

}

if beginTime.Before(recordBeginTimeTemp) {
beginTime = recordBeginTimeTemp
}

return beginTime, endTime, nil

}

func getCloudbrainTrendTime(ctx *context.Context, recordBeginTime time.Time) ([]models.TimeCloudbrainNum, time.Time, time.Time, error) {
queryType := ctx.QueryTrim("type")
now := time.Now()
recordBeginTimeTemp := recordBeginTime.AddDate(0, 0, 1)

beginTimeStr := ctx.QueryTrim("beginTime")
endTimeStr := ctx.QueryTrim("endTime")
var beginTime time.Time
var endTime time.Time
var err error
timeCloudbrainNum := make([]models.TimeCloudbrainNum, 0)
if queryType != "" {

if queryType == "all" {
beginTime = recordBeginTimeTemp
endTime = now
} else if queryType == "yesterday" {
endTime = now
beginTime = time.Date(endTime.Year(), endTime.Month(), endTime.Day(), 0, 0, 0, 0, now.Location())

} else if queryType == "current_week" {
beginTime = now.AddDate(0, 0, -int(time.Now().Weekday())+2) //begin from monday
beginTime = time.Date(beginTime.Year(), beginTime.Month(), beginTime.Day(), 0, 0, 0, 0, now.Location())
endTime = now
} else if queryType == "current_month" {
endTime = now
beginTime = time.Date(endTime.Year(), endTime.Month(), 1, 0, 0, 0, 0, now.Location())
endTime1 := beginTime.AddDate(0, 0, 1)
for endTime1.Before(endTime) {
debugOneCount, benchmarkOneCount, trainOneCount, debugTwoCount, trainTwoCount, inferenceTwoCount, err := getCloudbrainCount(beginTime, endTime1)
if err != nil {
log.Error("Can not query debugOneCount.", err)
ctx.Error(http.StatusBadRequest, ctx.Tr("debugOneCount_get_error"))
}
timeCloudbrainNum = append(timeCloudbrainNum, models.TimeCloudbrainNum{
Time: beginTime,
DebugOneCount: debugOneCount,
BenchmarkOneCount: benchmarkOneCount,
TrainOneCount: trainOneCount,
DebugTwoCount: debugTwoCount,
TrainTwoCount: trainTwoCount,
InferenceTwoCount: inferenceTwoCount,
})
beginTime = endTime1
endTime1 = beginTime.AddDate(0, 0, 1)
}
return timeCloudbrainNum, beginTime, endTime, nil

} else if queryType == "monthly" {
endTime = now
beginTime = now.AddDate(0, -1, 1)
beginTime = time.Date(beginTime.Year(), beginTime.Month(), beginTime.Day(), 0, 0, 0, 0, now.Location())

} else if queryType == "current_year" {
endTime = now
beginTime = time.Date(endTime.Year(), 1, 2, 0, 0, 0, 0, now.Location())

} else if queryType == "last_month" {

lastMonthTime := now.AddDate(0, -1, 0)
beginTime = time.Date(lastMonthTime.Year(), lastMonthTime.Month(), 2, 0, 0, 0, 0, now.Location())
endTime = time.Date(now.Year(), now.Month(), 2, 0, 0, 0, 0, now.Location())

} else {
return timeCloudbrainNum, now, now, fmt.Errorf("The value of type parameter is wrong.")

}

} else {
if beginTimeStr == "" || endTimeStr == "" {
//如果查询类型和开始时间结束时间都未设置,按queryType=all处理
beginTime = recordBeginTimeTemp
endTime = now

} else {

beginTime, err = time.ParseInLocation("2006-01-02", beginTimeStr, time.Local)
if err != nil {
return timeCloudbrainNum, now, now, err
}

endTime, err = time.ParseInLocation("2006-01-02", endTimeStr, time.Local)
if err != nil {
return timeCloudbrainNum, now, now, err
}

beginTime = beginTime.AddDate(0, 0, 1)
endTime = endTime.AddDate(0, 0, 1)
}

}

if beginTime.Before(recordBeginTimeTemp) {
beginTime = recordBeginTimeTemp
}

return timeCloudbrainNum, beginTime, endTime, nil

}

func getCloudbrainCount(beginTime time.Time, endTime time.Time) (int64, int64, int64, int64, int64, int64, error) {
debugOneCount, err := models.GenerateDebugOneCount(beginTime, endTime)
if err != nil {
log.Error("Can not query debugOneCount.", err)
return 0, 0, 0, 0, 0, 0, err
}
benchmarkOneCount, err := models.GenerateBenchmarkOneCount(beginTime, endTime)
if err != nil {
log.Error("Can not query benchmarkCount.", err)
return 0, 0, 0, 0, 0, 0, err
}
trainOneCount, err := models.GenerateTrainOneCount(beginTime, endTime)
if err != nil {
log.Error("Can not query trainOneCount.", err)
return 0, 0, 0, 0, 0, 0, err
}
debugTwoCount, err := models.GenerateDebugTwoCount(beginTime, endTime)
if err != nil {
log.Error("Can not query debugTwoCount.", err)
return 0, 0, 0, 0, 0, 0, err
}
trainTwoCount, err := models.GenerateTrainTwoCount(beginTime, endTime)
if err != nil {
log.Error("Can not query DebugOneTotal count.", err)
return 0, 0, 0, 0, 0, 0, err
}
inferenceTwoCount, err := models.GenerateInferenceTwoCount(beginTime, endTime)
if err != nil {
log.Error("Can not query inferenceTwoCount.", err)
return 0, 0, 0, 0, 0, 0, err
}
return debugOneCount, benchmarkOneCount, trainOneCount, debugTwoCount, trainTwoCount, inferenceTwoCount, err
}

+ 1
- 1
routers/repo/cloudbrain_statistic.go View File

@@ -10,7 +10,7 @@ import (
)

func CloudbrainStatisticAuto() {
yesterday := time.Now().AddDate(0, 0, 0).Format("2006-01-02")
yesterday := time.Now().AddDate(0, 0, -1).Format("2006-01-02")
CloudbrainStatisticDaily(yesterday)
}



Loading…
Cancel
Save