@@ -463,32 +463,33 @@ type GetImagesPayload struct { | |||||
type CloudbrainsOptions struct { | type CloudbrainsOptions struct { | ||||
ListOptions | 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 { | 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}), | 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 count int64 | ||||
var err error | var err error | ||||
count, err = sess.Unscoped().Where(cond).Count(new(Cloudbrain)) | 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() | 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) { | func GetCreateHourPeriodCount(dateBeginTime string, dateEndTime string) (map[string]interface{}, error) { | ||||
//0 to 23 for each hour, | //0 to 23 for each hour, | ||||
dateHourMap := make(map[string]interface{}) | dateHourMap := make(map[string]interface{}) | ||||
@@ -285,6 +290,21 @@ func GetRunHourPeriodCount(dateBeginTime string, dateEndTime string) (map[string | |||||
return dateHourMap, nil | 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) { | func GetCloudbrainRunning() ([]*CloudbrainInfo, error) { | ||||
sess := x.NewSession() | sess := x.NewSession() | ||||
defer sess.Close() | defer sess.Close() | ||||
@@ -944,22 +944,65 @@ func GetCloudbrainsCreateHoursData(ctx *context.Context) { | |||||
return | return | ||||
} | } | ||||
dataPeriodCount := make(map[string]int64) | 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{}{ | ctx.JSON(http.StatusOK, map[string]interface{}{ | ||||