@@ -2,6 +2,7 @@ package slurm
22
33import (
44 "encoding/json"
5+ "errors"
56 "fmt"
67 "io"
78 "net/http"
@@ -30,18 +31,14 @@ func (h *SidecarHandler) StatusHandler(w http.ResponseWriter, r *http.Request) {
3031 bodyBytes , err := io .ReadAll (r .Body )
3132 if err != nil {
3233 statusCode = http .StatusInternalServerError
33- w .WriteHeader (statusCode )
34- w .Write ([]byte ("Some errors occurred while retrieving container status. Check Slurm Sidecar's logs" ))
35- log .G (h .Ctx ).Error (err )
34+ h .handleError (w , statusCode , err )
3635 return
3736 }
3837
3938 err = json .Unmarshal (bodyBytes , & req )
4039 if err != nil {
4140 statusCode = http .StatusInternalServerError
42- w .WriteHeader (statusCode )
43- w .Write ([]byte ("Some errors occurred while retrieving container status. Check Slurm Sidecar's logs" ))
44- log .G (h .Ctx ).Error (err )
41+ h .handleError (w , statusCode , err )
4542 return
4643 }
4744
@@ -57,9 +54,7 @@ func (h *SidecarHandler) StatusHandler(w http.ResponseWriter, r *http.Request) {
5754
5855 if execReturn .Stderr != "" {
5956 statusCode = http .StatusInternalServerError
60- w .WriteHeader (statusCode )
61- w .Write ([]byte ("Error executing Squeue. Check Slurm Sidecar's logs" ))
62- log .G (h .Ctx ).Error ("Unable to retrieve job status: " + execReturn .Stderr )
57+ h .handleError (w , statusCode , errors .New ("unable to retrieve job status: " + execReturn .Stderr ))
6358 return
6459 }
6560
@@ -87,27 +82,24 @@ func (h *SidecarHandler) StatusHandler(w http.ResponseWriter, r *http.Request) {
8782 file , err := os .Open (path + "/" + ct .Name + ".status" )
8883 if err != nil {
8984 statusCode = http .StatusInternalServerError
90- w .WriteHeader (statusCode )
91- w .Write ([]byte ("Error retrieving container status. Check Slurm Sidecar's logs" ))
92- log .G (h .Ctx ).Error (fmt .Errorf ("unable to retrieve container status: %s" , err ))
85+ h .handleError (w , statusCode , fmt .Errorf ("unable to retrieve container status: %s" , err ))
86+ log .G (h .Ctx ).Error ()
9387 return
9488 }
9589 defer file .Close ()
9690 statusb , err := io .ReadAll (file )
9791 if err != nil {
9892 statusCode = http .StatusInternalServerError
99- w .WriteHeader (statusCode )
100- w .Write ([]byte ("Error reading container status. Check Slurm Sidecar's logs" ))
101- log .G (h .Ctx ).Error (fmt .Errorf ("unable to read container status: %s" , err ))
93+ h .handleError (w , statusCode , fmt .Errorf ("unable to read container status: %s" , err ))
94+ log .G (h .Ctx ).Error ()
10295 return
10396 }
10497
10598 status , err := strconv .Atoi (strings .Replace (string (statusb ), "\n " , "" , - 1 ))
10699 if err != nil {
107100 statusCode = http .StatusInternalServerError
108- w .WriteHeader (statusCode )
109- w .Write ([]byte ("Error converting container status.. Check Slurm Sidecar's logs" ))
110- log .G (h .Ctx ).Error (fmt .Errorf ("unable to convert container status: %s" , err ))
101+ h .handleError (w , statusCode , fmt .Errorf ("unable to convert container status: %s" , err ))
102+ log .G (h .Ctx ).Error ()
111103 status = 500
112104 }
113105
@@ -141,9 +133,7 @@ func (h *SidecarHandler) StatusHandler(w http.ResponseWriter, r *http.Request) {
141133 f , err := os .Create (path + "/FinishedAt.time" )
142134 if err != nil {
143135 statusCode = http .StatusInternalServerError
144- w .WriteHeader (statusCode )
145- w .Write ([]byte ("Error writing end timestamp... Check Slurm Sidecar's logs" ))
146- log .G (h .Ctx ).Error (err )
136+ h .handleError (w , statusCode , err )
147137 return
148138 }
149139 f .WriteString ((* h .JIDs )[uid ].EndTime .Format ("2006-01-02 15:04:05.999999999 -0700 MST" ))
@@ -159,9 +149,7 @@ func (h *SidecarHandler) StatusHandler(w http.ResponseWriter, r *http.Request) {
159149 f , err := os .Create (path + "/StartedAt.time" )
160150 if err != nil {
161151 statusCode = http .StatusInternalServerError
162- w .WriteHeader (statusCode )
163- w .Write ([]byte ("Error writing start timestamp... Check Slurm Sidecar's logs" ))
164- log .G (h .Ctx ).Error (err )
152+ h .handleError (w , statusCode , err )
165153 return
166154 }
167155 f .WriteString ((* h .JIDs )[uid ].StartTime .Format ("2006-01-02 15:04:05.999999999 -0700 MST" ))
@@ -177,9 +165,7 @@ func (h *SidecarHandler) StatusHandler(w http.ResponseWriter, r *http.Request) {
177165 f , err := os .Create (path + "/FinishedAt.time" )
178166 if err != nil {
179167 statusCode = http .StatusInternalServerError
180- w .WriteHeader (statusCode )
181- w .Write ([]byte ("Error writing end timestamp... Check Slurm Sidecar's logs" ))
182- log .G (h .Ctx ).Error (err )
168+ h .handleError (w , statusCode , err )
183169 return
184170 }
185171 f .WriteString ((* h .JIDs )[uid ].EndTime .Format ("2006-01-02 15:04:05.999999999 -0700 MST" ))
@@ -201,9 +187,7 @@ func (h *SidecarHandler) StatusHandler(w http.ResponseWriter, r *http.Request) {
201187 f , err := os .Create (path + "/FinishedAt.time" )
202188 if err != nil {
203189 statusCode = http .StatusInternalServerError
204- w .WriteHeader (statusCode )
205- w .Write ([]byte ("Error writing end timestamp... Check Slurm Sidecar's logs" ))
206- log .G (h .Ctx ).Error (err )
190+ h .handleError (w , statusCode , err )
207191 return
208192 }
209193 f .WriteString ((* h .JIDs )[uid ].EndTime .Format ("2006-01-02 15:04:05.999999999 -0700 MST" ))
@@ -219,9 +203,7 @@ func (h *SidecarHandler) StatusHandler(w http.ResponseWriter, r *http.Request) {
219203 f , err := os .Create (path + "/StartedAt.time" )
220204 if err != nil {
221205 statusCode = http .StatusInternalServerError
222- w .WriteHeader (statusCode )
223- w .Write ([]byte ("Error writing start timestamp... Check Slurm Sidecar's logs" ))
224- log .G (h .Ctx ).Error (err )
206+ h .handleError (w , statusCode , err )
225207 return
226208 }
227209 f .WriteString ((* h .JIDs )[uid ].StartTime .Format ("2006-01-02 15:04:05.999999999 -0700 MST" ))
@@ -243,9 +225,7 @@ func (h *SidecarHandler) StatusHandler(w http.ResponseWriter, r *http.Request) {
243225 f , err := os .Create (path + "/FinishedAt.time" )
244226 if err != nil {
245227 statusCode = http .StatusInternalServerError
246- w .WriteHeader (statusCode )
247- w .Write ([]byte ("Error writing end timestamp... Check Slurm Sidecar's logs" ))
248- log .G (h .Ctx ).Error (err )
228+ h .handleError (w , statusCode , err )
249229 return
250230 }
251231 f .WriteString ((* h .JIDs )[uid ].EndTime .Format ("2006-01-02 15:04:05.999999999 -0700 MST" ))
@@ -261,9 +241,7 @@ func (h *SidecarHandler) StatusHandler(w http.ResponseWriter, r *http.Request) {
261241 f , err := os .Create (path + "/FinishedAt.time" )
262242 if err != nil {
263243 statusCode = http .StatusInternalServerError
264- w .WriteHeader (statusCode )
265- w .Write ([]byte ("Error writing end timestamp... Check Slurm Sidecar's logs" ))
266- log .G (h .Ctx ).Error (err )
244+ h .handleError (w , statusCode , err )
267245 return
268246 }
269247 f .WriteString ((* h .JIDs )[uid ].EndTime .Format ("2006-01-02 15:04:05.999999999 -0700 MST" ))
@@ -299,9 +277,7 @@ func (h *SidecarHandler) StatusHandler(w http.ResponseWriter, r *http.Request) {
299277 } else {
300278 bodyBytes , err := json .Marshal (resp )
301279 if err != nil {
302- w .WriteHeader (statusCode )
303- w .Write ([]byte ("Some errors occurred while retrieving container status. Check Slurm Sidecar's logs" ))
304- log .G (h .Ctx ).Error (err )
280+ h .handleError (w , statusCode , err )
305281 return
306282 }
307283 w .Write (bodyBytes )
0 commit comments