You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
113 lines
2.9 KiB
113 lines
2.9 KiB
package biz
|
|
|
|
import (
|
|
"context"
|
|
"vgpu/internal/database"
|
|
|
|
"github.com/go-kratos/kratos/v2/log"
|
|
)
|
|
|
|
type Node struct {
|
|
Name string
|
|
IP string
|
|
IsSchedulable bool
|
|
IsReady bool
|
|
Uid string
|
|
OSImage string
|
|
OperatingSystem string
|
|
KernelVersion string
|
|
ContainerRuntimeVersion string
|
|
KubeletVersion string
|
|
KubeProxyVersion string
|
|
Architecture string
|
|
CreationTimestamp string
|
|
Devices []*DeviceInfo
|
|
CPUCores int64 // CPU 核数
|
|
GPUCount int64 // 显卡数量
|
|
TotalMemory int64 // 总内存(字节)
|
|
AvailableMemory int64 // 可用内存(字节)
|
|
DiskTotal int64 // 磁盘总大小(字节)
|
|
StorageNum int64
|
|
Lables map[string]string
|
|
}
|
|
|
|
type DeviceInfo struct {
|
|
Index int
|
|
Id string
|
|
AliasId string
|
|
Count int32
|
|
Devmem int32
|
|
Devcore int32
|
|
Type string
|
|
Numa int
|
|
Mode string
|
|
Health bool
|
|
NodeName string
|
|
NodeUid string
|
|
Provider string
|
|
Driver string
|
|
}
|
|
|
|
type DeviceTotal struct {
|
|
VgpuCount int32
|
|
Cores int32
|
|
Memory int32
|
|
}
|
|
|
|
type NodeRepo interface {
|
|
ListAll(context.Context) ([]*Node, error)
|
|
ListAllV2(context.Context) ([]*Node, error)
|
|
GetNode(context.Context, string) (*Node, error)
|
|
ListAllDevices(context.Context) ([]*DeviceInfo, error)
|
|
FindDeviceByAliasId(string) (*DeviceInfo, error)
|
|
EnableNode(context.Context, string) error
|
|
DisableNode(context.Context, string) error
|
|
DiscoveredNode() ([]*database.Nodes, error)
|
|
JoinNode([]string) error
|
|
}
|
|
|
|
type NodeUsecase struct {
|
|
repo NodeRepo
|
|
log *log.Helper
|
|
}
|
|
|
|
func NewNodeUsecase(repo NodeRepo, logger log.Logger) *NodeUsecase {
|
|
return &NodeUsecase{repo: repo, log: log.NewHelper(logger)}
|
|
}
|
|
|
|
func (uc *NodeUsecase) ListAllNodes(ctx context.Context) ([]*Node, error) {
|
|
return uc.repo.ListAll(ctx)
|
|
}
|
|
|
|
func (uc *NodeUsecase) ListAllNodesV2(ctx context.Context) ([]*Node, error) {
|
|
return uc.repo.ListAllV2(ctx)
|
|
}
|
|
|
|
func (uc *NodeUsecase) GetNode(ctx context.Context, nodeName string) (*Node, error) {
|
|
return uc.repo.GetNode(ctx, nodeName)
|
|
}
|
|
|
|
func (uc *NodeUsecase) ListAllDevices(ctx context.Context) ([]*DeviceInfo, error) {
|
|
return uc.repo.ListAllDevices(ctx)
|
|
}
|
|
|
|
func (uc *NodeUsecase) FindDeviceByAliasId(aliasId string) (*DeviceInfo, error) {
|
|
return uc.repo.FindDeviceByAliasId(aliasId)
|
|
}
|
|
|
|
func (uc *NodeUsecase) EnableNode(ctx context.Context, nodeName string) error {
|
|
return uc.repo.EnableNode(ctx, nodeName)
|
|
}
|
|
|
|
func (uc *NodeUsecase) DisableNode(ctx context.Context, nodeName string) error {
|
|
return uc.repo.DisableNode(ctx, nodeName)
|
|
}
|
|
|
|
func (uc *NodeUsecase) DiscoveredNode() ([]*database.Nodes, error) {
|
|
return uc.repo.DiscoveredNode()
|
|
}
|
|
|
|
func (uc *NodeUsecase) JoinNode(nodeNames []string) error {
|
|
return uc.repo.JoinNode(nodeNames)
|
|
}
|