Skip to content

Commit a482d7e

Browse files
Wrap errors when running PreBind plugins
Signed-off-by: Aldo Culquicondor <[email protected]> Change-Id: I31bf35d7e96b1cebb285cf03ffad310d83224d9c Signed-off-by: Aldo Culquicondor <[email protected]>
1 parent 3410214 commit a482d7e

File tree

4 files changed

+16
-14
lines changed

4 files changed

+16
-14
lines changed

pkg/scheduler/framework/runtime/framework.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -710,9 +710,9 @@ func (f *frameworkImpl) RunPreBindPlugins(ctx context.Context, state *framework.
710710
for _, pl := range f.preBindPlugins {
711711
status = f.runPreBindPlugin(ctx, pl, state, pod, nodeName)
712712
if !status.IsSuccess() {
713-
msg := fmt.Sprintf("error while running %q prebind plugin for pod %q: %v", pl.Name(), pod.Name, status.Message())
714-
klog.Error(msg)
715-
return framework.NewStatus(framework.Error, msg)
713+
err := fmt.Errorf("error while running %q prebind plugin for pod %q: %w", pl.Name(), pod.Name, status.AsError())
714+
klog.Error(err)
715+
return framework.AsStatus(err)
716716
}
717717
}
718718
return nil

pkg/scheduler/framework/runtime/framework_test.go

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package runtime
1818

1919
import (
2020
"context"
21+
"errors"
2122
"fmt"
2223
"reflect"
2324
"strings"
@@ -1138,6 +1139,7 @@ func TestPostFilterPlugins(t *testing.T) {
11381139
}
11391140

11401141
func TestPreBindPlugins(t *testing.T) {
1142+
injectedStatusErr := errors.New("injected status")
11411143
tests := []struct {
11421144
name string
11431145
plugins []*TestPlugin
@@ -1166,7 +1168,7 @@ func TestPreBindPlugins(t *testing.T) {
11661168
inj: injectedResult{PreBindStatus: int(v1alpha1.Unschedulable)},
11671169
},
11681170
},
1169-
wantStatus: v1alpha1.NewStatus(v1alpha1.Error, `error while running "TestPlugin" prebind plugin for pod "": injected status`),
1171+
wantStatus: v1alpha1.AsStatus(fmt.Errorf(`error while running "TestPlugin" prebind plugin for pod "": %w`, injectedStatusErr)),
11701172
},
11711173
{
11721174
name: "ErrorPreBindPlugin",
@@ -1176,7 +1178,7 @@ func TestPreBindPlugins(t *testing.T) {
11761178
inj: injectedResult{PreBindStatus: int(v1alpha1.Error)},
11771179
},
11781180
},
1179-
wantStatus: v1alpha1.NewStatus(v1alpha1.Error, `error while running "TestPlugin" prebind plugin for pod "": injected status`),
1181+
wantStatus: v1alpha1.AsStatus(fmt.Errorf(`error while running "TestPlugin" prebind plugin for pod "": %w`, injectedStatusErr)),
11801182
},
11811183
{
11821184
name: "UnschedulablePreBindPlugin",
@@ -1186,7 +1188,7 @@ func TestPreBindPlugins(t *testing.T) {
11861188
inj: injectedResult{PreBindStatus: int(v1alpha1.UnschedulableAndUnresolvable)},
11871189
},
11881190
},
1189-
wantStatus: v1alpha1.NewStatus(v1alpha1.Error, `error while running "TestPlugin" prebind plugin for pod "": injected status`),
1191+
wantStatus: v1alpha1.AsStatus(fmt.Errorf(`error while running "TestPlugin" prebind plugin for pod "": %w`, injectedStatusErr)),
11901192
},
11911193
{
11921194
name: "SuccessErrorPreBindPlugins",
@@ -1200,7 +1202,7 @@ func TestPreBindPlugins(t *testing.T) {
12001202
inj: injectedResult{PreBindStatus: int(v1alpha1.Error)},
12011203
},
12021204
},
1203-
wantStatus: v1alpha1.NewStatus(v1alpha1.Error, `error while running "TestPlugin 1" prebind plugin for pod "": injected status`),
1205+
wantStatus: v1alpha1.AsStatus(fmt.Errorf(`error while running "TestPlugin 1" prebind plugin for pod "": %w`, injectedStatusErr)),
12041206
},
12051207
{
12061208
name: "ErrorSuccessPreBindPlugin",
@@ -1214,7 +1216,7 @@ func TestPreBindPlugins(t *testing.T) {
12141216
inj: injectedResult{PreBindStatus: int(v1alpha1.Success)},
12151217
},
12161218
},
1217-
wantStatus: v1alpha1.NewStatus(v1alpha1.Error, `error while running "TestPlugin" prebind plugin for pod "": injected status`),
1219+
wantStatus: v1alpha1.AsStatus(fmt.Errorf(`error while running "TestPlugin" prebind plugin for pod "": %w`, injectedStatusErr)),
12181220
},
12191221
{
12201222
name: "SuccessSuccessPreBindPlugin",
@@ -1242,7 +1244,7 @@ func TestPreBindPlugins(t *testing.T) {
12421244
inj: injectedResult{PreBindStatus: int(v1alpha1.Error)},
12431245
},
12441246
},
1245-
wantStatus: v1alpha1.NewStatus(v1alpha1.Error, `error while running "TestPlugin" prebind plugin for pod "": injected status`),
1247+
wantStatus: v1alpha1.AsStatus(fmt.Errorf(`error while running "TestPlugin" prebind plugin for pod "": %w`, injectedStatusErr)),
12461248
},
12471249
{
12481250
name: "UnschedulableAndSuccessPreBindPlugin",
@@ -1256,7 +1258,7 @@ func TestPreBindPlugins(t *testing.T) {
12561258
inj: injectedResult{PreBindStatus: int(v1alpha1.Success)},
12571259
},
12581260
},
1259-
wantStatus: v1alpha1.NewStatus(v1alpha1.Error, `error while running "TestPlugin" prebind plugin for pod "": injected status`),
1261+
wantStatus: v1alpha1.AsStatus(fmt.Errorf(`error while running "TestPlugin" prebind plugin for pod "": %w`, injectedStatusErr)),
12601262
},
12611263
}
12621264

pkg/scheduler/framework/v1alpha1/interface.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ package v1alpha1
2121
import (
2222
"context"
2323
"errors"
24-
"fmt"
2524
"math"
2625
"strings"
2726
"time"
@@ -149,7 +148,7 @@ func (s *Status) AsError() error {
149148
if s.err != nil {
150149
return s.err
151150
}
152-
return fmt.Errorf("%s: %s", s.code.String(), s.Message())
151+
return errors.New(s.Message())
153152
}
154153

155154
// NewStatus makes a Status out of the given arguments and returns its pointer.

pkg/scheduler/scheduler_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,7 @@ func TestSchedulerScheduleOne(t *testing.T) {
211211
eventBroadcaster := events.NewBroadcaster(&events.EventSinkImpl{Interface: client.EventsV1()})
212212
errS := errors.New("scheduler")
213213
errB := errors.New("binder")
214+
preBindErr := errors.New("on PreBind")
214215

215216
table := []struct {
216217
name string
@@ -256,12 +257,12 @@ func TestSchedulerScheduleOne(t *testing.T) {
256257
sendPod: podWithID("foo", ""),
257258
algo: mockScheduler{core.ScheduleResult{SuggestedHost: testNode.Name, EvaluatedNodes: 1, FeasibleNodes: 1}, nil},
258259
registerPluginFuncs: []st.RegisterPluginFunc{
259-
st.RegisterPreBindPlugin("FakePreBind", st.NewFakePreBindPlugin(framework.NewStatus(framework.Error, "prebind error"))),
260+
st.RegisterPreBindPlugin("FakePreBind", st.NewFakePreBindPlugin(framework.AsStatus(preBindErr))),
260261
},
261262
expectErrorPod: podWithID("foo", testNode.Name),
262263
expectForgetPod: podWithID("foo", testNode.Name),
263264
expectAssumedPod: podWithID("foo", testNode.Name),
264-
expectError: errors.New(`error while running "FakePreBind" prebind plugin for pod "foo": prebind error`),
265+
expectError: fmt.Errorf(`error while running "FakePreBind" prebind plugin for pod "foo": %w`, preBindErr),
265266
eventReason: "FailedScheduling",
266267
},
267268
{

0 commit comments

Comments
 (0)