|  |  |  | @ -3,6 +3,7 @@ package data | 
			
		
	
		
			
				
					|  |  |  |  | import ( | 
			
		
	
		
			
				
					|  |  |  |  | 	"context" | 
			
		
	
		
			
				
					|  |  |  |  | 	"fmt" | 
			
		
	
		
			
				
					|  |  |  |  | 	"k8s.io/client-go/tools/cache" | 
			
		
	
		
			
				
					|  |  |  |  | 	"sync" | 
			
		
	
		
			
				
					|  |  |  |  | 	"time" | 
			
		
	
		
			
				
					|  |  |  |  | 	"vgpu/internal/biz" | 
			
		
	
	
		
			
				
					|  |  |  | @ -15,24 +16,21 @@ import ( | 
			
		
	
		
			
				
					|  |  |  |  | 	k8stypes "k8s.io/apimachinery/pkg/types" | 
			
		
	
		
			
				
					|  |  |  |  | 	"k8s.io/client-go/informers" | 
			
		
	
		
			
				
					|  |  |  |  | 	listerscorev1 "k8s.io/client-go/listers/core/v1" | 
			
		
	
		
			
				
					|  |  |  |  | 	"k8s.io/client-go/tools/cache" | 
			
		
	
		
			
				
					|  |  |  |  | ) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | type podRepo struct { | 
			
		
	
		
			
				
					|  |  |  |  | 	data      *Data | 
			
		
	
		
			
				
					|  |  |  |  | 	podLister listerscorev1.PodLister | 
			
		
	
		
			
				
					|  |  |  |  | 	pods      map[k8stypes.UID]*biz.PodInfo | 
			
		
	
		
			
				
					|  |  |  |  | 	allPods   []*biz.PodInfo | 
			
		
	
		
			
				
					|  |  |  |  | 	mutex     sync.RWMutex | 
			
		
	
		
			
				
					|  |  |  |  | 	log       *log.Helper | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | func NewPodRepo(data *Data, logger log.Logger) biz.PodRepo { | 
			
		
	
		
			
				
					|  |  |  |  | 	repo := &podRepo{ | 
			
		
	
		
			
				
					|  |  |  |  | 		data:    data, | 
			
		
	
		
			
				
					|  |  |  |  | 		pods:    make(map[k8stypes.UID]*biz.PodInfo), | 
			
		
	
		
			
				
					|  |  |  |  | 		allPods: []*biz.PodInfo{}, | 
			
		
	
		
			
				
					|  |  |  |  | 		log:     log.NewHelper(logger), | 
			
		
	
		
			
				
					|  |  |  |  | 		data: data, | 
			
		
	
		
			
				
					|  |  |  |  | 		pods: make(map[k8stypes.UID]*biz.PodInfo), | 
			
		
	
		
			
				
					|  |  |  |  | 		log:  log.NewHelper(logger), | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 	repo.init() | 
			
		
	
		
			
				
					|  |  |  |  | 	return repo | 
			
		
	
	
		
			
				
					|  |  |  | @ -59,8 +57,7 @@ func (r *podRepo) onAddPod(obj interface{}) { | 
			
		
	
		
			
				
					|  |  |  |  | 		return | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 	nodeID, ok := pod.Annotations[util.AssignedNodeAnnotations] | 
			
		
	
		
			
				
					|  |  |  |  | 	tpiID := pod.Labels["tpi-id"] | 
			
		
	
		
			
				
					|  |  |  |  | 	if !ok && tpiID == "" { | 
			
		
	
		
			
				
					|  |  |  |  | 	if !ok { | 
			
		
	
		
			
				
					|  |  |  |  | 		return | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 	if biz.IsPodInTerminatedState(pod) { | 
			
		
	
	
		
			
				
					|  |  |  | @ -84,8 +81,7 @@ func (r *podRepo) onDeletedPod(obj interface{}) { | 
			
		
	
		
			
				
					|  |  |  |  | 		return | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 	_, ok = pod.Annotations[util.AssignedNodeAnnotations] | 
			
		
	
		
			
				
					|  |  |  |  | 	tpiID := pod.Labels["tpi-id"] | 
			
		
	
		
			
				
					|  |  |  |  | 	if !ok && tpiID == "" { | 
			
		
	
		
			
				
					|  |  |  |  | 	if !ok { | 
			
		
	
		
			
				
					|  |  |  |  | 		return | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 	r.delPod(pod) | 
			
		
	
	
		
			
				
					|  |  |  | @ -98,7 +94,6 @@ func (r *podRepo) addPod(pod *corev1.Pod, nodeID string, devices biz.PodDevices) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	pi := &biz.PodInfo{Name: pod.Name, UID: pod.UID, Namespace: pod.Namespace, NodeID: nodeID, Devices: devices, Ctrs: ctrs, Labels: pod.Labels} | 
			
		
	
		
			
				
					|  |  |  |  | 	r.pods[pod.UID] = pi | 
			
		
	
		
			
				
					|  |  |  |  | 	r.allPods = append(r.allPods, pi) | 
			
		
	
		
			
				
					|  |  |  |  | 	r.log.Infof("Pod added: Name: %s, UID: %s, Namespace: %s, NodeID: %s", pod.Name, pod.UID, pod.Namespace, nodeID) | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -123,10 +118,10 @@ func (r *podRepo) fetchContainerInfo(pod *corev1.Pod) []*biz.Container { | 
			
		
	
		
			
				
					|  |  |  |  | 		copier.Copy(&bizContainerDevices, pds) | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 	if len(bizContainerDevices) < 1 { | 
			
		
	
		
			
				
					|  |  |  |  | 		for range pod.Spec.Containers { | 
			
		
	
		
			
				
					|  |  |  |  | 			bizContainerDevices = append(bizContainerDevices, biz.ContainerDevices{}) | 
			
		
	
		
			
				
					|  |  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  |  | 		//return containers
 | 
			
		
	
		
			
				
					|  |  |  |  | 		//for range pod.Spec.Containers {
 | 
			
		
	
		
			
				
					|  |  |  |  | 		//	bizContainerDevices = append(bizContainerDevices, biz.ContainerDevices{})
 | 
			
		
	
		
			
				
					|  |  |  |  | 		//}
 | 
			
		
	
		
			
				
					|  |  |  |  | 		return containers | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	ctrIdMaps := map[string]string{} | 
			
		
	
	
		
			
				
					|  |  |  | 
 |