Skip to content

Commit e69abdc

Browse files
committed
Optimize the handling of the return messages of the extender scheduler
1 parent 5f611c7 commit e69abdc

File tree

3 files changed

+19
-42
lines changed

3 files changed

+19
-42
lines changed

go.mod

+3-2
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,17 @@ require (
1818
github.com/prometheus/client_golang v1.18.0
1919
github.com/sirupsen/logrus v1.9.3
2020
github.com/spf13/cobra v1.8.1
21+
github.com/spf13/pflag v1.0.5
2122
github.com/stretchr/testify v1.9.0
23+
github.com/unrolled/render v1.7.0
2224
github.com/urfave/cli/v2 v2.27.1
2325
golang.org/x/net v0.35.0
2426
golang.org/x/term v0.29.0
2527
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d
2628
google.golang.org/grpc v1.63.2
2729
google.golang.org/protobuf v1.33.0
2830
gopkg.in/yaml.v2 v2.4.0
31+
gopkg.in/yaml.v3 v3.0.1
2932
gotest.tools/v3 v3.5.1
3033
k8s.io/api v0.29.3
3134
k8s.io/apimachinery v0.29.3
@@ -72,7 +75,6 @@ require (
7275
github.com/prometheus/common v0.48.0 // indirect
7376
github.com/prometheus/procfs v0.13.0 // indirect
7477
github.com/russross/blackfriday/v2 v2.1.0 // indirect
75-
github.com/spf13/pflag v1.0.5 // indirect
7678
github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 // indirect
7779
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect
7880
golang.org/x/mod v0.17.0 // indirect
@@ -84,7 +86,6 @@ require (
8486
google.golang.org/appengine v1.6.8 // indirect
8587
google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de // indirect
8688
gopkg.in/inf.v0 v0.9.1 // indirect
87-
gopkg.in/yaml.v3 v3.0.1 // indirect
8889
k8s.io/kube-openapi v0.0.0-20240227032403-f107216b40e2 // indirect
8990
k8s.io/utils v0.0.0-20240102154912-e7106e64919e // indirect
9091
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect

go.sum

+3-19
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,8 @@ github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsT
143143
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
144144
github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 h1:kdXcSzyDtseVEc4yCz2qF8ZrQvIDBJLl4S1c3GCXmoI=
145145
github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww=
146+
github.com/unrolled/render v1.7.0 h1:1yke01/tZiZpiXfUG+zqB+6fq3G4I+KDmnh0EhPq7So=
147+
github.com/unrolled/render v1.7.0/go.mod h1:LwQSeDhjml8NLjIO9GJO1/1qpFJxtfVIpzxXKjfVkoI=
146148
github.com/urfave/cli v1.19.1/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
147149
github.com/urfave/cli/v2 v2.27.1 h1:8xSQ6szndafKVRmfyeUMxkNUJQMjL1F2zmsZ+qHpfho=
148150
github.com/urfave/cli/v2 v2.27.1/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ=
@@ -177,10 +179,6 @@ golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLL
177179
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
178180
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
179181
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
180-
golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ=
181-
golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE=
182-
golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I=
183-
golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
184182
golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8=
185183
golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk=
186184
golang.org/x/oauth2 v0.17.0 h1:6m3ZPmLEFdVxKKWnKq4VqZ60gutO35zm+zrAHVmHyDQ=
@@ -189,10 +187,8 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ
189187
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
190188
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
191189
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
192-
golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M=
193-
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
194-
golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
195190
golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w=
191+
golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
196192
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
197193
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
198194
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -204,28 +200,16 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc
204200
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
205201
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
206202
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
207-
golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws=
208-
golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
209-
golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
210-
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
211203
golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
212204
golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
213205
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
214206
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
215-
golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA=
216-
golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0=
217-
golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
218-
golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
219207
golang.org/x/term v0.29.0 h1:L6pJp37ocefwRRtYPKSWOWzOtWSxVajvz2ldH/xi3iU=
220208
golang.org/x/term v0.29.0/go.mod h1:6bl4lRlvVuDgSf3179VpIxBF0o10JUpXWOnI7nErv7s=
221209
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
222210
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
223211
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
224212
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
225-
golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4=
226-
golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
227-
golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
228-
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
229213
golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM=
230214
golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY=
231215
golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=

pkg/scheduler/routes/route.go

+13-21
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)