|
- package repo
-
- import (
- "net/http"
- "net/url"
- "time"
-
- "code.gitea.io/gitea/models"
- "code.gitea.io/gitea/modules/context"
- "code.gitea.io/gitea/modules/log"
- "github.com/360EntSecGroup-Skylar/excelize/v2"
- )
-
- type CloudbrainsStatusAnalysis struct {
- JobWaitingCount int64 `json:"jobWaitingCount"`
- JobRunningCount int64 `json:"jobRunningCount"`
- JobStoppedCount int64 `json:"jobStoppedCount"`
- JobCompletedCount int64 `json:"jobCompletedCount"`
- JobFailedCount int64 `json:"jobFailedCount"`
- JobKilledCount int64 `json:"jobKilledCount"`
- JobInitCount int64 `json:"jobInitCount"`
- }
-
- func DownloadCloudBrainBoard(ctx *context.Context) {
-
- page := 1
-
- pageSize := 300
-
- var cloudBrain = ctx.Tr("repo.cloudbrain")
- fileName := getCloudbrainFileName(cloudBrain)
-
- _, total, err := models.CloudbrainAll(&models.CloudbrainsOptions{
- ListOptions: models.ListOptions{
- Page: page,
- PageSize: pageSize,
- },
- Type: models.TypeCloudBrainAll,
- NeedRepoInfo: false,
- })
-
- if err != nil {
- log.Warn("Can not get cloud brain info", err)
- ctx.Error(http.StatusBadRequest, ctx.Tr("repo.cloudbrain_query_fail"))
- return
- }
-
- totalPage := getTotalPage(total, pageSize)
-
- f := excelize.NewFile()
-
- index := f.NewSheet(cloudBrain)
- f.DeleteSheet("Sheet1")
-
- for k, v := range allCloudbrainHeader(ctx) {
- f.SetCellValue(cloudBrain, k, v)
- }
-
- var row = 2
- for i := 0; i < totalPage; i++ {
-
- pageRecords, _, err := models.CloudbrainAll(&models.CloudbrainsOptions{
- ListOptions: models.ListOptions{
- Page: page,
- PageSize: pageSize,
- },
- Type: models.TypeCloudBrainAll,
- NeedRepoInfo: true,
- })
- if err != nil {
- log.Warn("Can not get cloud brain info", err)
- continue
- }
- for _, record := range pageRecords {
-
- for k, v := range allCloudbrainValues(row, record, ctx) {
- f.SetCellValue(cloudBrain, k, v)
- }
- row++
-
- }
-
- page++
- }
- f.SetActiveSheet(index)
-
- ctx.Resp.Header().Set("Content-Disposition", "attachment; filename="+url.QueryEscape(fileName))
- ctx.Resp.Header().Set("Content-Type", "application/octet-stream")
-
- f.WriteTo(ctx.Resp)
- }
- func getCloudbrainFileName(baseName string) string {
- return baseName + "_" + time.Now().Format(EXCEL_DATE_FORMAT) + ".xlsx"
-
- }
- func allCloudbrainHeader(ctx *context.Context) map[string]string {
-
- return map[string]string{"A1": ctx.Tr("repo.cloudbrain_task"), "B1": ctx.Tr("repo.cloudbrain_task_type"), "C1": ctx.Tr("repo.modelarts.status"),
- "D1": ctx.Tr("repo.modelarts.createtime"), "E1": ctx.Tr("repo.modelarts.train_job.wait_time"), "F1": ctx.Tr("repo.modelarts.train_job.dura_time"),
- "G1": ctx.Tr("repo.modelarts.train_job.start_time"),
- "H1": ctx.Tr("repo.modelarts.train_job.end_time"), "I1": ctx.Tr("repo.modelarts.computing_resources"),
- "J1": ctx.Tr("repo.cloudbrain_creator"), "K1": ctx.Tr("repo.repo_name"), "L1": ctx.Tr("repo.cloudbrain_task_name")}
-
- }
- func allCloudbrainValues(row int, rs *models.CloudbrainInfo, ctx *context.Context) map[string]string {
- return map[string]string{getCellName("A", row): rs.DisplayJobName, getCellName("B", row): rs.JobType, getCellName("C", row): rs.Status,
- getCellName("D", row): time.Unix(int64(rs.Cloudbrain.CreatedUnix), 0).Format(CREATE_TIME_FORMAT), getCellName("E", row): getBrainWaitTime(rs),
- getCellName("F", row): rs.TrainJobDuration, getCellName("G", row): getBrainStartTime(rs),
- getCellName("H", row): getBrainEndTime(rs),
- getCellName("I", row): rs.ComputeResource, getCellName("J", row): rs.Name, getCellName("K", row): getBrainRepo(rs),
- getCellName("L", row): rs.JobName,
- }
- }
- func getBrainRepo(rs *models.CloudbrainInfo) string {
- if rs.Repo != nil {
- return rs.Repo.OwnerName + "/" + rs.Repo.Alias
- }
- return ""
- }
- func getBrainStartTime(rs *models.CloudbrainInfo) string {
- timeString := time.Unix(int64(rs.Cloudbrain.StartTime), 0).Format(CREATE_TIME_FORMAT)
- if timeString != "1970/01/01 08:00:00" {
- return timeString
- } else {
- return "0"
- }
-
- }
- func getBrainEndTime(rs *models.CloudbrainInfo) string {
- timeString := time.Unix(int64(rs.Cloudbrain.EndTime), 0).Format(CREATE_TIME_FORMAT)
- if timeString != "1970/01/01 08:00:00" {
- return timeString
- } else {
- return "0"
- }
-
- }
- func getBrainWaitTime(rs *models.CloudbrainInfo) string {
- waitTime := rs.Cloudbrain.StartTime - rs.Cloudbrain.CreatedUnix
- if waitTime <= 0 {
- return "0"
- } else {
- return models.ConvertDurationToStr(int64(waitTime))
- }
- }
- func GetCloudbrainsStatusAnalysis(ctx *context.Context) {
- cloudBrainStatusResult := models.GetAllStatusCloudBrain()
- ctx.JSON(http.StatusOK, map[string]interface{}{
- "cloudBrainStatusResult": cloudBrainStatusResult,
- })
- }
|