diff --git a/api/desc/cloud/pcm-cloud.api b/api/desc/cloud/pcm-cloud.api index 7d129d5e..48030127 100644 --- a/api/desc/cloud/pcm-cloud.api +++ b/api/desc/cloud/pcm-cloud.api @@ -17,6 +17,43 @@ type ControllerMetricsReq { End string `form:"end"` } +type ( + RegisterClusterReq { + Name string `json:"name"` // 名称 + Address string `json:"address"` // 地址 + token string `json:"token"` // 数算集群token + Type string `json:"type"` // 参与者类型:CLOUD-数算集群;AI-智算集群;HPC-超算集群 + ParticipantId int64 `json:"name"` // participant id + MetricsUrl string `json:"metricsUrl"` //监控url + } + + ListCloudResp{ + Code string `json:"code"` + Msg string `json:"msg"` + Data []CloudResp `json:"data"` + } + + ParticipantResp { + Id int64 `json:"id"` // id + Name string `json:"name"` // 名称 + Address string `json:"address"` // 地址 + token string `json:"token"` // 数算集群token + Type string `json:"type"` // 参与者类型:CLOUD-数算集群;AI-智算集群;HPC-超算集群 + ParticipantId int64 `json:"name"` // participant id + MetricsUrl string `json:"metricsUrl"` //监控url + } + + CloudResp { + Code string `json:"code"` + Msg string `json:"msg"` + Data string `json:"data"` + } + + UpdateTenantReq{ + TenantName string `json:"nsID"` + clusters []string `json:"clusters"` + } +) type ControllerMetricsResp { Data interface{} `json:"data"` diff --git a/api/desc/pcm.api b/api/desc/pcm.api index fc717ff4..0b620579 100644 --- a/api/desc/pcm.api +++ b/api/desc/pcm.api @@ -42,7 +42,7 @@ service pcm { @doc "查询任务列表" @handler TaskListHandler - get /core/taskList (taskListReq)returns (taskListResp) + get /core/taskList (taskListReq) returns (taskListResp) @doc "查询任务详情" @handler TaskDetailHandler @@ -145,6 +145,22 @@ service pcm { @doc "控制器监控" @handler controllerMetricsHandler get /cloud/controller/Metrics (ControllerMetricsReq) returns (ControllerMetricsResp) + + @doc "数算集群注册" + @handler registerClusterHandler + post /cloud/registerCluster (RegisterClusterReq) returns (CloudResp) + + @doc "数算集群删除" + @handler deleteClusterHandler + post /cloud/deleteCluster (RegisterClusterReq) returns (CloudResp) + + @doc "数算集群查询" + @handler listCloudClusterHandler + get /cloud/listCluster returns (ListCloudResp) + + @doc "触发租户更新" + @handler noticeTenantHandler + get /cloud/noticeTenant returns (CloudResp) } //智算二级接口 @@ -470,7 +486,7 @@ service pcm { @doc "查询节点详情" @handler ShowNodeDetailsHandler - get /vm/showNodeDetails (ShowNodeDetailsReq) returns (ShowNodeDetailsResp) + get /vm/showNodeDetails (ShowNodeDetailsReq) returns (ShowNodeDetailsResp) } //存算联动 接口 diff --git a/api/internal/handler/cloud/deleteclusterhandler.go b/api/internal/handler/cloud/deleteclusterhandler.go new file mode 100644 index 00000000..52a5822e --- /dev/null +++ b/api/internal/handler/cloud/deleteclusterhandler.go @@ -0,0 +1,24 @@ +package cloud + +import ( + "github.com/zeromicro/go-zero/rest/httpx" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/logic/cloud" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types" + "gitlink.org.cn/jcce-pcm/utils/result" + "net/http" +) + +func DeleteClusterHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.RegisterClusterReq + if err := httpx.Parse(r, &req); err != nil { + result.ParamErrorResult(r, w, err) + return + } + + l := cloud.NewDeleteClusterLogic(r.Context(), svcCtx) + resp, err := l.DeleteCluster(&req) + result.HttpResult(r, w, resp, err) + } +} diff --git a/api/internal/handler/cloud/listcloudclusterhandler.go b/api/internal/handler/cloud/listcloudclusterhandler.go new file mode 100644 index 00000000..4ed54d9b --- /dev/null +++ b/api/internal/handler/cloud/listcloudclusterhandler.go @@ -0,0 +1,24 @@ +package cloud + +import ( + "github.com/zeromicro/go-zero/rest/httpx" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/logic/cloud" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types" + "gitlink.org.cn/jcce-pcm/utils/result" + "net/http" +) + +func ListCloudClusterHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.ListClusterReq + if err := httpx.Parse(r, &req); err != nil { + result.ParamErrorResult(r, w, err) + return + } + + l := cloud.NewListCloudClusterLogic(r.Context(), svcCtx) + resp, err := l.ListCloudCluster(&req) + result.HttpResult(r, w, resp, err) + } +} diff --git a/api/internal/handler/cloud/noticetenanthandler.go b/api/internal/handler/cloud/noticetenanthandler.go new file mode 100644 index 00000000..ef39c4cc --- /dev/null +++ b/api/internal/handler/cloud/noticetenanthandler.go @@ -0,0 +1,17 @@ +package cloud + +import ( + "github.com/zeromicro/go-zero/rest/httpx" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/logic/cloud" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc" + "gitlink.org.cn/jcce-pcm/utils/result" + "net/http" +) + +func NoticeTenantHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + l := cloud.NewNoticeTenantLogic(r.Context(), svcCtx) + resp, err := l.NoticeTenant() + result.HttpResult(r, w, resp, err) + } +} diff --git a/api/internal/handler/cloud/registerclusterhandler.go b/api/internal/handler/cloud/registerclusterhandler.go new file mode 100644 index 00000000..d3303cad --- /dev/null +++ b/api/internal/handler/cloud/registerclusterhandler.go @@ -0,0 +1,24 @@ +package cloud + +import ( + "github.com/zeromicro/go-zero/rest/httpx" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/logic/cloud" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types" + "gitlink.org.cn/jcce-pcm/utils/result" + "net/http" +) + +func RegisterClusterHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.RegisterClusterReq + if err := httpx.Parse(r, &req); err != nil { + result.ParamErrorResult(r, w, err) + return + } + + l := cloud.NewRegisterClusterLogic(r.Context(), svcCtx) + resp, err := l.RegisterCluster(&req) + result.HttpResult(r, w, resp, err) + } +} diff --git a/api/internal/handler/routes.go b/api/internal/handler/routes.go index 939f7c88..aaf6e7fe 100644 --- a/api/internal/handler/routes.go +++ b/api/internal/handler/routes.go @@ -167,6 +167,26 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) { Path: "/cloud/controller/Metrics", Handler: cloud.ControllerMetricsHandler(serverCtx), }, + { + Method: http.MethodPost, + Path: "/cloud/registerCluster", + Handler: cloud.RegisterClusterHandler(serverCtx), + }, + { + Method: http.MethodPost, + Path: "/cloud/deleteCluster", + Handler: cloud.DeleteClusterHandler(serverCtx), + }, + { + Method: http.MethodGet, + Path: "/cloud/listCluster", + Handler: cloud.ListCloudClusterHandler(serverCtx), + }, + { + Method: http.MethodGet, + Path: "/cloud/noticeTenant", + Handler: cloud.NoticeTenantHandler(serverCtx), + }, }, rest.WithPrefix("/pcm/v1"), ) diff --git a/api/internal/logic/cloud/deleteclusterlogic.go b/api/internal/logic/cloud/deleteclusterlogic.go new file mode 100644 index 00000000..06426b1b --- /dev/null +++ b/api/internal/logic/cloud/deleteclusterlogic.go @@ -0,0 +1,30 @@ +package cloud + +import ( + "context" + + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type DeleteClusterLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +func NewDeleteClusterLogic(ctx context.Context, svcCtx *svc.ServiceContext) *DeleteClusterLogic { + return &DeleteClusterLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *DeleteClusterLogic) DeleteCluster(req *types.RegisterClusterReq) (resp *types.CloudResp, err error) { + // todo: add your logic here and delete this line + + return +} diff --git a/api/internal/logic/cloud/listcloudclusterlogic.go b/api/internal/logic/cloud/listcloudclusterlogic.go new file mode 100644 index 00000000..effe7e5d --- /dev/null +++ b/api/internal/logic/cloud/listcloudclusterlogic.go @@ -0,0 +1,30 @@ +package cloud + +import ( + "context" + + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type ListCloudClusterLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +func NewListCloudClusterLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ListCloudClusterLogic { + return &ListCloudClusterLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *ListCloudClusterLogic) ListCloudCluster(req *types.ListClusterReq) (resp *types.CloudListResp, err error) { + // todo: add your logic here and delete this line + + return +} diff --git a/api/internal/logic/cloud/noticetenantlogic.go b/api/internal/logic/cloud/noticetenantlogic.go new file mode 100644 index 00000000..61ba4072 --- /dev/null +++ b/api/internal/logic/cloud/noticetenantlogic.go @@ -0,0 +1,30 @@ +package cloud + +import ( + "context" + + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type NoticeTenantLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +func NewNoticeTenantLogic(ctx context.Context, svcCtx *svc.ServiceContext) *NoticeTenantLogic { + return &NoticeTenantLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *NoticeTenantLogic) NoticeTenant() (resp *types.CloudResp, err error) { + // todo: add your logic here and delete this line + + return +} diff --git a/api/internal/logic/cloud/registerclusterlogic.go b/api/internal/logic/cloud/registerclusterlogic.go new file mode 100644 index 00000000..44dbfa31 --- /dev/null +++ b/api/internal/logic/cloud/registerclusterlogic.go @@ -0,0 +1,30 @@ +package cloud + +import ( + "context" + + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type RegisterClusterLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +func NewRegisterClusterLogic(ctx context.Context, svcCtx *svc.ServiceContext) *RegisterClusterLogic { + return &RegisterClusterLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *RegisterClusterLogic) RegisterCluster(req *types.RegisterClusterReq) (resp *types.CloudResp, err error) { + // todo: add your logic here and delete this line + + return +} diff --git a/api/internal/types/types.go b/api/internal/types/types.go index 43bf27f2..25d7c50b 100644 --- a/api/internal/types/types.go +++ b/api/internal/types/types.go @@ -3336,6 +3336,42 @@ type ControllerMetricsReq struct { End string `form:"end"` } +type RegisterClusterReq struct { + Name string `json:"name"` // 名称 + Address string `json:"address"` // 地址 + Token string `json:"token"` // 数算集群token + Type string `json:"type"` // 参与者类型:CLOUD-数算集群;AI-智算集群;HPC-超算集群 + ParticipantId int64 `json:"name"` // participant id + MetricsUrl string `json:"metricsUrl"` //监控url +} + +type ListCloudResp struct { + Code string `json:"code"` + Msg string `json:"msg"` + Data []CloudResp `json:"data"` +} + +type ParticipantResp struct { + Id int64 `json:"id"` // id + Name string `json:"name"` // 名称 + Address string `json:"address"` // 地址 + Token string `json:"token"` // 数算集群token + Type string `json:"type"` // 参与者类型:CLOUD-数算集群;AI-智算集群;HPC-超算集群 + ParticipantId int64 `json:"name"` // participant id + MetricsUrl string `json:"metricsUrl"` //监控url +} + +type CloudResp struct { + Code string `json:"code"` + Msg string `json:"msg"` + Data string `json:"data"` +} + +type UpdateTenantReq struct { + TenantName string `json:"nsID"` + Clusters []string `json:"clusters"` +} + type ControllerMetricsResp struct { Data interface{} `json:"data"` }