@@ -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)) | |||
@@ -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() | |||
@@ -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{}{ | |||