diff --git a/routers/api/v1/api.go b/routers/api/v1/api.go index b9c9878bd..ff686461f 100755 --- a/routers/api/v1/api.go +++ b/routers/api/v1/api.go @@ -577,7 +577,7 @@ func RegisterRoutes(m *macaron.Macaron) { m.Get("/overview", repo.GetAllCloudbrainsOverview) m.Get("/distribution", repo.GetAllCloudbrainsPeriodDistribution) m.Get("/trend", repo.GetAllCloudbrainsTrend) - m.Get("/trend_detail", repo.GetAllCloudbrainsTrendDetail) + // m.Get("/trend_detail", repo.GetAllCloudbrainsTrendDetail) m.Get("/status_analysis", repo.GetCloudbrainsStatusAnalysis) m.Get("/detail_data", repo.GetCloudbrainsDetailData) m.Get("/hours_data", repo.GetCloudbrainsCreateHoursData) diff --git a/routers/api/v1/repo/cloudbrain_dashboard.go b/routers/api/v1/repo/cloudbrain_dashboard.go index d6f03923c..a365f35bc 100644 --- a/routers/api/v1/repo/cloudbrain_dashboard.go +++ b/routers/api/v1/repo/cloudbrain_dashboard.go @@ -16,8 +16,9 @@ import ( ) type TimeCloudbrainsNum struct { - TimeCloudbrainNum []DateCloudbrainNum `json:"dateCloudbrainNum"` - TotalCount int `json:"totalCount"` + TimeCloudbrainNum []DateCloudbrainNum `json:"dateCloudbrainNum"` + TotalCount int `json:"totalCount"` + TimeCloudbrainInfo []DateCloudbrainInfo `json:"timeCloudbrainInfo"` } type DateCloudbrainNum struct { Date string `json:"date"` @@ -27,6 +28,11 @@ type DateCloudbrainNum struct { CloudBrainPeriodNum map[int]int `json:"cloudBrainPeriodNum"` CloudBrainComputeResource map[string]int `json:"cloudBrainComputeResource"` } +type DateCloudbrainInfo struct { + Date string `json:"date"` + CloudBrainPeriodNum map[int]int `json:"cloudBrainPeriodNum"` + CloudBrainComputeResource map[string]int `json:"cloudBrainComputeResource"` +} func GetAllCloudbrainsOverview(ctx *context.Context) { // recordBeginTime, err := getBrainRecordBeginTime() @@ -153,33 +159,33 @@ func GetAllCloudbrainsTrend(ctx *context.Context) { beginTime = brainRecordBeginTime endTime = now endTimeTemp = beginTime.AddDate(0, 1, 0) - dateCloudbrainNum, err = getYearCloudbrainNum(beginTime, endTimeTemp, endTime) + dateCloudbrainNum, err = getMonthCloudbrainNum(beginTime, endTimeTemp, endTime) if err != nil { - log.Error("Can not query getYearCloudbrainNum.", err) - ctx.Error(http.StatusBadRequest, ctx.Tr("getYearCloudbrainNum_get_error")) + log.Error("Can not query getMonthCloudbrainNum.", err) + ctx.Error(http.StatusBadRequest, ctx.Tr("getMonthCloudbrainNum_get_error")) return } } else if queryType == "today" { beginTime = now.AddDate(0, 0, 0) beginTime = time.Date(beginTime.Year(), beginTime.Month(), beginTime.Day(), 0, 0, 0, 0, now.Location()) - endTimeTemp = beginTime.Add(time.Hour) + endTimeTemp = now endTime = now - dateCloudbrainNum, err = getHourCloudbrainNum(beginTime, endTimeTemp, endTime) + dateCloudbrainNum, err = getDayCloudbrainNum(beginTime, endTimeTemp, endTime) if err != nil { - log.Error("Can not query getHourCloudbrainNum.", err) - ctx.Error(http.StatusBadRequest, ctx.Tr("getYearCloudbrainNum_get_error")) + log.Error("Can not query getDayCloudbrainNum.", err) + ctx.Error(http.StatusBadRequest, ctx.Tr("getDayCloudbrainNum_get_error")) return } } else if queryType == "yesterday" { beginTime = now.AddDate(0, 0, -1) beginTime = time.Date(beginTime.Year(), beginTime.Month(), beginTime.Day(), 0, 0, 0, 0, now.Location()) - endTimeTemp = beginTime.Add(time.Hour) + endTimeTemp = beginTime.AddDate(0, 0, 1) endTime = time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, now.Location()) - dateCloudbrainNum, err = getHourCloudbrainNum(beginTime, endTimeTemp, endTime) + dateCloudbrainNum, err = getDayCloudbrainNum(beginTime, endTimeTemp, endTime) if err != nil { - log.Error("Can not query getHourCloudbrainNum.", err) - ctx.Error(http.StatusBadRequest, ctx.Tr("getYearCloudbrainNum_get_error")) + log.Error("Can not query getDayCloudbrainNum.", err) + ctx.Error(http.StatusBadRequest, ctx.Tr("getDayCloudbrainNum_get_error")) return } @@ -188,6 +194,7 @@ func GetAllCloudbrainsTrend(ctx *context.Context) { beginTime = time.Date(beginTime.Year(), beginTime.Month(), beginTime.Day(), 0, 0, 0, 0, now.Location()) endTime = now endTimeTemp = beginTime.AddDate(0, 0, 1) + endTimeTemp = time.Date(endTimeTemp.Year(), endTimeTemp.Month(), endTimeTemp.Day(), 0, 0, 0, 0, now.Location()) dateCloudbrainNum, err = getDayCloudbrainNum(beginTime, endTimeTemp, endTime) if err != nil { log.Error("Can not query getDayCloudbrainNum.", err) @@ -232,10 +239,10 @@ func GetAllCloudbrainsTrend(ctx *context.Context) { endTime = now beginTime = time.Date(endTime.Year(), 1, 1, 0, 0, 0, 0, now.Location()) endTimeTemp = beginTime.AddDate(0, 1, 0) - dateCloudbrainNum, err = getYearCloudbrainNum(beginTime, endTimeTemp, endTime) + dateCloudbrainNum, err = getMonthCloudbrainNum(beginTime, endTimeTemp, endTime) if err != nil { - log.Error("Can not query getDayCloudbrainNum.", err) - ctx.Error(http.StatusBadRequest, ctx.Tr("getYearCloudbrainNum_get_error")) + log.Error("Can not query getMonthCloudbrainNum.", err) + ctx.Error(http.StatusBadRequest, ctx.Tr("getMonthCloudbrainNum_get_error")) return } @@ -260,10 +267,10 @@ func GetAllCloudbrainsTrend(ctx *context.Context) { beginTime = brainRecordBeginTime endTime = now endTimeTemp = beginTime.AddDate(0, 1, 0) - dateCloudbrainNum, err = getYearCloudbrainNum(beginTime, endTimeTemp, endTime) + dateCloudbrainNum, err = getMonthCloudbrainNum(beginTime, endTimeTemp, endTime) if err != nil { - log.Error("Can not query getDayCloudbrainNum.", err) - ctx.Error(http.StatusBadRequest, ctx.Tr("getYearCloudbrainNum_get_error")) + log.Error("Can not query getMonthCloudbrainNum.", err) + ctx.Error(http.StatusBadRequest, ctx.Tr("getMonthCloudbrainNum_get_error")) return } } else { @@ -279,49 +286,21 @@ func GetAllCloudbrainsTrend(ctx *context.Context) { ctx.Error(http.StatusBadRequest, ctx.Tr("ParseInLocation_get_error")) return } - days := (endTime.Unix() - beginTime.Unix()) / 3600 / 24 - if 1 < days { - endTimeTemp = beginTime.AddDate(0, 0, 1) - endTime = endTime.AddDate(0, 0, 2) - dateCloudbrainNum, err = getDayCloudbrainNum(beginTime, endTimeTemp, endTime) - if err != nil { - log.Error("Can not query getDayCloudbrainNum.", err) - ctx.Error(http.StatusBadRequest, ctx.Tr("getDayCloudbrainNum_get_error")) - return - } - } else if 0 < days || days <= 1 { - endTimeTemp = beginTime.Add(time.Hour) - dateCloudbrainNum, err = getHourCloudbrainNum(beginTime, endTimeTemp, endTime) - if err != nil { - log.Error("Can not query getHourCloudbrainNum.", err) - ctx.Error(http.StatusBadRequest, ctx.Tr("getHourCloudbrainNum_get_error")) - return - } - } else { + endTimeTemp = beginTime.AddDate(0, 0, 1) + log.Info("beginTimeee", beginTime) + log.Info("endTimeTemp", endTimeTemp) + log.Info("endTime", endTime) + dateCloudbrainNum, err = getDayCloudbrainNum(beginTime, endTimeTemp, endTime) + if err != nil { + log.Error("Can not query getDayCloudbrainNum.", err) + ctx.Error(http.StatusBadRequest, ctx.Tr("getDayCloudbrainNum_get_error")) return } } } - cloudbrainsPeriodData := TimeCloudbrainsNum{ - TimeCloudbrainNum: dateCloudbrainNum, - } - - ctx.JSON(http.StatusOK, cloudbrainsPeriodData) - -} -func GetAllCloudbrainsTrendDetail(ctx *context.Context) { - now := time.Now() - var beginTime time.Time - var endTime time.Time - var endTimeTemp time.Time - - beginTime = now.AddDate(0, 0, -30) - beginTime = time.Date(beginTime.Year(), beginTime.Month(), beginTime.Day(), 0, 0, 0, 0, now.Location()) - endTime = now - endTimeTemp = endTime.AddDate(0, 0, -1) - dayCloudbrainInfo, err := getDayCloudbrainInfo(beginTime, endTimeTemp, endTime) + dayCloudbrainInfo, count, err := getDayCloudbrainInfo(beginTime, endTime) if err != nil { log.Error("Can not query getDayCloudbrainInfo.", err) ctx.Error(http.StatusBadRequest, ctx.Tr("getDayCloudbrainInfo_get_error")) @@ -336,27 +315,64 @@ func GetAllCloudbrainsTrendDetail(ctx *context.Context) { if pagesize <= 0 { pagesize = 5 } - pageDateCloudbrainNum := getPageDateCloudbrainNum(dayCloudbrainInfo, page, pagesize) + pageDateCloudbrainInfo := getPageDateCloudbrainInfo(dayCloudbrainInfo, page, pagesize) cloudbrainsPeriodData := TimeCloudbrainsNum{ - TotalCount: 30, - TimeCloudbrainNum: pageDateCloudbrainNum, + TimeCloudbrainNum: dateCloudbrainNum, + TotalCount: count, + TimeCloudbrainInfo: pageDateCloudbrainInfo, } ctx.JSON(http.StatusOK, cloudbrainsPeriodData) } -func getPageDateCloudbrainNum(dateCloudbrainNums []DateCloudbrainNum, page int, pagesize int) []DateCloudbrainNum { + +// func GetAllCloudbrainsTrendDetail(ctx *context.Context) { +// now := time.Now() +// var beginTime time.Time +// var endTime time.Time +// var endTimeTemp time.Time + +// beginTime = now.AddDate(0, 0, -30) +// beginTime = time.Date(beginTime.Year(), beginTime.Month(), beginTime.Day(), 0, 0, 0, 0, now.Location()) +// endTime = now +// endTimeTemp = endTime.AddDate(0, 0, -1) +// dayCloudbrainInfo, err := getDayCloudbrainInfo(beginTime, endTimeTemp, endTime) +// if err != nil { +// log.Error("Can not query getDayCloudbrainInfo.", err) +// ctx.Error(http.StatusBadRequest, ctx.Tr("getDayCloudbrainInfo_get_error")) +// return +// } + +// page := ctx.QueryInt("page") +// if page <= 0 { +// page = 1 +// } +// pagesize := ctx.QueryInt("pagesize") +// if pagesize <= 0 { +// pagesize = 5 +// } +// pageDateCloudbrainNum := getPageDateCloudbrainNum(dayCloudbrainInfo, page, pagesize) + +// cloudbrainsPeriodData := TimeCloudbrainsNum{ +// TotalCount: 30, +// TimeCloudbrainNum: pageDateCloudbrainNum, +// } + +// ctx.JSON(http.StatusOK, cloudbrainsPeriodData) + +// } +func getPageDateCloudbrainInfo(dateCloudbrainInfo []DateCloudbrainInfo, page int, pagesize int) []DateCloudbrainInfo { begin := (page - 1) * pagesize end := (page) * pagesize - if begin > len(dateCloudbrainNums)-1 { + if begin > len(dateCloudbrainInfo)-1 { return nil } - if end > len(dateCloudbrainNums)-1 { - return dateCloudbrainNums[begin:] + if end > len(dateCloudbrainInfo)-1 { + return dateCloudbrainInfo[begin:] } else { - return dateCloudbrainNums[begin:end] + return dateCloudbrainInfo[begin:end] } } @@ -862,7 +878,7 @@ func getDayCloudbrainNum(beginTime time.Time, endTimeTemp time.Time, endTime tim return nil, err } dayCloudbrainNum := make([]DateCloudbrainNum, 0) - for endTimeTemp.Before(endTime) { + for endTimeTemp.Before(endTime) || endTimeTemp.Equal(endTime) { cloudOneJobTypeRes, cloudTwoJobTypeRes, intelligentNetJobTypeRes, cloudBrainPeriodNum, cloudBrainComputeResource := getCloudbrainCount(beginTime, endTimeTemp, cloudbrains) dayCloudbrainNum = append(dayCloudbrainNum, DateCloudbrainNum{ Date: beginTime.Format("2006/01/02"), @@ -872,21 +888,26 @@ func getDayCloudbrainNum(beginTime time.Time, endTimeTemp time.Time, endTime tim CloudBrainPeriodNum: cloudBrainPeriodNum, CloudBrainComputeResource: cloudBrainComputeResource, }) - beginTime = endTimeTemp - endTimeTemp = beginTime.AddDate(0, 0, 1) + if endTime.Before(endTimeTemp.AddDate(0, 0, 1)) && endTimeTemp.Before(endTime) { + beginTime = endTimeTemp + endTimeTemp = endTime + } else { + beginTime = endTimeTemp + endTimeTemp = beginTime.AddDate(0, 0, 1) + } } return dayCloudbrainNum, nil } -func getYearCloudbrainNum(beginTime time.Time, endTimeTemp time.Time, endTime time.Time) ([]DateCloudbrainNum, error) { - yearCloudbrainNum := make([]DateCloudbrainNum, 0) +func getMonthCloudbrainNum(beginTime time.Time, endTimeTemp time.Time, endTime time.Time) ([]DateCloudbrainNum, error) { + monthCloudbrainNum := make([]DateCloudbrainNum, 0) cloudbrains, err := models.GetAllCloudBrain() if err != nil { log.Error("Getcloudbrains failed:%v", err) return nil, err } - for endTimeTemp.Before(endTime) { + for endTimeTemp.Before(endTime) || endTimeTemp.Equal(endTime) { cloudOneJobTypeRes, cloudTwoJobTypeRes, intelligentNetJobTypeRes, cloudBrainPeriodNum, cloudBrainComputeResource := getCloudbrainCount(beginTime, endTimeTemp, cloudbrains) - yearCloudbrainNum = append(yearCloudbrainNum, DateCloudbrainNum{ + monthCloudbrainNum = append(monthCloudbrainNum, DateCloudbrainNum{ Date: beginTime.Format("2006/01"), CloudOneJobTypeRes: cloudOneJobTypeRes, CloudTwoJobTypeRes: cloudTwoJobTypeRes, @@ -894,35 +915,42 @@ func getYearCloudbrainNum(beginTime time.Time, endTimeTemp time.Time, endTime ti CloudBrainPeriodNum: cloudBrainPeriodNum, CloudBrainComputeResource: cloudBrainComputeResource, }) - beginTime = endTimeTemp - endTimeTemp = beginTime.AddDate(0, 1, 0) + if endTime.Before(endTimeTemp.AddDate(0, 1, 0)) && endTimeTemp.Before(endTime) { + beginTime = endTimeTemp + endTimeTemp = endTime + } else { + beginTime = endTimeTemp + endTimeTemp = beginTime.AddDate(0, 1, 0) + } } - return yearCloudbrainNum, nil + return monthCloudbrainNum, nil } -func getDayCloudbrainInfo(beginTime time.Time, endTimeTemp time.Time, endTime time.Time) ([]DateCloudbrainNum, error) { +func getDayCloudbrainInfo(beginTime time.Time, endTime time.Time) ([]DateCloudbrainInfo, int, error) { + now := time.Now() + endTimeTemp := time.Date(endTime.Year(), endTime.Month(), endTime.Day(), 0, 0, 0, 0, now.Location()) + if endTimeTemp.Equal(endTime) { + endTimeTemp = endTimeTemp.AddDate(0, 0, -1) + } cloudbrains, err := models.GetAllCloudBrain() if err != nil { log.Error("Getcloudbrains failed:%v", err) - return nil, err + return nil, 0, err } - dayCloudbrainNum := make([]DateCloudbrainNum, 0) - for beginTime.Before(endTimeTemp) { - cloudOneJobTypeRes, cloudTwoJobTypeRes, intelligentNetJobTypeRes, cloudBrainPeriodNum, cloudBrainComputeResource := getCloudbrainCount(endTimeTemp, endTime, cloudbrains) - dayCloudbrainNum = append(dayCloudbrainNum, DateCloudbrainNum{ - Date: endTime.Format("2006/01/02"), - CloudOneJobTypeRes: cloudOneJobTypeRes, - CloudTwoJobTypeRes: cloudTwoJobTypeRes, - IntelligentNetJobTypeRes: intelligentNetJobTypeRes, + dayCloudbrainInfo := make([]DateCloudbrainInfo, 0) + count := 0 + for beginTime.Before(endTimeTemp) || beginTime.Equal(endTimeTemp) { + _, _, _, cloudBrainPeriodNum, cloudBrainComputeResource := getCloudbrainCount(endTimeTemp, endTime, cloudbrains) + dayCloudbrainInfo = append(dayCloudbrainInfo, DateCloudbrainInfo{ + Date: endTimeTemp.Format("2006/01/02"), CloudBrainPeriodNum: cloudBrainPeriodNum, CloudBrainComputeResource: cloudBrainComputeResource, }) - if beginTime.Before(endTimeTemp) { - endTime = endTimeTemp - endTimeTemp = endTimeTemp.AddDate(0, 0, -1) - } + endTime = endTimeTemp + endTimeTemp = endTimeTemp.AddDate(0, 0, -1) + count += 1 } - return dayCloudbrainNum, nil + return dayCloudbrainInfo, count, nil } func getBrainRecordBeginTime() (time.Time, error) { return time.ParseInLocation(DATE_FORMAT, setting.BrainRecordBeginTime, time.Local)