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