Skip to content

Commit 6813254

Browse files
committed
Optimize the handling of the return messages of the extender scheduler
Signed-off-by: learner0810 <[email protected]>
1 parent e377967 commit 6813254

File tree

3 files changed

+16
-21
lines changed

3 files changed

+16
-21
lines changed

go.mod

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ require (
1919
github.com/spf13/cobra v1.8.1
2020
github.com/spf13/pflag v1.0.5
2121
github.com/stretchr/testify v1.10.0
22+
github.com/unrolled/render v1.7.0
2223
github.com/urfave/cli/v2 v2.27.1
2324
golang.org/x/net v0.35.0
2425
golang.org/x/term v0.29.0

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,8 @@ github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOf
139139
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
140140
github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 h1:kdXcSzyDtseVEc4yCz2qF8ZrQvIDBJLl4S1c3GCXmoI=
141141
github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww=
142+
github.com/unrolled/render v1.7.0 h1:1yke01/tZiZpiXfUG+zqB+6fq3G4I+KDmnh0EhPq7So=
143+
github.com/unrolled/render v1.7.0/go.mod h1:LwQSeDhjml8NLjIO9GJO1/1qpFJxtfVIpzxXKjfVkoI=
142144
github.com/urfave/cli v1.19.1/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
143145
github.com/urfave/cli/v2 v2.27.1 h1:8xSQ6szndafKVRmfyeUMxkNUJQMjL1F2zmsZ+qHpfho=
144146
github.com/urfave/cli/v2 v2.27.1/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ=

pkg/scheduler/routes/route.go

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@ package routes
1919
import (
2020
"bytes"
2121
"encoding/json"
22-
"fmt"
2322
"io"
2423
"net/http"
2524

2625
"github.com/julienschmidt/httprouter"
26+
"github.com/unrolled/render"
2727
"k8s.io/apimachinery/pkg/types"
2828
"k8s.io/klog/v2"
2929
extenderv1 "k8s.io/kube-scheduler/extender/v1"
@@ -65,15 +65,12 @@ func PredicateRoute(s *scheduler.Scheduler) httprouter.Handle {
6565
}
6666
}
6767

68-
if resultBody, err := json.Marshal(extenderFilterResult); err != nil {
69-
klog.ErrorS(err, "Failed to marshal extender filter result", "result", extenderFilterResult)
70-
w.Header().Set("Content-Type", "application/json")
71-
w.WriteHeader(http.StatusInternalServerError)
72-
w.Write([]byte(err.Error()))
73-
} else {
74-
w.Header().Set("Content-Type", "application/json")
75-
w.WriteHeader(http.StatusOK)
76-
w.Write(resultBody)
68+
klog.V(5).InfoS("Returning predicate response", "result", extenderFilterResult)
69+
70+
err := render.New(render.Options{IndentJSON: true}).JSON(w, http.StatusOK, extenderFilterResult)
71+
if err != nil {
72+
klog.ErrorS(err, "Failed to write JSON response")
73+
return
7774
}
7875
}
7976
}
@@ -101,17 +98,12 @@ func Bind(s *scheduler.Scheduler) httprouter.Handle {
10198
}
10299
}
103100

104-
if response, err := json.Marshal(extenderBindingResult); err != nil {
105-
klog.ErrorS(err, "Failed to marshal binding result", "result", extenderBindingResult)
106-
w.Header().Set("Content-Type", "application/json")
107-
w.WriteHeader(http.StatusInternalServerError)
108-
errMsg := fmt.Sprintf("{'error':'%s'}", err.Error())
109-
w.Write([]byte(errMsg))
110-
} else {
111-
klog.V(5).InfoS("Returning bind response", "result", extenderBindingResult)
112-
w.Header().Set("Content-Type", "application/json")
113-
w.WriteHeader(http.StatusOK)
114-
w.Write(response)
101+
klog.V(5).InfoS("Returning bind response", "result", extenderBindingResult)
102+
103+
err := render.New(render.Options{IndentJSON: true}).JSON(w, http.StatusOK, extenderBindingResult)
104+
if err != nil {
105+
klog.ErrorS(err, "Failed to write JSON response")
106+
return
115107
}
116108
}
117109
}

0 commit comments

Comments
 (0)