Unexport podRef in scheduling queue's nominator

This commit is contained in:
Maciej Skoczeń 2024-07-22 11:56:01 +00:00
parent e303808896
commit a7ad94f93b
3 changed files with 36 additions and 36 deletions

View File

@ -46,7 +46,7 @@ type nominator struct {
// nominatedPods is a map keyed by a node name and the value is a list of // nominatedPods is a map keyed by a node name and the value is a list of
// pods which are nominated to run on the node. These are pods which can be in // pods which are nominated to run on the node. These are pods which can be in
// the activeQ or unschedulablePods. // the activeQ or unschedulablePods.
nominatedPods map[string][]PodRef nominatedPods map[string][]podRef
// nominatedPodToNode is map keyed by a Pod UID to the node name where it is // nominatedPodToNode is map keyed by a Pod UID to the node name where it is
// nominated. // nominated.
nominatedPodToNode map[types.UID]string nominatedPodToNode map[types.UID]string
@ -55,7 +55,7 @@ type nominator struct {
func newPodNominator(podLister listersv1.PodLister) *nominator { func newPodNominator(podLister listersv1.PodLister) *nominator {
return &nominator{ return &nominator{
podLister: podLister, podLister: podLister,
nominatedPods: make(map[string][]PodRef), nominatedPods: make(map[string][]podRef),
nominatedPodToNode: make(map[types.UID]string), nominatedPodToNode: make(map[types.UID]string),
} }
} }
@ -100,12 +100,12 @@ func (npm *nominator) addNominatedPodUnlocked(logger klog.Logger, pi *framework.
npm.nominatedPodToNode[pi.Pod.UID] = nodeName npm.nominatedPodToNode[pi.Pod.UID] = nodeName
for _, np := range npm.nominatedPods[nodeName] { for _, np := range npm.nominatedPods[nodeName] {
if np.UID == pi.Pod.UID { if np.uid == pi.Pod.UID {
logger.V(4).Info("Pod already exists in the nominator", "pod", np.UID) logger.V(4).Info("Pod already exists in the nominator", "pod", np.uid)
return return
} }
} }
npm.nominatedPods[nodeName] = append(npm.nominatedPods[nodeName], PodToRef(pi.Pod)) npm.nominatedPods[nodeName] = append(npm.nominatedPods[nodeName], podToRef(pi.Pod))
} }
// UpdateNominatedPod updates the <oldPod> with <newPod>. // UpdateNominatedPod updates the <oldPod> with <newPod>.
@ -148,7 +148,7 @@ func (npm *nominator) deleteUnlocked(p *v1.Pod) {
return return
} }
for i, np := range npm.nominatedPods[nnn] { for i, np := range npm.nominatedPods[nnn] {
if np.UID == p.UID { if np.uid == p.UID {
npm.nominatedPods[nnn] = append(npm.nominatedPods[nnn][:i], npm.nominatedPods[nnn][i+1:]...) npm.nominatedPods[nnn] = append(npm.nominatedPods[nnn][:i], npm.nominatedPods[nnn][i+1:]...)
if len(npm.nominatedPods[nnn]) == 0 { if len(npm.nominatedPods[nnn]) == 0 {
delete(npm.nominatedPods, nnn) delete(npm.nominatedPods, nnn)
@ -159,7 +159,7 @@ func (npm *nominator) deleteUnlocked(p *v1.Pod) {
delete(npm.nominatedPodToNode, p.UID) delete(npm.nominatedPodToNode, p.UID)
} }
func (npm *nominator) nominatedPodsForNode(nodeName string) []PodRef { func (npm *nominator) nominatedPodsForNode(nodeName string) []podRef {
npm.nLock.RLock() npm.nLock.RLock()
defer npm.nLock.RUnlock() defer npm.nLock.RUnlock()
return slices.Clone(npm.nominatedPods[nodeName]) return slices.Clone(npm.nominatedPods[nodeName])
@ -170,26 +170,26 @@ func nominatedNodeName(pod *v1.Pod) string {
return pod.Status.NominatedNodeName return pod.Status.NominatedNodeName
} }
type PodRef struct { type podRef struct {
Name string name string
Namespace string namespace string
UID types.UID uid types.UID
} }
func PodToRef(pod *v1.Pod) PodRef { func podToRef(pod *v1.Pod) podRef {
return PodRef{ return podRef{
Name: pod.Name, name: pod.Name,
Namespace: pod.Namespace, namespace: pod.Namespace,
UID: pod.UID, uid: pod.UID,
} }
} }
func (np PodRef) ToPod() *v1.Pod { func (np podRef) toPod() *v1.Pod {
return &v1.Pod{ return &v1.Pod{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: np.Name, Name: np.name,
Namespace: np.Namespace, Namespace: np.namespace,
UID: np.UID, UID: np.uid,
}, },
} }
} }

View File

@ -1174,8 +1174,8 @@ func (p *PriorityQueue) PendingPods() ([]*v1.Pod, string) {
} }
// Note: this function assumes the caller locks both p.lock.RLock and p.activeQ.getLock().RLock. // Note: this function assumes the caller locks both p.lock.RLock and p.activeQ.getLock().RLock.
func (p *PriorityQueue) nominatedPodToInfo(np PodRef) *framework.PodInfo { func (p *PriorityQueue) nominatedPodToInfo(np podRef) *framework.PodInfo {
pod := np.ToPod() pod := np.toPod()
pInfoLookup := newQueuedPodInfoForLookup(pod) pInfoLookup := newQueuedPodInfoForLookup(pod)
queuedPodInfo, exists := p.activeQ.unlocked().Get(pInfoLookup) queuedPodInfo, exists := p.activeQ.unlocked().Get(pInfoLookup)

View File

@ -83,7 +83,7 @@ var (
) )
nominatorCmpOpts = []cmp.Option{ nominatorCmpOpts = []cmp.Option{
cmp.AllowUnexported(nominator{}), cmp.AllowUnexported(nominator{}, podRef{}),
cmpopts.IgnoreFields(nominator{}, "podLister", "nLock"), cmpopts.IgnoreFields(nominator{}, "podLister", "nLock"),
} }
@ -129,8 +129,8 @@ func TestPriorityQueue_Add(t *testing.T) {
medPriorityPodInfo.Pod.UID: "node1", medPriorityPodInfo.Pod.UID: "node1",
unschedulablePodInfo.Pod.UID: "node1", unschedulablePodInfo.Pod.UID: "node1",
}, },
nominatedPods: map[string][]PodRef{ nominatedPods: map[string][]podRef{
"node1": {PodToRef(medPriorityPodInfo.Pod), PodToRef(unschedulablePodInfo.Pod)}, "node1": {podToRef(medPriorityPodInfo.Pod), podToRef(unschedulablePodInfo.Pod)},
}, },
} }
if diff := cmp.Diff(q.nominator, expectedNominatedPods, nominatorCmpOpts...); diff != "" { if diff := cmp.Diff(q.nominator, expectedNominatedPods, nominatorCmpOpts...); diff != "" {
@ -2118,10 +2118,10 @@ func TestPriorityQueue_UpdateNominatedPodForNode(t *testing.T) {
highPriorityPodInfo.Pod.UID: "node2", highPriorityPodInfo.Pod.UID: "node2",
unschedulablePodInfo.Pod.UID: "node5", unschedulablePodInfo.Pod.UID: "node5",
}, },
nominatedPods: map[string][]PodRef{ nominatedPods: map[string][]podRef{
"node1": {PodToRef(medPriorityPodInfo.Pod)}, "node1": {podToRef(medPriorityPodInfo.Pod)},
"node2": {PodToRef(highPriorityPodInfo.Pod)}, "node2": {podToRef(highPriorityPodInfo.Pod)},
"node5": {PodToRef(unschedulablePodInfo.Pod)}, "node5": {podToRef(unschedulablePodInfo.Pod)},
}, },
} }
if diff := cmp.Diff(q.nominator, expectedNominatedPods, nominatorCmpOpts...); diff != "" { if diff := cmp.Diff(q.nominator, expectedNominatedPods, nominatorCmpOpts...); diff != "" {
@ -2143,10 +2143,10 @@ func TestPriorityQueue_UpdateNominatedPodForNode(t *testing.T) {
highPriorityPodInfo.Pod.UID: "node4", highPriorityPodInfo.Pod.UID: "node4",
unschedulablePodInfo.Pod.UID: "node5", unschedulablePodInfo.Pod.UID: "node5",
}, },
nominatedPods: map[string][]PodRef{ nominatedPods: map[string][]podRef{
"node1": {PodToRef(medPriorityPodInfo.Pod)}, "node1": {podToRef(medPriorityPodInfo.Pod)},
"node4": {PodToRef(highPriorityPodInfo.Pod)}, "node4": {podToRef(highPriorityPodInfo.Pod)},
"node5": {PodToRef(unschedulablePodInfo.Pod)}, "node5": {podToRef(unschedulablePodInfo.Pod)},
}, },
} }
if diff := cmp.Diff(q.nominator, expectedNominatedPods, nominatorCmpOpts...); diff != "" { if diff := cmp.Diff(q.nominator, expectedNominatedPods, nominatorCmpOpts...); diff != "" {
@ -2176,9 +2176,9 @@ func TestPriorityQueue_UpdateNominatedPodForNode(t *testing.T) {
medPriorityPodInfo.Pod.UID: "node1", medPriorityPodInfo.Pod.UID: "node1",
unschedulablePodInfo.Pod.UID: "node5", unschedulablePodInfo.Pod.UID: "node5",
}, },
nominatedPods: map[string][]PodRef{ nominatedPods: map[string][]podRef{
"node1": {PodToRef(medPriorityPodInfo.Pod)}, "node1": {podToRef(medPriorityPodInfo.Pod)},
"node5": {PodToRef(unschedulablePodInfo.Pod)}, "node5": {podToRef(unschedulablePodInfo.Pod)},
}, },
} }
if diff := cmp.Diff(q.nominator, expectedNominatedPods, nominatorCmpOpts...); diff != "" { if diff := cmp.Diff(q.nominator, expectedNominatedPods, nominatorCmpOpts...); diff != "" {