@@ -84,6 +84,34 @@ func fakeLocalAI() *httptest.Server {
8484 })
8585 })
8686
87+ mux .HandleFunc ("/api/nodes/scheduling" , func (w http.ResponseWriter , r * http.Request ) {
88+ switch r .Method {
89+ case http .MethodGet :
90+ _ = json .NewEncoder (w ).Encode ([]map [string ]any {{"model_name" : "qwen" , "min_replicas" : 1 , "max_replicas" : 2 }})
91+ case http .MethodPost :
92+ var body map [string ]any
93+ if err := json .NewDecoder (r .Body ).Decode (& body ); err != nil {
94+ http .Error (w , err .Error (), http .StatusBadRequest )
95+ return
96+ }
97+ body ["id" ] = "sched-1"
98+ _ = json .NewEncoder (w ).Encode (body )
99+ default :
100+ http .Error (w , "method" , http .StatusMethodNotAllowed )
101+ }
102+ })
103+
104+ mux .HandleFunc ("/api/nodes/scheduling/qwen" , func (w http.ResponseWriter , r * http.Request ) {
105+ switch r .Method {
106+ case http .MethodGet :
107+ _ = json .NewEncoder (w ).Encode (map [string ]any {"model_name" : "qwen" , "spread_all" : true })
108+ case http .MethodDelete :
109+ w .WriteHeader (http .StatusNoContent )
110+ default :
111+ http .Error (w , "method" , http .StatusMethodNotAllowed )
112+ }
113+ })
114+
87115 return httptest .NewServer (mux )
88116}
89117
@@ -197,6 +225,35 @@ var _ = Describe("httpapi.Client against the LocalAI admin REST surface", func()
197225 Expect (bs [0 ].Installed ).To (BeTrue ())
198226 })
199227 })
228+
229+ Describe ("Scheduling" , func () {
230+ It ("lists scheduling configs" , func () {
231+ out , err := c .ListScheduling (ctx )
232+ Expect (err ).ToNot (HaveOccurred ())
233+ Expect (out ).To (HaveLen (1 ))
234+ Expect (out [0 ].ModelName ).To (Equal ("qwen" ))
235+ Expect (out [0 ].MinReplicas ).To (Equal (1 ))
236+ })
237+
238+ It ("gets one scheduling config" , func () {
239+ out , err := c .GetScheduling (ctx , "qwen" )
240+ Expect (err ).ToNot (HaveOccurred ())
241+ Expect (out .ModelName ).To (Equal ("qwen" ))
242+ Expect (out .SpreadAll ).To (BeTrue ())
243+ })
244+
245+ It ("sets a scheduling config" , func () {
246+ out , err := c .SetScheduling (ctx , localaitools.SetSchedulingRequest {ModelName : "qwen" , MinReplicas : 1 , MaxReplicas : 2 })
247+ Expect (err ).ToNot (HaveOccurred ())
248+ Expect (out .ID ).To (Equal ("sched-1" ))
249+ Expect (out .ModelName ).To (Equal ("qwen" ))
250+ Expect (out .MaxReplicas ).To (Equal (2 ))
251+ })
252+
253+ It ("deletes a scheduling config" , func () {
254+ Expect (c .DeleteScheduling (ctx , "qwen" )).To (Succeed ())
255+ })
256+ })
200257})
201258
202259var _ = Describe ("Model aliases" , func () {
0 commit comments