Wrap errors from DefaultPreemption and InterPodAffinity plugins
This commit is contained in:
		@@ -624,7 +624,7 @@ func selectVictimsOnNode(
 | 
				
			|||||||
		if corev1helpers.PodPriority(pi.Pod) < podPriority {
 | 
							if corev1helpers.PodPriority(pi.Pod) < podPriority {
 | 
				
			||||||
			potentialVictims = append(potentialVictims, pi)
 | 
								potentialVictims = append(potentialVictims, pi)
 | 
				
			||||||
			if err := removePod(pi); err != nil {
 | 
								if err := removePod(pi); err != nil {
 | 
				
			||||||
				return nil, 0, framework.NewStatus(framework.Error, err.Error())
 | 
									return nil, 0, framework.AsStatus(err)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -669,7 +669,7 @@ func selectVictimsOnNode(
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	for _, p := range violatingVictims {
 | 
						for _, p := range violatingVictims {
 | 
				
			||||||
		if fits, err := reprievePod(p); err != nil {
 | 
							if fits, err := reprievePod(p); err != nil {
 | 
				
			||||||
			return nil, 0, framework.NewStatus(framework.Error, err.Error())
 | 
								return nil, 0, framework.AsStatus(err)
 | 
				
			||||||
		} else if !fits {
 | 
							} else if !fits {
 | 
				
			||||||
			numViolatingVictim++
 | 
								numViolatingVictim++
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -677,7 +677,7 @@ func selectVictimsOnNode(
 | 
				
			|||||||
	// Now we try to reprieve non-violating victims.
 | 
						// Now we try to reprieve non-violating victims.
 | 
				
			||||||
	for _, p := range nonViolatingVictims {
 | 
						for _, p := range nonViolatingVictims {
 | 
				
			||||||
		if _, err := reprievePod(p); err != nil {
 | 
							if _, err := reprievePod(p); err != nil {
 | 
				
			||||||
			return nil, 0, framework.NewStatus(framework.Error, err.Error())
 | 
								return nil, 0, framework.AsStatus(err)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return victims, numViolatingVictim, framework.NewStatus(framework.Success)
 | 
						return victims, numViolatingVictim, framework.NewStatus(framework.Success)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -240,10 +240,10 @@ func (pl *InterPodAffinity) PreFilter(ctx context.Context, cycleState *framework
 | 
				
			|||||||
	var nodesWithRequiredAntiAffinityPods []*framework.NodeInfo
 | 
						var nodesWithRequiredAntiAffinityPods []*framework.NodeInfo
 | 
				
			||||||
	var err error
 | 
						var err error
 | 
				
			||||||
	if allNodes, err = pl.sharedLister.NodeInfos().List(); err != nil {
 | 
						if allNodes, err = pl.sharedLister.NodeInfos().List(); err != nil {
 | 
				
			||||||
		return framework.NewStatus(framework.Error, fmt.Sprintf("failed to list NodeInfos: %v", err))
 | 
							return framework.AsStatus(fmt.Errorf("failed to list NodeInfos: %w", err))
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if nodesWithRequiredAntiAffinityPods, err = pl.sharedLister.NodeInfos().HavePodsWithRequiredAntiAffinityList(); err != nil {
 | 
						if nodesWithRequiredAntiAffinityPods, err = pl.sharedLister.NodeInfos().HavePodsWithRequiredAntiAffinityList(); err != nil {
 | 
				
			||||||
		return framework.NewStatus(framework.Error, fmt.Sprintf("failed to list NodeInfos with pods with affinity: %v", err))
 | 
							return framework.AsStatus(fmt.Errorf("failed to list NodeInfos with pods with affinity: %w", err))
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	podInfo := framework.NewPodInfo(pod)
 | 
						podInfo := framework.NewPodInfo(pod)
 | 
				
			||||||
@@ -278,7 +278,7 @@ func (pl *InterPodAffinity) PreFilterExtensions() framework.PreFilterExtensions
 | 
				
			|||||||
func (pl *InterPodAffinity) AddPod(ctx context.Context, cycleState *framework.CycleState, podToSchedule *v1.Pod, podInfoToAdd *framework.PodInfo, nodeInfo *framework.NodeInfo) *framework.Status {
 | 
					func (pl *InterPodAffinity) AddPod(ctx context.Context, cycleState *framework.CycleState, podToSchedule *v1.Pod, podInfoToAdd *framework.PodInfo, nodeInfo *framework.NodeInfo) *framework.Status {
 | 
				
			||||||
	state, err := getPreFilterState(cycleState)
 | 
						state, err := getPreFilterState(cycleState)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return framework.NewStatus(framework.Error, err.Error())
 | 
							return framework.AsStatus(err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	state.updateWithPod(podInfoToAdd, nodeInfo.Node(), 1)
 | 
						state.updateWithPod(podInfoToAdd, nodeInfo.Node(), 1)
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
@@ -288,7 +288,7 @@ func (pl *InterPodAffinity) AddPod(ctx context.Context, cycleState *framework.Cy
 | 
				
			|||||||
func (pl *InterPodAffinity) RemovePod(ctx context.Context, cycleState *framework.CycleState, podToSchedule *v1.Pod, podInfoToRemove *framework.PodInfo, nodeInfo *framework.NodeInfo) *framework.Status {
 | 
					func (pl *InterPodAffinity) RemovePod(ctx context.Context, cycleState *framework.CycleState, podToSchedule *v1.Pod, podInfoToRemove *framework.PodInfo, nodeInfo *framework.NodeInfo) *framework.Status {
 | 
				
			||||||
	state, err := getPreFilterState(cycleState)
 | 
						state, err := getPreFilterState(cycleState)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return framework.NewStatus(framework.Error, err.Error())
 | 
							return framework.AsStatus(err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	state.updateWithPod(podInfoToRemove, nodeInfo.Node(), -1)
 | 
						state.updateWithPod(podInfoToRemove, nodeInfo.Node(), -1)
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
@@ -378,7 +378,7 @@ func (pl *InterPodAffinity) Filter(ctx context.Context, cycleState *framework.Cy
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	state, err := getPreFilterState(cycleState)
 | 
						state, err := getPreFilterState(cycleState)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return framework.NewStatus(framework.Error, err.Error())
 | 
							return framework.AsStatus(err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if !satisfyPodAffinity(state, nodeInfo) {
 | 
						if !satisfyPodAffinity(state, nodeInfo) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -137,7 +137,7 @@ func (pl *InterPodAffinity) PreScore(
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if pl.sharedLister == nil {
 | 
						if pl.sharedLister == nil {
 | 
				
			||||||
		return framework.NewStatus(framework.Error, fmt.Sprintf("InterPodAffinity PreScore with empty shared lister found"))
 | 
							return framework.NewStatus(framework.Error, "empty shared lister in InterPodAffinity PreScore")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	affinity := pod.Spec.Affinity
 | 
						affinity := pod.Spec.Affinity
 | 
				
			||||||
@@ -151,19 +151,19 @@ func (pl *InterPodAffinity) PreScore(
 | 
				
			|||||||
	if hasPreferredAffinityConstraints || hasPreferredAntiAffinityConstraints {
 | 
						if hasPreferredAffinityConstraints || hasPreferredAntiAffinityConstraints {
 | 
				
			||||||
		allNodes, err = pl.sharedLister.NodeInfos().List()
 | 
							allNodes, err = pl.sharedLister.NodeInfos().List()
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			framework.NewStatus(framework.Error, fmt.Sprintf("get all nodes from shared lister error, err: %v", err))
 | 
								framework.AsStatus(fmt.Errorf("failed to get all nodes from shared lister: %w", err))
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		allNodes, err = pl.sharedLister.NodeInfos().HavePodsWithAffinityList()
 | 
							allNodes, err = pl.sharedLister.NodeInfos().HavePodsWithAffinityList()
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			framework.NewStatus(framework.Error, fmt.Sprintf("get pods with affinity list error, err: %v", err))
 | 
								framework.AsStatus(fmt.Errorf("failed to get pods with affinity list: %w", err))
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	podInfo := framework.NewPodInfo(pod)
 | 
						podInfo := framework.NewPodInfo(pod)
 | 
				
			||||||
	if podInfo.ParseError != nil {
 | 
						if podInfo.ParseError != nil {
 | 
				
			||||||
		// Ideally we never reach here, because errors will be caught by PreFilter
 | 
							// Ideally we never reach here, because errors will be caught by PreFilter
 | 
				
			||||||
		return framework.NewStatus(framework.Error, fmt.Sprintf("parsing pod: %+v", podInfo.ParseError))
 | 
							return framework.AsStatus(fmt.Errorf("failed to parse pod: %w", podInfo.ParseError))
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	state := &preScoreState{
 | 
						state := &preScoreState{
 | 
				
			||||||
@@ -223,14 +223,14 @@ func getPreScoreState(cycleState *framework.CycleState) (*preScoreState, error)
 | 
				
			|||||||
// Note: the returned "score" is positive for pod-affinity, and negative for pod-antiaffinity.
 | 
					// Note: the returned "score" is positive for pod-affinity, and negative for pod-antiaffinity.
 | 
				
			||||||
func (pl *InterPodAffinity) Score(ctx context.Context, cycleState *framework.CycleState, pod *v1.Pod, nodeName string) (int64, *framework.Status) {
 | 
					func (pl *InterPodAffinity) Score(ctx context.Context, cycleState *framework.CycleState, pod *v1.Pod, nodeName string) (int64, *framework.Status) {
 | 
				
			||||||
	nodeInfo, err := pl.sharedLister.NodeInfos().Get(nodeName)
 | 
						nodeInfo, err := pl.sharedLister.NodeInfos().Get(nodeName)
 | 
				
			||||||
	if err != nil || nodeInfo.Node() == nil {
 | 
						if err != nil {
 | 
				
			||||||
		return 0, framework.NewStatus(framework.Error, fmt.Sprintf("getting node %q from Snapshot: %v, node is nil: %v", nodeName, err, nodeInfo.Node() == nil))
 | 
							return 0, framework.AsStatus(fmt.Errorf("failed to get node %q from Snapshot: %w", nodeName, err))
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	node := nodeInfo.Node()
 | 
						node := nodeInfo.Node()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	s, err := getPreScoreState(cycleState)
 | 
						s, err := getPreScoreState(cycleState)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return 0, framework.NewStatus(framework.Error, err.Error())
 | 
							return 0, framework.AsStatus(err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	var score int64
 | 
						var score int64
 | 
				
			||||||
	for tpKey, tpValues := range s.topologyScore {
 | 
						for tpKey, tpValues := range s.topologyScore {
 | 
				
			||||||
@@ -246,7 +246,7 @@ func (pl *InterPodAffinity) Score(ctx context.Context, cycleState *framework.Cyc
 | 
				
			|||||||
func (pl *InterPodAffinity) NormalizeScore(ctx context.Context, cycleState *framework.CycleState, pod *v1.Pod, scores framework.NodeScoreList) *framework.Status {
 | 
					func (pl *InterPodAffinity) NormalizeScore(ctx context.Context, cycleState *framework.CycleState, pod *v1.Pod, scores framework.NodeScoreList) *framework.Status {
 | 
				
			||||||
	s, err := getPreScoreState(cycleState)
 | 
						s, err := getPreScoreState(cycleState)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return framework.NewStatus(framework.Error, err.Error())
 | 
							return framework.AsStatus(err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if len(s.topologyScore) == 0 {
 | 
						if len(s.topologyScore) == 0 {
 | 
				
			||||||
		return nil
 | 
							return nil
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user