Skip to content

Commit

Permalink
wrap errors in selectorspread and podtoplogyspread plugin
Browse files Browse the repository at this point in the history
  • Loading branch information
arghya88 committed Sep 28, 2020
1 parent c8ebc8a commit 8154dc9
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 17 deletions.
12 changes: 6 additions & 6 deletions pkg/scheduler/framework/plugins/podtopologyspread/filtering.go
Expand Up @@ -146,7 +146,7 @@ func (s *preFilterState) updateWithPod(updatedPod, preemptorPod *v1.Pod, node *v
func (pl *PodTopologySpread) PreFilter(ctx context.Context, cycleState *framework.CycleState, pod *v1.Pod) *framework.Status {
s, err := pl.calPreFilterState(pod)
if err != nil {
return framework.NewStatus(framework.Error, err.Error())
return framework.AsStatus(err)
}
cycleState.Write(preFilterStateKey, s)
return nil
Expand All @@ -161,7 +161,7 @@ func (pl *PodTopologySpread) PreFilterExtensions() framework.PreFilterExtensions
func (pl *PodTopologySpread) AddPod(ctx context.Context, cycleState *framework.CycleState, podToSchedule *v1.Pod, podToAdd *v1.Pod, nodeInfo *framework.NodeInfo) *framework.Status {
s, err := getPreFilterState(cycleState)
if err != nil {
return framework.NewStatus(framework.Error, err.Error())
return framework.AsStatus(err)
}

s.updateWithPod(podToAdd, podToSchedule, nodeInfo.Node(), 1)
Expand All @@ -172,7 +172,7 @@ func (pl *PodTopologySpread) AddPod(ctx context.Context, cycleState *framework.C
func (pl *PodTopologySpread) RemovePod(ctx context.Context, cycleState *framework.CycleState, podToSchedule *v1.Pod, podToRemove *v1.Pod, nodeInfo *framework.NodeInfo) *framework.Status {
s, err := getPreFilterState(cycleState)
if err != nil {
return framework.NewStatus(framework.Error, err.Error())
return framework.AsStatus(err)
}

s.updateWithPod(podToRemove, podToSchedule, nodeInfo.Node(), -1)
Expand All @@ -184,7 +184,7 @@ func getPreFilterState(cycleState *framework.CycleState) (*preFilterState, error
c, err := cycleState.Read(preFilterStateKey)
if err != nil {
// preFilterState doesn't exist, likely PreFilter wasn't invoked.
return nil, fmt.Errorf("error reading %q from cycleState: %v", preFilterStateKey, err)
return nil, fmt.Errorf("reading %q from cycleState: %v", preFilterStateKey, err)
}

s, ok := c.(*preFilterState)
Expand Down Expand Up @@ -276,12 +276,12 @@ func (pl *PodTopologySpread) calPreFilterState(pod *v1.Pod) (*preFilterState, er
func (pl *PodTopologySpread) Filter(ctx context.Context, cycleState *framework.CycleState, pod *v1.Pod, nodeInfo *framework.NodeInfo) *framework.Status {
node := nodeInfo.Node()
if node == nil {
return framework.NewStatus(framework.Error, "node not found")
return framework.AsStatus(fmt.Errorf("node not found"))
}

s, err := getPreFilterState(cycleState)
if err != nil {
return framework.NewStatus(framework.Error, err.Error())
return framework.AsStatus(err)
}

// However, "empty" preFilterState is legit which tolerates every toSchedule Pod.
Expand Down
Expand Up @@ -18,6 +18,7 @@ package podtopologyspread

import (
"context"
"fmt"
"reflect"
"testing"

Expand Down Expand Up @@ -1651,7 +1652,7 @@ func TestPreFilterDisabled(t *testing.T) {
p := &PodTopologySpread{}
cycleState := framework.NewCycleState()
gotStatus := p.Filter(context.Background(), cycleState, pod, nodeInfo)
wantStatus := framework.NewStatus(framework.Error, `error reading "PreFilterPodTopologySpread" from cycleState: not found`)
wantStatus := framework.AsStatus(fmt.Errorf(`reading "PreFilterPodTopologySpread" from cycleState: not found`))
if !reflect.DeepEqual(gotStatus, wantStatus) {
t.Errorf("status does not match: %v, want: %v", gotStatus, wantStatus)
}
Expand Down
14 changes: 7 additions & 7 deletions pkg/scheduler/framework/plugins/podtopologyspread/scoring.go
Expand Up @@ -113,7 +113,7 @@ func (pl *PodTopologySpread) PreScore(
) *framework.Status {
allNodes, err := pl.sharedLister.NodeInfos().List()
if err != nil {
return framework.NewStatus(framework.Error, fmt.Sprintf("error when getting all nodes: %v", err))
return framework.AsStatus(fmt.Errorf("getting all nodes: %w", err))
}

if len(filteredNodes) == 0 || len(allNodes) == 0 {
Expand All @@ -127,7 +127,7 @@ func (pl *PodTopologySpread) PreScore(
}
err = pl.initPreScoreState(state, pod, filteredNodes)
if err != nil {
return framework.NewStatus(framework.Error, fmt.Sprintf("error when calculating preScoreState: %v", err))
return framework.AsStatus(fmt.Errorf("calculating preScoreState: %w", err))
}

// return if incoming pod doesn't have soft topology spread Constraints.
Expand Down Expand Up @@ -173,14 +173,14 @@ func (pl *PodTopologySpread) PreScore(
// it is normalized later.
func (pl *PodTopologySpread) Score(ctx context.Context, cycleState *framework.CycleState, pod *v1.Pod, nodeName string) (int64, *framework.Status) {
nodeInfo, err := pl.sharedLister.NodeInfos().Get(nodeName)
if err != nil || nodeInfo.Node() == nil {
return 0, framework.NewStatus(framework.Error, fmt.Sprintf("getting node %q from Snapshot: %v, node is nil: %v", nodeName, err, nodeInfo.Node() == nil))
if err != nil {
return 0, framework.AsStatus(fmt.Errorf("getting node %q from Snapshot: %w", nodeName, err))
}

node := nodeInfo.Node()
s, err := getPreScoreState(cycleState)
if err != nil {
return 0, framework.NewStatus(framework.Error, err.Error())
return 0, framework.AsStatus(err)
}

// Return if the node is not qualified.
Expand Down Expand Up @@ -210,7 +210,7 @@ func (pl *PodTopologySpread) Score(ctx context.Context, cycleState *framework.Cy
func (pl *PodTopologySpread) NormalizeScore(ctx context.Context, cycleState *framework.CycleState, pod *v1.Pod, scores framework.NodeScoreList) *framework.Status {
s, err := getPreScoreState(cycleState)
if err != nil {
return framework.NewStatus(framework.Error, err.Error())
return framework.AsStatus(err)
}
if s == nil {
return nil
Expand All @@ -235,7 +235,7 @@ func (pl *PodTopologySpread) NormalizeScore(ctx context.Context, cycleState *fra
for i := range scores {
nodeInfo, err := pl.sharedLister.NodeInfos().Get(scores[i].Name)
if err != nil {
return framework.NewStatus(framework.Error, err.Error())
return framework.AsStatus(err)
}
node := nodeInfo.Node()

Expand Down
Expand Up @@ -86,17 +86,17 @@ func (pl *SelectorSpread) Score(ctx context.Context, state *framework.CycleState

c, err := state.Read(preScoreStateKey)
if err != nil {
return 0, framework.NewStatus(framework.Error, fmt.Sprintf("Error reading %q from cycleState: %v", preScoreStateKey, err))
return 0, framework.AsStatus(fmt.Errorf("reading %q from cycleState: %w", preScoreStateKey, err))
}

s, ok := c.(*preScoreState)
if !ok {
return 0, framework.NewStatus(framework.Error, fmt.Sprintf("%+v convert to tainttoleration.preScoreState error", c))
return 0, framework.AsStatus(fmt.Errorf("cannot convert saved state to tainttoleration.preScoreState"))
}

nodeInfo, err := pl.sharedLister.NodeInfos().Get(nodeName)
if err != nil {
return 0, framework.NewStatus(framework.Error, fmt.Sprintf("getting node %q from Snapshot: %v", nodeName, err))
return 0, framework.AsStatus(fmt.Errorf("getting node %q from Snapshot: %w", nodeName, err))
}

count := countMatchingPods(pod.Namespace, s.selector, nodeInfo)
Expand Down

0 comments on commit 8154dc9

Please sign in to comment.