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