|
- /*
-
- Copyright (c) [2023] [pcm]
- [pcm-coordinator] is licensed under Mulan PSL v2.
- You can use this software according to the terms and conditions of the Mulan PSL v2.
- You may obtain a copy of Mulan PSL v2 at:
- http://license.coscl.org.cn/MulanPSL2
- THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
- EITHER EXPaRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
- MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
- See the Mulan PSL v2 for more details.
-
- */
-
- package core
-
- import (
- "context"
- "github.com/zeromicro/go-zero/core/logx"
- "gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
- "gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
- "gitlink.org.cn/JointCloud/pcm-coordinator/pkg/helper/enum"
- "gitlink.org.cn/JointCloud/pcm-coordinator/pkg/models"
- "gitlink.org.cn/JointCloud/pcm-coordinator/pkg/utils/httputils"
- "k8s.io/apimachinery/pkg/util/json"
- )
-
- type JobTotalLogic struct {
- logx.Logger
- ctx context.Context
- svcCtx *svc.ServiceContext
- }
-
- type Job struct {
- TotalSize int `json:"totalSize"`
- OtJobs []OtJob `json:"otJobs"`
- }
-
- type OtJob struct {
- Name string `json:"name"`
- Status string `json:"status"`
- Tasks []Task `json:"tasks"`
- }
-
- type Task struct {
- CenterName []string `json:"centerName"`
- }
-
- func NewJobTotalLogic(ctx context.Context, svcCtx *svc.ServiceContext) *JobTotalLogic {
- return &JobTotalLogic{
- Logger: logx.WithContext(ctx),
- ctx: ctx,
- svcCtx: svcCtx,
- }
- }
-
- func (l *JobTotalLogic) JobTotal() (resp *types.JobTotalResp, err error) {
- // 获取任务时间信息
- resp = &types.JobTotalResp{}
- bytes, err := httputils.HttpGet("GET", "http://grampus.openi.org.cn/openapi/v1/sharescreen/computepower/alljobinfo")
- if err != nil {
- return nil, err
- }
- json.Unmarshal(bytes, resp)
-
- // 获取其他任务信息
- jobs := &Job{}
- jobBytes, err := httputils.HttpGet("GET", "http://grampus.openi.org.cn/openapi/v1/sharescreen/trainjob?pageIndex=1&pageSize=10")
- if err != nil {
- return nil, err
- }
- json.Unmarshal(jobBytes, jobs)
-
- for _, job := range jobs.OtJobs {
- trainJob := types.TrainJob{
- Name: job.Name,
- Status: enum.ExternalStatus(job.Status).String(),
- Strategy: 0,
- SynergyStatus: "未协同",
- }
- if job.Tasks[0].CenterName != nil {
- trainJob.ParticipantName = job.Tasks[0].CenterName[0]
- }
- resp.TrainJobs = append(resp.TrainJobs, trainJob)
- }
-
- var tasks []models.Task
- tx := l.svcCtx.DbEngin.Find(&tasks)
- if tx.Error != nil {
- logx.Error(err)
- return nil, tx.Error
- }
- if len(tasks) == 0 {
- return nil, nil
- }
- for _, task := range tasks {
- var participantName string
- tx := l.svcCtx.DbEngin.Raw("SELECT name from sc_participant_phy_info where id in (SELECT CONCAT_WS(',',GROUP_CONCAT(DISTINCT h.participant_id) ,GROUP_CONCAT(DISTINCT a.participant_id) ,GROUP_CONCAT(DISTINCT c.participant_id))as service_name from task t left join hpc h on t.id = h.task_id left join cloud c on t.id = c.task_id left join ai a on t.id = a.task_id where t.id = ?)", task.Id).Scan(&participantName)
- if tx.Error != nil {
- logx.Error(err)
- return nil, tx.Error
- }
- // 承接方转义
- resp.TrainJobs = append(resp.TrainJobs, types.TrainJob{
- ParticipantName: participantName,
- Name: task.Name,
- Strategy: int(task.Strategy),
- SynergyStatus: enum.SynergyStatus(task.SynergyStatus).String(),
- Status: task.Status,
- })
-
- }
- return resp, nil
- }
|