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.

getcenteroverviewlogic.go 1.8 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package ai
  2. import (
  3. "context"
  4. "github.com/zeromicro/go-zero/core/logx"
  5. "gitlink.org.cn/JointCloud/pcm-coordinator/internal/scheduler/service/utils/stat"
  6. "gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
  7. "gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
  8. )
  9. type GetCenterOverviewLogic struct {
  10. logx.Logger
  11. ctx context.Context
  12. svcCtx *svc.ServiceContext
  13. }
  14. func NewGetCenterOverviewLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetCenterOverviewLogic {
  15. return &GetCenterOverviewLogic{
  16. Logger: logx.WithContext(ctx),
  17. ctx: ctx,
  18. svcCtx: svcCtx,
  19. }
  20. }
  21. func (l *GetCenterOverviewLogic) GetCenterOverview() (resp *types.CenterOverviewResp, err error) {
  22. resp = &types.CenterOverviewResp{}
  23. var centerNum int32
  24. var taskNum int32
  25. var cardNum int32
  26. var totalTops float64
  27. adapterList, err := l.svcCtx.Scheduler.AiStorages.GetAdaptersByType("1")
  28. if err != nil {
  29. return nil, err
  30. }
  31. centerNum = int32(len(adapterList))
  32. resp.CenterNum = centerNum
  33. go stat.UpdateClusterResources(l.svcCtx, adapterList)
  34. for _, adapter := range adapterList {
  35. taskList, err := l.svcCtx.Scheduler.AiStorages.GetAiTasksByAdapterId(adapter.Id)
  36. if err != nil {
  37. continue
  38. }
  39. taskNum += int32(len(taskList))
  40. }
  41. resp.TaskNum = taskNum
  42. for _, adapter := range adapterList {
  43. clusters, err := l.svcCtx.Scheduler.AiStorages.GetClustersByAdapterId(adapter.Id)
  44. if err != nil {
  45. continue
  46. }
  47. for _, cluster := range clusters.List {
  48. clusterResource, err := l.svcCtx.Scheduler.AiStorages.GetClusterResourcesById(cluster.Id)
  49. if err != nil {
  50. continue
  51. }
  52. cardNum += int32(clusterResource.CardTotal)
  53. totalTops += clusterResource.CardTopsTotal
  54. }
  55. }
  56. resp.CardNum = cardNum
  57. resp.PowerInTops = totalTops
  58. return resp, nil
  59. }

PCM is positioned as Software stack over Cloud, aiming to build the standards and ecology of heterogeneous cloud collaboration for JCC in a non intrusive and autonomous peer-to-peer manner.