From bf4d6eee354f7f2612b0a300365d601afbca19cf Mon Sep 17 00:00:00 2001 From: zhangwei <894646498@qq.com> Date: Mon, 28 Aug 2023 18:26:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E9=98=9F=E5=88=97=E8=B5=84?= =?UTF-8?q?=E6=BA=90=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Former-commit-id: 0ca3552e497b953d07121f8439c4aac6b21d8d24 --- api/desc/core/pcm-core.api | 28 ++--- api/desc/hpc/pcm-hpc.api | 6 +- api/internal/logic/core/nodeassetslogic.go | 14 +-- api/internal/logic/hpc/queueassetslogic.go | 12 +-- api/internal/types/types.go | 24 +++-- model/scnodeavailinfomodel.go | 27 ----- model/scnodeavailinfomodel_gen.go | 101 ------------------ .../reportavailablelogic.go | 2 +- 8 files changed, 38 insertions(+), 176 deletions(-) delete mode 100755 model/scnodeavailinfomodel.go diff --git a/api/desc/core/pcm-core.api b/api/desc/core/pcm-core.api index 01681774..e3b73686 100644 --- a/api/desc/core/pcm-core.api +++ b/api/desc/core/pcm-core.api @@ -425,20 +425,20 @@ type ResultData struct { Data MetricData `json:"data"` } -type NodeAssetsResp{ - NodeAssets []NodeAsset `json:"nodeAssets"` - +type NodeAssetsResp { + NodeAssets []NodeAsset `json:"nodeAssets"` } -type NodeAsset{ - NodeName string `db:"node_name"` // 节点名称 - CpuTotal int64 `db:"cpu_total"` // cpu核数 - CpuUsable float64 `db:"cpu_usable"` // cpu可用率 - DiskTotal int64 `db:"disk_total"` // 磁盘空间 - DiskAvail int64 `db:"disk_avail"` // 磁盘可用空间 - MemTotal int64 `db:"mem_total"` // 内存总数 - MemAvail int64 `db:"mem_avail"` // 内存可用数 - GpuTotal int64 `db:"gpu_total"` // gpu总数 - GpuAvail int64 `db:"gpu_avail"` // gpu可用数 - ParticipantId int64 `db:"participant_id"` // 集群动态信息id +type NodeAsset { + TenantName string `json:"tenantName"` //租户名称 + NodeName string `json:"NodeName"` // 节点名称 + CpuTotal int64 `json:"CpuTotal"` // cpu核数 + CpuUsable float64 `json:"CpuUsable"` // cpu可用率 + DiskTotal int64 `json:"DiskTotal"` // 磁盘空间 + DiskAvail int64 `json:"DiskAvail"` // 磁盘可用空间 + MemTotal int64 `json:"MemTotal"` // 内存总数 + MemAvail int64 `json:"MemAvail"` // 内存可用数 + GpuTotal int64 `json:"GpuTotal"` // gpu总数 + GpuAvail int64 `json:"GpuAvail"` // gpu可用数 + ParticipantId int64 `json:"ParticipantId"` // 集群动态信息id } \ No newline at end of file diff --git a/api/desc/hpc/pcm-hpc.api b/api/desc/hpc/pcm-hpc.api index 2adf6347..2ced78d2 100644 --- a/api/desc/hpc/pcm-hpc.api +++ b/api/desc/hpc/pcm-hpc.api @@ -49,11 +49,11 @@ type ( type QueueAssetsResp { QueueAssets []QueueAsset `json:"queueAsset"` - } -type QueueAsset{ +type QueueAsset { + TenantName string `json:"tenantName"` //租户名称 ParticipantId int64 `json:"participantId"` - AclHosts string `json:"aclHosts"` + AclHosts string `json:"aclHosts"` // 可用节点,多个节点用逗号隔开 QueNodes string `json:"queNodes"` //队列节点总数 QueMinNodect string `json:"queMinNodect,omitempty"` //队列最小节点数 QueMaxNgpus string `json:"queMaxNgpus,omitempty"` //队列最大GPU卡数 diff --git a/api/internal/logic/core/nodeassetslogic.go b/api/internal/logic/core/nodeassetslogic.go index 0522874c..ce73175a 100644 --- a/api/internal/logic/core/nodeassetslogic.go +++ b/api/internal/logic/core/nodeassetslogic.go @@ -2,8 +2,6 @@ package core import ( "context" - "gitlink.org.cn/jcce-pcm/pcm-coordinator/model" - "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc" "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types" @@ -25,17 +23,13 @@ func NewNodeAssetsLogic(ctx context.Context, svcCtx *svc.ServiceContext) *NodeAs } func (l *NodeAssetsLogic) NodeAssets() (resp *types.NodeAssetsResp, err error) { - // todo: add your logic here and delete this line // 查询数据库系节点动态资源信息 - var nodeAvailInfos []model.ScNodeAvailInfo - tx := l.svcCtx.DbEngin.Find(&nodeAvailInfos).Group("participant_id") + + nodeResp := types.NodeAssetsResp{} + tx := l.svcCtx.DbEngin.Raw("SELECT nai.*,ti.tenant_name FROM sc_node_avail_info nai left join sc_participant_phy_info ppi on ppi.id = nai.participant_id left JOIN sc_tenant_info ti on ti.id = ppi.tenant_id WHERE nai.created_time IN ( SELECT MAX( created_time ) FROM sc_node_avail_info WHERE deleted_flag = 0 GROUP BY participant_id, node_name ) ").Scan(&nodeResp.NodeAssets) if tx.Error != nil { logx.Error(err) return nil, tx.Error } - - //queueResp := types.QueueAssetsResp{} - //tool.Convert(queuePhyInfos, &queueResp.QueueAssets) - //return &queueResp, nil - return + return &nodeResp, nil } diff --git a/api/internal/logic/hpc/queueassetslogic.go b/api/internal/logic/hpc/queueassetslogic.go index 9a9dda7d..7a4165a9 100644 --- a/api/internal/logic/hpc/queueassetslogic.go +++ b/api/internal/logic/hpc/queueassetslogic.go @@ -2,9 +2,6 @@ package hpc import ( "context" - "gitlink.org.cn/jcce-pcm/pcm-coordinator/model" - "gitlink.org.cn/jcce-pcm/utils/tool" - "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc" "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types" @@ -27,14 +24,11 @@ func NewQueueAssetsLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Queue func (l *QueueAssetsLogic) QueueAssets() (resp *types.QueueAssetsResp, err error) { // 查询数据库队列资源信息 - var queuePhyInfos []model.ScQueuePhyInfo - tx := l.svcCtx.DbEngin.Find(&queuePhyInfos) + var queueAssetsResp types.QueueAssetsResp + tx := l.svcCtx.DbEngin.Raw("SELECT qpi.*,ti.tenant_name FROM sc_queue_phy_info qpi left join sc_participant_phy_info ppi on ppi.id = qpi.participant_id left JOIN sc_tenant_info ti on ti.id = ppi.tenant_id WHERE qpi.created_time IN ( SELECT MAX( created_time ) FROM sc_queue_phy_info WHERE deleted_flag = 0 GROUP BY participant_id, queue_name ) ").Scan(&queueAssetsResp.QueueAssets) if tx.Error != nil { logx.Error(err) return nil, tx.Error } - - queueResp := types.QueueAssetsResp{} - tool.Convert(queuePhyInfos, &queueResp.QueueAssets) - return &queueResp, nil + return &queueAssetsResp, nil } diff --git a/api/internal/types/types.go b/api/internal/types/types.go index 4b669b38..47575b7d 100644 --- a/api/internal/types/types.go +++ b/api/internal/types/types.go @@ -400,16 +400,17 @@ type NodeAssetsResp struct { } type NodeAsset struct { - NodeName string `db:"node_name"` // 节点名称 - CpuTotal int64 `db:"cpu_total"` // cpu核数 - CpuUsable float64 `db:"cpu_usable"` // cpu可用率 - DiskTotal int64 `db:"disk_total"` // 磁盘空间 - DiskAvail int64 `db:"disk_avail"` // 磁盘可用空间 - MemTotal int64 `db:"mem_total"` // 内存总数 - MemAvail int64 `db:"mem_avail"` // 内存可用数 - GpuTotal int64 `db:"gpu_total"` // gpu总数 - GpuAvail int64 `db:"gpu_avail"` // gpu可用数 - ParticipantId int64 `db:"participant_id"` // 集群动态信息id + TenantName string `json:"tenantName"` //租户名称 + NodeName string `json:"NodeName"` // 节点名称 + CpuTotal int64 `json:"CpuTotal"` // cpu核数 + CpuUsable float64 `json:"CpuUsable"` // cpu可用率 + DiskTotal int64 `json:"DiskTotal"` // 磁盘空间 + DiskAvail int64 `json:"DiskAvail"` // 磁盘可用空间 + MemTotal int64 `json:"MemTotal"` // 内存总数 + MemAvail int64 `json:"MemAvail"` // 内存可用数 + GpuTotal int64 `json:"GpuTotal"` // gpu总数 + GpuAvail int64 `json:"GpuAvail"` // gpu可用数 + ParticipantId int64 `json:"ParticipantId"` // 集群动态信息id } type Job struct { @@ -453,8 +454,9 @@ type QueueAssetsResp struct { } type QueueAsset struct { + TenantName string `json:"tenantName"` //租户名称 ParticipantId int64 `json:"participantId"` - AclHosts string `json:"aclHosts"` + AclHosts string `json:"aclHosts"` // 可用节点,多个节点用逗号隔开 QueNodes string `json:"queNodes"` //队列节点总数 QueMinNodect string `json:"queMinNodect,omitempty"` //队列最小节点数 QueMaxNgpus string `json:"queMaxNgpus,omitempty"` //队列最大GPU卡数 diff --git a/model/scnodeavailinfomodel.go b/model/scnodeavailinfomodel.go deleted file mode 100755 index c494655f..00000000 --- a/model/scnodeavailinfomodel.go +++ /dev/null @@ -1,27 +0,0 @@ -package model - -import ( - "github.com/zeromicro/go-zero/core/stores/cache" - "github.com/zeromicro/go-zero/core/stores/sqlx" -) - -var _ ScNodeAvailInfoModel = (*customScNodeAvailInfoModel)(nil) - -type ( - // ScNodeAvailInfoModel is an interface to be customized, add more methods here, - // and implement the added methods in customScNodeAvailInfoModel. - ScNodeAvailInfoModel interface { - scNodeAvailInfoModel - } - - customScNodeAvailInfoModel struct { - *defaultScNodeAvailInfoModel - } -) - -// NewScNodeAvailInfoModel returns a model for the database table. -func NewScNodeAvailInfoModel(conn sqlx.SqlConn, c cache.CacheConf, opts ...cache.Option) ScNodeAvailInfoModel { - return &customScNodeAvailInfoModel{ - defaultScNodeAvailInfoModel: newScNodeAvailInfoModel(conn, c, opts...), - } -} diff --git a/model/scnodeavailinfomodel_gen.go b/model/scnodeavailinfomodel_gen.go index e5276813..ab2657d6 100755 --- a/model/scnodeavailinfomodel_gen.go +++ b/model/scnodeavailinfomodel_gen.go @@ -3,41 +3,11 @@ package model import ( - "context" "database/sql" - "fmt" - "strings" "time" - - "github.com/zeromicro/go-zero/core/stores/builder" - "github.com/zeromicro/go-zero/core/stores/cache" - "github.com/zeromicro/go-zero/core/stores/sqlc" - "github.com/zeromicro/go-zero/core/stores/sqlx" - "github.com/zeromicro/go-zero/core/stringx" -) - -var ( - scNodeAvailInfoFieldNames = builder.RawFieldNames(&ScNodeAvailInfo{}) - scNodeAvailInfoRows = strings.Join(scNodeAvailInfoFieldNames, ",") - scNodeAvailInfoRowsExpectAutoSet = strings.Join(stringx.Remove(scNodeAvailInfoFieldNames, "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), ",") - scNodeAvailInfoRowsWithPlaceHolder = strings.Join(stringx.Remove(scNodeAvailInfoFieldNames, "`id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), "=?,") + "=?" - - cachePcmScNodeAvailInfoIdPrefix = "cache:pcm:scNodeAvailInfo:id:" ) type ( - scNodeAvailInfoModel interface { - Insert(ctx context.Context, data *ScNodeAvailInfo) (sql.Result, error) - FindOne(ctx context.Context, id int64) (*ScNodeAvailInfo, error) - Update(ctx context.Context, data *ScNodeAvailInfo) error - Delete(ctx context.Context, id int64) error - } - - defaultScNodeAvailInfoModel struct { - sqlc.CachedConn - table string - } - ScNodeAvailInfo struct { Id int64 `db:"id"` // id NodeName string `db:"node_name"` // 节点名称 @@ -57,74 +27,3 @@ type ( UpdatedTime sql.NullTime `db:"updated_time"` // 更新时间 } ) - -func newScNodeAvailInfoModel(conn sqlx.SqlConn, c cache.CacheConf, opts ...cache.Option) *defaultScNodeAvailInfoModel { - return &defaultScNodeAvailInfoModel{ - CachedConn: sqlc.NewConn(conn, c, opts...), - table: "`sc_node_avail_info`", - } -} - -func (m *defaultScNodeAvailInfoModel) withSession(session sqlx.Session) *defaultScNodeAvailInfoModel { - return &defaultScNodeAvailInfoModel{ - CachedConn: m.CachedConn.WithSession(session), - table: "`sc_node_avail_info`", - } -} - -func (m *defaultScNodeAvailInfoModel) Delete(ctx context.Context, id int64) error { - pcmScNodeAvailInfoIdKey := fmt.Sprintf("%s%v", cachePcmScNodeAvailInfoIdPrefix, id) - _, err := m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) { - query := fmt.Sprintf("delete from %s where `id` = ?", m.table) - return conn.ExecCtx(ctx, query, id) - }, pcmScNodeAvailInfoIdKey) - return err -} - -func (m *defaultScNodeAvailInfoModel) FindOne(ctx context.Context, id int64) (*ScNodeAvailInfo, error) { - pcmScNodeAvailInfoIdKey := fmt.Sprintf("%s%v", cachePcmScNodeAvailInfoIdPrefix, id) - var resp ScNodeAvailInfo - err := m.QueryRowCtx(ctx, &resp, pcmScNodeAvailInfoIdKey, func(ctx context.Context, conn sqlx.SqlConn, v any) error { - query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", scNodeAvailInfoRows, m.table) - return conn.QueryRowCtx(ctx, v, query, id) - }) - switch err { - case nil: - return &resp, nil - case sqlc.ErrNotFound: - return nil, ErrNotFound - default: - return nil, err - } -} - -func (m *defaultScNodeAvailInfoModel) Insert(ctx context.Context, data *ScNodeAvailInfo) (sql.Result, error) { - pcmScNodeAvailInfoIdKey := fmt.Sprintf("%s%v", cachePcmScNodeAvailInfoIdPrefix, data.Id) - ret, err := m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) { - query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, scNodeAvailInfoRowsExpectAutoSet) - return conn.ExecCtx(ctx, query, data.Id, data.NodeName, data.CpuTotal, data.CpuUsable, data.DiskTotal, data.DiskAvail, data.MemTotal, data.MemAvail, data.GpuTotal, data.GpuAvail, data.ParticipantId, data.DeletedFlag, data.CreatedBy, data.CreatedTime, data.UpdatedBy, data.UpdatedTime) - }, pcmScNodeAvailInfoIdKey) - return ret, err -} - -func (m *defaultScNodeAvailInfoModel) Update(ctx context.Context, data *ScNodeAvailInfo) error { - pcmScNodeAvailInfoIdKey := fmt.Sprintf("%s%v", cachePcmScNodeAvailInfoIdPrefix, data.Id) - _, err := m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) { - query := fmt.Sprintf("update %s set %s where `id` = ?", m.table, scNodeAvailInfoRowsWithPlaceHolder) - return conn.ExecCtx(ctx, query, data.NodeName, data.CpuTotal, data.CpuUsable, data.DiskTotal, data.DiskAvail, data.MemTotal, data.MemAvail, data.GpuTotal, data.GpuAvail, data.ParticipantId, data.DeletedFlag, data.CreatedBy, data.CreatedTime, data.UpdatedBy, data.UpdatedTime, data.Id) - }, pcmScNodeAvailInfoIdKey) - return err -} - -func (m *defaultScNodeAvailInfoModel) formatPrimary(primary any) string { - return fmt.Sprintf("%s%v", cachePcmScNodeAvailInfoIdPrefix, primary) -} - -func (m *defaultScNodeAvailInfoModel) queryPrimary(ctx context.Context, conn sqlx.SqlConn, v, primary any) error { - query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", scNodeAvailInfoRows, m.table) - return conn.QueryRowCtx(ctx, v, query, primary) -} - -func (m *defaultScNodeAvailInfoModel) tableName() string { - return m.table -} diff --git a/rpc/internal/logic/participantservice/reportavailablelogic.go b/rpc/internal/logic/participantservice/reportavailablelogic.go index 36ca3dc3..dcf1a947 100644 --- a/rpc/internal/logic/participantservice/reportavailablelogic.go +++ b/rpc/internal/logic/participantservice/reportavailablelogic.go @@ -75,7 +75,7 @@ func (l *ReportAvailableLogic) ReportAvailable(in *pcmCore.ParticipantAvailReq) nodeInfo := &model.ScNodeAvailInfo{} tool.Convert(info, nodeInfo) nodeInfo.CreatedTime = time.Now() - nodeInfo.ParticipantId = participantAvailInfo.Id + nodeInfo.ParticipantId = participantAvailInfo.ParticipantId if nodeInfo.Id == 0 { nodeInfo.Id = tool.GenSnowflakeID() }