diff --git a/server/api/v1/node.proto b/server/api/v1/node.proto index 1ce2e52..2617383 100644 --- a/server/api/v1/node.proto +++ b/server/api/v1/node.proto @@ -124,6 +124,7 @@ message NodeReply { string architecture = 20; string creation_timestamp = 21; int64 disk_size = 22; + repeated string resource_pools = 23; } diff --git a/server/internal/database/resource_pool_db.go b/server/internal/database/resource_pool_db.go index 992719f..ad954de 100644 --- a/server/internal/database/resource_pool_db.go +++ b/server/internal/database/resource_pool_db.go @@ -149,6 +149,37 @@ func QueryDistinctNodes() ([]*Nodes, error) { return nodes, nil } +func QueryResourceNamesByIp(nodeIp string) ([]string, error) { + // 执行查询 + rows, err := db.Query("select pool_name from resource_pool where id in (select distinct pool_id from nodes where node_ip=?)", nodeIp) + if err != nil { + log.Infof("Query failed: %v", err) + return nil, err + } + defer rows.Close() + + // 存放结果的切片 + resourcePoolNames := make([]string, 0) + + // 遍历每一行 + for rows.Next() { + var name string + err := rows.Scan(&name) + if err != nil { + log.Infof("Scan failed: %v", err) + return nil, err + } + resourcePoolNames = append(resourcePoolNames, name) + } + + // 检查 rows 是否遍历中出错 + if err := rows.Err(); err != nil { + return nil, err + } + + return resourcePoolNames, nil +} + func InsertResourcePool(poolName string) (int64, error) { querySql := "INSERT INTO resource_pool(pool_name) VALUES (?)" diff --git a/server/internal/service/node.go b/server/internal/service/node.go index 5def2b2..ea52ef3 100644 --- a/server/internal/service/node.go +++ b/server/internal/service/node.go @@ -6,6 +6,7 @@ import ( "sort" "strconv" "vgpu/internal/biz" + "vgpu/internal/database" "github.com/jinzhu/copier" @@ -49,12 +50,18 @@ func (s *NodeService) GetAllNodes(ctx context.Context, req *pb.GetAllNodesReq) ( return nil, err } - coreTotal, memoryTotal, err := s.queryNodeMetrics(ctx, node.Name) - if err == nil { - nodeReply.CoreTotal = int64(coreTotal) - nodeReply.MemoryTotal = int64(memoryTotal) + resourcePoolNames, err := database.QueryResourceNamesByIp(node.IP) + if err != nil { + return nil, err } + nodeReply.ResourcePools = resourcePoolNames + //coreTotal, memoryTotal, err := s.queryNodeMetrics(ctx, node.Name) + //if err == nil { + // nodeReply.CoreTotal = int64(coreTotal) + // nodeReply.MemoryTotal = int64(memoryTotal) + //} + if filters.Ip != "" && filters.Ip != nodeReply.Ip { continue } diff --git a/server/openapi.yaml b/server/openapi.yaml index ad4b343..5647a34 100644 --- a/server/openapi.yaml +++ b/server/openapi.yaml @@ -300,6 +300,10 @@ components: type: string diskSize: type: string + resourcePools: + type: array + items: + type: string NodesReply: type: object properties: