From 356d4e617671cc2754c28ffb0b05487e209d2620 Mon Sep 17 00:00:00 2001 From: zhangwei <894646498@qq.com> Date: Mon, 29 Jan 2024 16:52:28 +0800 Subject: [PATCH] Obtain cluster list information according to participantId Former-commit-id: 5af0d344affc9e7e7421eae46fe60d4636487d92 --- api/desc/cloud/pcm-cloud.api | 15 +++++++ api/desc/core/pcm-core.api | 36 ++++++++--------- api/desc/pcm.api | 4 ++ .../handler/cloud/getclusterlisthandler.go | 28 +++++++++++++ api/internal/handler/routes.go | 5 +++ .../logic/cloud/getclusterlistlogic.go | 30 ++++++++++++++ .../logic/cloud/registerclusterlogic.go | 39 +++++++++---------- api/internal/types/types.go | 16 ++++++++ go.mod | 4 +- 9 files changed, 137 insertions(+), 40 deletions(-) create mode 100644 api/internal/handler/cloud/getclusterlisthandler.go create mode 100644 api/internal/logic/cloud/getclusterlistlogic.go diff --git a/api/desc/cloud/pcm-cloud.api b/api/desc/cloud/pcm-cloud.api index 7b8e2b8c..8fdb4274 100644 --- a/api/desc/cloud/pcm-cloud.api +++ b/api/desc/cloud/pcm-cloud.api @@ -7,6 +7,21 @@ info( email: "" ) /******************find datasetList start*************************/ +type ( + getClusterListReq { + Id int64 `form:"id"` + } + getClusterListResp { + clusters []ClusterInfo `json:"clusters"` + } + ClusterInfo { + Id int64 `json:"id"` + Name string `json:"name"` + Address string `json:"address"` + Token string `json:"token"` + MetricsUrl string `json:"metricsUrl"` + } +) type ControllerMetricsReq { Metrics []string `form:"metrics"` diff --git a/api/desc/core/pcm-core.api b/api/desc/core/pcm-core.api index 771ec7e0..fd682238 100644 --- a/api/desc/core/pcm-core.api +++ b/api/desc/core/pcm-core.api @@ -174,7 +174,7 @@ type deleteTaskReq { Id int64 `path:"id"` } -type commitTaskReq{ +type commitTaskReq { Name string `json:"name"` NsID string `json:"nsID"` Replicas int64 `json:"replicas,optional"` @@ -237,27 +237,27 @@ type ( platform string `json:"platform,optional"` } ServerCommit { - allCardRunTime string `json:"allCardRunTime"` - flavorRef string `json:"flavorRef,optional"` - name string `json:"name,optional"` - imageRef string `json:"imageRef,optional"` - accessIPv4 string `json:"accessIPv4,optional"` - accessIPv6 string `json:"accessIPv6,optional"` - adminPass string `json:"adminPass,optional"` - availability_zone string `json:"availability_zone,optional"` - key_name string `json:"key_name,optional"` - hostname string `json:"hostname,optional"` - host string `json:"host,optional"` - networks []Networks `json:"networks,optional"` + allCardRunTime string `json:"allCardRunTime"` + flavorRef string `json:"flavorRef,optional"` + name string `json:"name,optional"` + imageRef string `json:"imageRef,optional"` + accessIPv4 string `json:"accessIPv4,optional"` + accessIPv6 string `json:"accessIPv6,optional"` + adminPass string `json:"adminPass,optional"` + availability_zone string `json:"availability_zone,optional"` + key_name string `json:"key_name,optional"` + hostname string `json:"hostname,optional"` + host string `json:"host,optional"` + networks []Networks `json:"networks,optional"` } Networks { - uuid string `json:"uuid,optional"` - port string `json:"port,optional"` - fixed_ip string `json:"fixed_ip,optional"` - tag string `json:"tag,optional"` + uuid string `json:"uuid,optional"` + port string `json:"port,optional"` + fixed_ip string `json:"fixed_ip,optional"` + tag string `json:"tag,optional"` } Block_device_mapping_v2Commit { - uuid string `json:"uuid,optional"` + uuid string `json:"uuid,optional"` } commitVmTaskResp { diff --git a/api/desc/pcm.api b/api/desc/pcm.api index 2e1b3817..a54818b1 100644 --- a/api/desc/pcm.api +++ b/api/desc/pcm.api @@ -169,6 +169,10 @@ service pcm { @doc "租户更新" @handler updateTenantHandler post /cloud/updateTenant (UpdateTenantReq) returns (CloudResp) + + @doc "Obtain cluster list information according to participantId" + @handler getClusterListHandler + get /core/clusterList (getClusterListReq) returns (getClusterListResp) } //智算二级接口 diff --git a/api/internal/handler/cloud/getclusterlisthandler.go b/api/internal/handler/cloud/getclusterlisthandler.go new file mode 100644 index 00000000..1bfafe7c --- /dev/null +++ b/api/internal/handler/cloud/getclusterlisthandler.go @@ -0,0 +1,28 @@ +package cloud + +import ( + "net/http" + + "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" +) + +func GetClusterListHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.GetClusterListReq + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := cloud.NewGetClusterListLogic(r.Context(), svcCtx) + resp, err := l.GetClusterList(&req) + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/api/internal/handler/routes.go b/api/internal/handler/routes.go index 67994398..6294c2c6 100644 --- a/api/internal/handler/routes.go +++ b/api/internal/handler/routes.go @@ -198,6 +198,11 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) { Path: "/cloud/updateTenant", Handler: cloud.UpdateTenantHandler(serverCtx), }, + { + Method: http.MethodGet, + Path: "/core/clusterList", + Handler: cloud.GetClusterListHandler(serverCtx), + }, }, rest.WithPrefix("/pcm/v1"), ) diff --git a/api/internal/logic/cloud/getclusterlistlogic.go b/api/internal/logic/cloud/getclusterlistlogic.go new file mode 100644 index 00000000..8e22855b --- /dev/null +++ b/api/internal/logic/cloud/getclusterlistlogic.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 GetClusterListLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +func NewGetClusterListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetClusterListLogic { + return &GetClusterListLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *GetClusterListLogic) GetClusterList(req *types.GetClusterListReq) (resp *types.GetClusterListResp, err error) { + resp = &types.GetClusterListResp{} + //clusters := []models.ScParticipantPhyInfo{} + l.svcCtx.DbEngin.Find(resp.Clusters).Where("id", req.Id) + return resp, nil +} diff --git a/api/internal/logic/cloud/registerclusterlogic.go b/api/internal/logic/cloud/registerclusterlogic.go index 32881979..362690b5 100644 --- a/api/internal/logic/cloud/registerclusterlogic.go +++ b/api/internal/logic/cloud/registerclusterlogic.go @@ -2,13 +2,11 @@ package cloud import ( "context" + "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/pcm-coordinator/pkg/models" "gitlink.org.cn/jcce-pcm/pcm-coordinator/pkg/utils" "strconv" - "time" - - "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" ) @@ -39,31 +37,30 @@ func (l *RegisterClusterLogic) RegisterCluster(req *types.RegisterClusterReq) (* return &resp, nil } - participant := models.ScParticipantPhyInfo{} - participant.Token = req.Token - participant.Name = req.Name - participant.Address = req.Address - participant.Type = "CLOUD" - participant.Id = utils.GenSnowflakeID() - participant.MetricsUrl = req.MetricsUrl - participant.CreatedTime = time.Now() - participant.UpdatedTime = time.Now() - - labelInfo := models.ScParticipantLabelInfo{} - labelInfo.Id = utils.GenSnowflakeID() - labelInfo.ParticipantId = participant.Id - labelInfo.CreatedTime = time.Now() - labelInfo.Key = "cloud" - labelInfo.Value = "sealos" - + participant := models.ScParticipantPhyInfo{ + Token: req.Token, + Name: req.Name, + Address: req.Address, + Type: "CLOUD", + Id: utils.GenSnowflakeID(), + MetricsUrl: req.MetricsUrl, + } tx := l.svcCtx.DbEngin.Create(&participant) if tx.Error != nil { return nil, tx.Error } + + labelInfo := models.ScParticipantLabelInfo{ + Id: utils.GenSnowflakeID(), + ParticipantId: participant.Id, + Key: "cloud", + Value: "sealos", + } tx2 := l.svcCtx.DbEngin.Create(&labelInfo) if tx2.Error != nil { return nil, tx.Error } + resp.Code = string(200) resp.Msg = "success" resp.Data = "participantId:" + strconv.FormatInt(participant.Id, 10) diff --git a/api/internal/types/types.go b/api/internal/types/types.go index 91420796..76ef5b7d 100644 --- a/api/internal/types/types.go +++ b/api/internal/types/types.go @@ -3463,6 +3463,22 @@ type ShowNodeDetailsResp struct { ErrorMsg string `json:"errorMsg,omitempty"` } +type GetClusterListReq struct { + Id int64 `form:"id"` +} + +type GetClusterListResp struct { + Clusters []ClusterInfo `json:"clusters"` +} + +type ClusterInfo struct { + Id int64 `json:"id"` + Name string `json:"name"` + Address string `json:"address"` + Token string `json:"token"` + MetricsUrl string `json:"metricsUrl"` +} + type ControllerMetricsReq struct { Metrics []string `form:"metrics"` ParticipantId int64 `form:"participantId"` diff --git a/go.mod b/go.mod index 1795798b..d043b053 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,8 @@ module gitlink.org.cn/jcce-pcm/pcm-coordinator -go 1.20 +go 1.21 + +toolchain go1.21.0 require ( github.com/JCCE-nudt/zero-contrib/zrpc/registry/nacos v0.0.0-20230419021610-13bbc83fbc3c