Browse Source

fix-3578

fix-3578
liuzx 2 years ago
parent
commit
986e6687e5
3 changed files with 110 additions and 40 deletions
  1. +33
    -26
      models/cloudbrain.go
  2. +20
    -0
      models/cloudbrain_static.go
  3. +57
    -14
      routers/api/v1/repo/cloudbrain_dashboard.go

+ 33
- 26
models/cloudbrain.go View File

@@ -463,32 +463,33 @@ type GetImagesPayload struct {

type CloudbrainsOptions struct {
ListOptions
RepoID int64 // include all repos if empty
UserID int64
JobID string
SortType string
CloudbrainIDs []int64
JobStatus []string
JobStatusNot bool
Keyword string
Type int
JobTypes []string
VersionName string
IsLatestVersion string
JobTypeNot bool
NeedRepoInfo bool
RepoIDList []int64
BeginTime time.Time
EndTime time.Time
ComputeResource string
BeginTimeUnix int64
EndTimeUnix int64
AiCenter string
NeedDeleteInfo string
Cluster string
AccCardType string
AccCardsNum int
WorkServerNumber int
RepoID int64 // include all repos if empty
UserID int64
JobID string
SortType string
CloudbrainIDs []int64
JobStatus []string
JobStatusNot bool
Keyword string
Type int
JobTypes []string
VersionName string
IsLatestVersion string
JobTypeNot bool
NeedRepoInfo bool
RepoIDList []int64
BeginTime time.Time
EndTime time.Time
ComputeResource string
BeginTimeUnix int64
EndTimeUnix int64
DateBeginTimeUnix int64
AiCenter string
NeedDeleteInfo string
Cluster string
AccCardType string
AccCardsNum int
WorkServerNumber int
}

type TaskPod struct {
@@ -2545,6 +2546,12 @@ func CloudbrainAllStatic(opts *CloudbrainsOptions) ([]*CloudbrainInfo, int64, er
builder.And(builder.Gte{"cloudbrain.created_unix": opts.BeginTimeUnix}, builder.Lte{"cloudbrain.created_unix": opts.EndTimeUnix}),
)
}
if opts.DateBeginTimeUnix > 0 {
cond = cond.And(builder.Or(
builder.Gte{"cloudbrain.end_time": opts.DateBeginTimeUnix},
builder.IsNull{"cloudbrain.end_time"},
))
}
var count int64
var err error
count, err = sess.Unscoped().Where(cond).Count(new(Cloudbrain))


+ 20
- 0
models/cloudbrain_static.go View File

@@ -252,6 +252,11 @@ func getRunPeriodCount(dateBeginTime string, dateEndTime string, hourBeginTime s
return x.SQL(countSql).Count()
}

func getRunPeriodCountTest(hourBeginTime string, hourEndTime string) (int64, error) {
countSql := " SELECT count(*) FROM " + "public.cloudbrain where start_time <" + hourEndTime + " and end_time >= " + hourBeginTime
return x.SQL(countSql).Count()
}

func GetCreateHourPeriodCount(dateBeginTime string, dateEndTime string) (map[string]interface{}, error) {
//0 to 23 for each hour,
dateHourMap := make(map[string]interface{})
@@ -285,6 +290,21 @@ func GetRunHourPeriodCount(dateBeginTime string, dateEndTime string) (map[string
return dateHourMap, nil
}

func GetRunHourPeriodCountTest(cloudbrain Cloudbrain, dateBeginTime time.Time, dateEndTime time.Time) (map[string]int64, error) {
var runHourPeriodCount = make(map[string]int64)
if dateBeginTime.Before(dateEndTime) {
var slice = []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}
for _, hour := range slice {
hourBeginTime := dateBeginTime
hourEndTime := dateBeginTime.Unix() + int64(3600*(hour+1))
if cloudbrain.StartTime.AsTime().Unix() < hourEndTime && cloudbrain.EndTime.AsTime().Unix() > hourBeginTime.Unix() {
runHourPeriodCount[strconv.Itoa(hour)] = runHourPeriodCount[strconv.Itoa(hour)] + 1
}
}
}
return runHourPeriodCount, nil
}

func GetCloudbrainRunning() ([]*CloudbrainInfo, error) {
sess := x.NewSession()
defer sess.Close()


+ 57
- 14
routers/api/v1/repo/cloudbrain_dashboard.go View File

@@ -944,22 +944,65 @@ func GetCloudbrainsCreateHoursData(ctx *context.Context) {
return
}
dataPeriodCount := make(map[string]int64)
days := (endTime.Unix() - beginTime.Unix()) / 3600 / 24
for i := 0; i < int(days); i++ {
runHourPeriodCount, err := models.GetRunHourPeriodCount(dateBeginTime, dateEndTime)
if err != nil {
log.Error("Can not query runHourPeriodCount.", err)
ctx.Error(http.StatusBadRequest, ctx.Tr("runHourPeriodCount_get_error"))
return
// days := (endTime.Unix() - beginTime.Unix()) / 3600 / 24
// for i := 0; i < int(days); i++ {
// runHourPeriodCount, err := models.GetRunHourPeriodCount(dateBeginTime, dateEndTime)
// if err != nil {
// log.Error("Can not query runHourPeriodCount.", err)
// ctx.Error(http.StatusBadRequest, ctx.Tr("runHourPeriodCount_get_error"))
// return
// }
// var slice = []string{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23"}
// for _, v := range slice {
// dataPeriodCount[v] = dataPeriodCount[v] + runHourPeriodCount[v]
// }
// beginTime = endTime
// endTime = endTime.AddDate(0, 0, 1)
// dateBeginTime = beginTime.Format("2006-01-02")
// dateEndTime = endTime.Format("2006-01-02")
// }

// var runHourPeriodCount map[string]int64
page := 1
pagesize := 1000
// count := pagesize
cloudbrains, _, err := models.CloudbrainAllStatic(&models.CloudbrainsOptions{
ListOptions: models.ListOptions{
Page: page,
PageSize: pagesize,
},
Type: models.TypeCloudBrainAll,
DateBeginTimeUnix: beginTime.Unix(),
})
log.Info("len(cloudbrains):", len(cloudbrains))
if err != nil {
log.Error("Can not query cloudbrain.", err)
ctx.Error(http.StatusBadRequest, ctx.Tr("cloudbrain_get_error"))
return
}
for _, cloudbrain := range cloudbrains {
if cloudbrain.StartTime != 0 && cloudbrain.EndTime == 0 {
cloudbrain.EndTime = timeutil.TimeStamp(time.Now().Unix())
}
var slice = []string{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23"}
for _, v := range slice {
dataPeriodCount[v] = dataPeriodCount[v] + runHourPeriodCount[v]

days := (endTime.Unix() - beginTime.Unix()) / 3600 / 24
beginTime = endTime.AddDate(0, 0, -1)
endTime = endTime
for i := 0; i < int(days); i++ {
runHourPeriodCount, err := models.GetRunHourPeriodCountTest(cloudbrain.Cloudbrain, beginTime, endTime)
if err != nil {
log.Error("Can not query runHourPeriodCount.", err)
ctx.Error(http.StatusBadRequest, ctx.Tr("runHourPeriodCount_get_error"))
return
}
log.Info("runHourPeriodCount:", runHourPeriodCount)
var slice = []string{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23"}
for _, v := range slice {
dataPeriodCount[v] = dataPeriodCount[v] + runHourPeriodCount[v]
}
endTime = beginTime
beginTime = beginTime.AddDate(0, 0, -1)
}
beginTime = endTime
endTime = endTime.AddDate(0, 0, 1)
dateBeginTime = beginTime.Format("2006-01-02")
dateEndTime = endTime.Format("2006-01-02")
}

ctx.JSON(http.StatusOK, map[string]interface{}{


Loading…
Cancel
Save