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

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)
}