diff --git a/api/desc/core/pcm-core.api b/api/desc/core/pcm-core.api index 68aba46d..be4782d6 100644 --- a/api/desc/core/pcm-core.api +++ b/api/desc/core/pcm-core.api @@ -1099,4 +1099,14 @@ type TaskStatusResp { Failed int `json:"Failed"` Running int `json:"Running"` Pause int `json:"Pause"` +} + +type TaskDetailsResp { + Name string `json:"name"` + description string `json:"description"` + StartTime string `json:"startTime"` + EndTime string `json:"endTime"` + Strategy int64 `json:"strategy,string"` + SynergyStatus int64 `json:"synergyStatus,string"` + ClusterInfos []*ClusterInfo `json:"clusterInfos"` } \ No newline at end of file diff --git a/api/desc/pcm.api b/api/desc/pcm.api index 6dd7aa4e..131620ae 100644 --- a/api/desc/pcm.api +++ b/api/desc/pcm.api @@ -142,9 +142,9 @@ service pcm { @handler homeOverviewHandler get /core/homeOverview (HomeOverviewReq) returns (HomeOverviewResp) - @doc "task details" - @handler taskDetails - get /core/task/details (CId) returns(TaskStatusResp) + @doc "task details" + @handler taskDetails + get /core/task/details (FId) returns(TaskDetailsResp) } //hpc二级接口 @@ -218,7 +218,7 @@ service pcm { @doc "Create cloud computing common tasks" @handler commitGeneralTask - post /cloud/task/create (GeneralTaskReq) returns() + post /cloud/task/create (GeneralTaskReq) returns () } //智算二级接口 @@ -986,7 +986,7 @@ service pcm { @doc "alert rules" @handler alertRulesHandler - get /monitoring/alert/rule (AlertRulesReq)returns (AlertRulesResp) + get /monitoring/alert/rule (AlertRulesReq) returns (AlertRulesResp) @doc "cluster resource load" @handler clustersLoadHandler @@ -1004,9 +1004,9 @@ service pcm { @handler syncClusterAlertHandler post /core/syncClusterAlert (SyncClusterAlertReq) - @handler taskNumHandler - get /monitoring/task/num (taskNumReq) returns (taskNumResp) + @handler taskNumHandler + get /monitoring/task/num (taskNumReq) returns (taskNumResp) - @handler adapterInfoHandler - get /monitoring/adapter/info (adapterInfoReq) returns (adapterInfoResp) + @handler adapterInfoHandler + get /monitoring/adapter/info (adapterInfoReq) returns (adapterInfoResp) } \ No newline at end of file diff --git a/api/internal/handler/core/taskdetailshandler.go b/api/internal/handler/core/taskdetailshandler.go index 6a064caf..cc3ac448 100644 --- a/api/internal/handler/core/taskdetailshandler.go +++ b/api/internal/handler/core/taskdetailshandler.go @@ -11,7 +11,7 @@ import ( func TaskDetailsHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { - var req types.CId + var req types.FId if err := httpx.Parse(r, &req); err != nil { result.ParamErrorResult(r, w, err) return diff --git a/api/internal/handler/routes.go b/api/internal/handler/routes.go index 65819517..467d8113 100644 --- a/api/internal/handler/routes.go +++ b/api/internal/handler/routes.go @@ -1259,7 +1259,7 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) { }, { Method: http.MethodPost, - Path: "/monitoring/syncClusterAlert", + Path: "/core/syncClusterAlert", Handler: monitoring.SyncClusterAlertHandler(serverCtx), }, { diff --git a/api/internal/logic/core/taskdetailslogic.go b/api/internal/logic/core/taskdetailslogic.go index 82aa2abc..2af8de23 100644 --- a/api/internal/logic/core/taskdetailslogic.go +++ b/api/internal/logic/core/taskdetailslogic.go @@ -26,11 +26,36 @@ func NewTaskDetailsLogic(ctx context.Context, svcCtx *svc.ServiceContext) *TaskD } } -func (l *TaskDetailsLogic) TaskDetails(req *types.CId) (resp *types.TaskStatusResp, err error) { +func (l *TaskDetailsLogic) TaskDetails(req *types.FId) (resp *types.TaskDetailsResp, err error) { + var task models.Task if errors.Is(l.svcCtx.DbEngin.Where("id", req.Id).First(&task).Error, gorm.ErrRecordNotFound) { return nil, errors.New("记录不存在") } - + clusterIds := make([]int64, 0) + var cList []*types.ClusterInfo + switch task.TaskTypeDict { + case 0: + l.svcCtx.DbEngin.Table("task_cloud").Select("cluster_id").Where("task_id", task.Id).Scan(&clusterIds) + case 1: + l.svcCtx.DbEngin.Table("task_ai").Select("cluster_id").Where("task_id", task.Id).Scan(&clusterIds) + case 2: + l.svcCtx.DbEngin.Table("task_hpc").Select("cluster_id").Where("task_id", task.Id).Scan(&clusterIds) + case 3: + l.svcCtx.DbEngin.Table("task_vm").Select("cluster_id").Where("task_id", task.Id).Find(&clusterIds) + } + err = l.svcCtx.DbEngin.Table("t_cluster").Where("id in ?", clusterIds).Scan(&cList).Error + if err != nil { + return resp, err + } + resp = &types.TaskDetailsResp{ + Name: task.Name, + Description: task.Description, + StartTime: task.StartTime, + EndTime: task.EndTime, + Strategy: task.Strategy, + SynergyStatus: task.SynergyStatus, + ClusterInfos: cList, + } return } diff --git a/api/internal/scheduler/schedulers/option/cloudOption.go b/api/internal/scheduler/schedulers/option/cloudOption.go index fe6274ed..cf2df437 100644 --- a/api/internal/scheduler/schedulers/option/cloudOption.go +++ b/api/internal/scheduler/schedulers/option/cloudOption.go @@ -1,7 +1,12 @@ package option type CloudOption struct { - task interface{} + Name string `json:"name"` + AdapterIds []string `json:"adapterIds"` + ClusterIds []string `json:"clusterIds"` + Strategy string `json:"strategy"` + StaticWeightMap map[string]int32 `json:"staticWeightMap,optional"` + ReqBody []string `json:"reqBody"` } func (c CloudOption) GetOptionType() string { diff --git a/api/internal/types/types.go b/api/internal/types/types.go index 6bf0ef2a..edc52569 100644 --- a/api/internal/types/types.go +++ b/api/internal/types/types.go @@ -1064,6 +1064,16 @@ type TaskStatusResp struct { Pause int `json:"Pause"` } +type TaskDetailsResp struct { + Name string `json:"name"` + Description string `json:"description"` + StartTime string `json:"startTime"` + EndTime string `json:"endTime"` + Strategy int64 `json:"strategy,string"` + SynergyStatus int64 `json:"synergyStatus,string"` + ClusterInfos []*ClusterInfo `json:"clusterInfos"` +} + type CommitHpcTaskReq struct { Name string `json:"name"` // paratera:jobName Description string `json:"description,optional"` diff --git a/pkg/models/taskmodel_gen.go b/pkg/models/taskmodel_gen.go index 3562c287..7eb2c745 100644 --- a/pkg/models/taskmodel_gen.go +++ b/pkg/models/taskmodel_gen.go @@ -49,6 +49,7 @@ type ( Result string `db:"result"` // 作业结果 DeletedAt gorm.DeletedAt `gorm:"index"` NsID string `db:"ns_id"` + TaskTypeDict int `db:"task_type_dict"` //任务类型(对应字典表的值) } )