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.

47 lines
1.0 KiB

package nvidia
import (
"github.com/go-kratos/kratos/v2/log"
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/labels"
"vgpu/internal/biz"
"vgpu/internal/data/prom"
"vgpu/internal/provider/util"
)
type Nvidia struct {
prom *prom.Client
log *log.Helper
labelSelector string
}
func NewNvidia(prom *prom.Client, log *log.Helper, labelSelector string) *Nvidia {
return &Nvidia{
prom: prom,
log: log,
labelSelector: labelSelector,
}
}
func (n *Nvidia) GetNodeDevicePluginLabels() (labels.Selector, error) {
return labels.Parse(n.labelSelector)
}
func (n *Nvidia) GetProvider() string {
return biz.NvidiaGPUDevice
}
func (n *Nvidia) FetchDevices(node *corev1.Node) ([]*util.DeviceInfo, error) {
var err error
var deviceInfos []*util.DeviceInfo
deviceEncode, ok := node.Annotations[RegisterAnnos]
if !ok {
n.log.Warnf("%s node cloud not get hami.io/node-nvidia-register annotation", node.Name)
return deviceInfos, nil
}
deviceInfos, err = util.DecodeNodeDevices(deviceEncode, n.log)
return deviceInfos, err
}