You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

cloudbrain_static.go 8.0 kB

3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. package models
  2. import (
  3. "strconv"
  4. "time"
  5. "code.gitea.io/gitea/modules/log"
  6. "code.gitea.io/gitea/modules/timeutil"
  7. "code.gitea.io/gitea/modules/util"
  8. "xorm.io/builder"
  9. )
  10. type TaskDetail struct {
  11. ID int64 `json:"ID"`
  12. JobID string `json:"JobID"`
  13. JobName string `json:"JobName"`
  14. DisplayJobName string `json:"DisplayJobName"`
  15. Status string `json:"Status"`
  16. JobType string `json:"JobType"`
  17. CreatedUnix timeutil.TimeStamp `json:"CreatedUnix"`
  18. WaitTime string `json:"WaitTime"`
  19. RunTime string `json:"RunTime"`
  20. StartTime timeutil.TimeStamp `json:"StartTime"`
  21. EndTime timeutil.TimeStamp `json:"EndTime"`
  22. ComputeResource string `json:"ComputeResource"`
  23. Type int `json:"Type"`
  24. UserName string `json:"UserName"`
  25. RepoName string `json:"RepoName"`
  26. RepoAlias string `json:"RepoAlias"`
  27. RepoID int64 `json:"RepoID"`
  28. IsDelete bool `json:"IsDelete"`
  29. CardNum int `json:"CardNum"`
  30. CardType string `json:"CardType"`
  31. CardDuration string `json:"CardDuration"`
  32. AiCenter string `json:"AiCenter"`
  33. FlavorName string `json:"FlavorName"`
  34. WorkServerNum int64 `json:"WorkServerNum"`
  35. Spec *Specification `json:"Spec"`
  36. }
  37. func GetTodayCreatorCount(beginTime time.Time, endTime time.Time) (int64, error) {
  38. countSql := "SELECT count(distinct user_id) FROM " +
  39. "public.cloudbrain where created_unix >=" + strconv.FormatInt(beginTime.Unix(), 10) +
  40. " and created_unix<" + strconv.FormatInt(endTime.Unix(), 10)
  41. return x.SQL(countSql).Count()
  42. }
  43. func GetTodayCloudbrainCount(beginTime time.Time, endTime time.Time) (int64, error) {
  44. countSql := "SELECT count(*) FROM " +
  45. "public.cloudbrain where created_unix >=" + strconv.FormatInt(beginTime.Unix(), 10) +
  46. " and created_unix<=" + strconv.FormatInt(endTime.Unix(), 10)
  47. return x.SQL(countSql).Count()
  48. }
  49. func GetTodayRunningCount(beginTime time.Time, endTime time.Time) (int64, error) {
  50. countSql := "SELECT count(*) FROM " +
  51. "public.cloudbrain where created_unix >=" + strconv.FormatInt(beginTime.Unix(), 10) +
  52. " and created_unix<=" + strconv.FormatInt(endTime.Unix(), 10) + " and (status='" + string(JobRunning) + "'" +
  53. " or status='" + string(ModelArtsTrainJobInit) + "')"
  54. return x.SQL(countSql).Count()
  55. }
  56. func GetTodayWaitingCount(beginTime time.Time, endTime time.Time) (int64, error) {
  57. countSql := "SELECT count(*) FROM " +
  58. "public.cloudbrain where created_unix >=" + strconv.FormatInt(beginTime.Unix(), 10) +
  59. " and created_unix<=" + strconv.FormatInt(endTime.Unix(), 10) + " and status='" + string(JobWaiting) + "'"
  60. return x.SQL(countSql).Count()
  61. }
  62. func GetCreatorCount() (int64, error) {
  63. countSql := "SELECT count(distinct user_id) FROM public.cloudbrain"
  64. return x.SQL(countSql).Count()
  65. }
  66. func GetCloudbrainTypeCount() ([]map[string]string, error) {
  67. countSql := "SELECT type,count(*) num FROM public.cloudbrain group by type order by num desc"
  68. return x.QueryString(countSql)
  69. }
  70. func GetCloudbrainStatusCount() ([]map[string]string, error) {
  71. countSql := "SELECT status,count(*) num FROM public.cloudbrain group by status order by num desc"
  72. return x.QueryString(countSql)
  73. }
  74. func GetCloudbrainTpyeDurationSum() ([]map[string]string, error) {
  75. countSql := "SELECT type,sum(duration) FROM public.cloudbrain group by type order by sum(duration) desc"
  76. return x.QueryString(countSql)
  77. }
  78. func GetRecordBeginTime() ([]*CloudbrainInfo, error) {
  79. sess := x.NewSession()
  80. defer sess.Close()
  81. sess.OrderBy("cloudbrain.id ASC limit 1")
  82. cloudbrains := make([]*CloudbrainInfo, 0)
  83. if err := sess.Table(&Cloudbrain{}).Unscoped().
  84. Find(&cloudbrains); err != nil {
  85. log.Info("find error.")
  86. }
  87. return cloudbrains, nil
  88. }
  89. func GetAllStatusCloudBrain() map[string]int {
  90. sess := x.NewSession()
  91. defer sess.Close()
  92. cloudbrains := make([]*CloudbrainInfo, 0)
  93. if err := sess.Table(&Cloudbrain{}).Unscoped().
  94. Find(&cloudbrains); err != nil {
  95. log.Info("find error.")
  96. }
  97. cloudBrainStatusResult := make(map[string]int)
  98. for _, cloudbrain := range cloudbrains {
  99. if _, ok := cloudBrainStatusResult[cloudbrain.Status]; !ok {
  100. cloudBrainStatusResult[cloudbrain.Status] = 1
  101. } else {
  102. cloudBrainStatusResult[cloudbrain.Status] += 1
  103. }
  104. }
  105. return cloudBrainStatusResult
  106. }
  107. func GetWaittingTop() ([]*CloudbrainInfo, error) {
  108. sess := x.NewSession()
  109. defer sess.Close()
  110. var cond = builder.NewCond()
  111. cond = cond.And(
  112. builder.Eq{"cloudbrain.status": string(JobWaiting)},
  113. )
  114. sess.OrderBy("cloudbrain.created_unix ASC limit 10")
  115. cloudbrains := make([]*CloudbrainInfo, 0, 10)
  116. if err := sess.Table(&Cloudbrain{}).Where(cond).
  117. Find(&cloudbrains); err != nil {
  118. log.Info("find error.")
  119. }
  120. return cloudbrains, nil
  121. }
  122. func GetRunningTop() ([]*CloudbrainInfo, error) {
  123. sess := x.NewSession()
  124. defer sess.Close()
  125. var cond = builder.NewCond()
  126. cond = cond.And(
  127. builder.Eq{"cloudbrain.status": string(JobRunning)},
  128. )
  129. sess.OrderBy("cloudbrain.duration DESC limit 10")
  130. cloudbrains := make([]*CloudbrainInfo, 0, 10)
  131. if err := sess.Table(&Cloudbrain{}).Where(cond).
  132. Find(&cloudbrains); err != nil {
  133. log.Info("find error.")
  134. }
  135. return cloudbrains, nil
  136. }
  137. func getCreatePeriodCount(dateBeginTime string, dateEndTime string, hourBeginTime string, hourEndTime string) (int64, error) {
  138. countSql := "SELECT count(*) FROM " +
  139. "public.cloudbrain where to_char(to_timestamp(created_unix), 'YYYY-MM-DD') >= '" + dateBeginTime +
  140. "' and to_char(to_timestamp(created_unix), 'YYYY-MM-DD') < '" + dateEndTime +
  141. "' and to_char(to_timestamp(created_unix), 'HH24:MI:SS') >= '" + hourBeginTime +
  142. "' and to_char(to_timestamp(created_unix), 'HH24:MI:SS') < '" + hourEndTime + "'"
  143. return x.SQL(countSql).Count()
  144. }
  145. //SELECT * FROM xxx WHERE NOT ((endTime < hourBeginTime) OR (startTime > hourEndTime))
  146. func getRunPeriodCount(dateBeginTime string, dateEndTime string, hourBeginTime string, hourEndTime string) (int64, error) {
  147. countSql := "SELECT count(*) FROM " +
  148. "public.cloudbrain where not ((to_char(to_timestamp(start_time), ' HH24:MI:SS') > '" + hourEndTime +
  149. "') or (to_char(to_timestamp(end_time), 'HH24:MI:SS') < '" + hourBeginTime + "'))" +
  150. " and (to_char(to_timestamp(start_time), 'YYYY-MM-DD') >= '" + dateBeginTime +
  151. "' and to_char(to_timestamp(start_time), 'YYYY-MM-DD') < '" + dateEndTime + "')"
  152. return x.SQL(countSql).Count()
  153. }
  154. func GetCreateHourPeriodCount(dateBeginTime string, dateEndTime string) (map[string]interface{}, error) {
  155. //0 to 23 for each hour,
  156. dateHourMap := make(map[string]interface{})
  157. var slice = []int64{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}
  158. for key, value := range slice {
  159. hourBeginHour := util.AddZero(value) + ":00:00"
  160. hourEndHour := util.AddZero(value+1) + ":00:00"
  161. cout, err := getCreatePeriodCount(dateBeginTime, dateEndTime, hourBeginHour, hourEndHour)
  162. if err != nil {
  163. log.Error("Can not query getCreatePeriodCount.", err)
  164. return nil, nil
  165. }
  166. dateHourMap[strconv.Itoa(key)] = cout
  167. }
  168. return dateHourMap, nil
  169. }
  170. func GetRunHourPeriodCount(dateBeginTime string, dateEndTime string) (map[string]interface{}, error) {
  171. dateHourMap := make(map[string]interface{})
  172. var slice = []int64{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}
  173. for key, value := range slice {
  174. hourBeginHour := util.AddZero(value) + ":00:00"
  175. hourEndHour := util.AddZero(value+1) + ":00:00"
  176. cout, err := getRunPeriodCount(dateBeginTime, dateEndTime, hourBeginHour, hourEndHour)
  177. if err != nil {
  178. log.Error("Can not query getRunPeriodCount.", err)
  179. return nil, nil
  180. }
  181. dateHourMap[strconv.Itoa(key)] = cout
  182. }
  183. return dateHourMap, nil
  184. }