in pkg/server/healthz.go [59:101]
func (h *Checks) Healthz() http.HandlerFunc {
return http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
w.Header().Set("Content-Type", "application/json")
var errs []Error
var svcs []Service
if h.Targets != nil {
for _, target := range h.Targets {
if err := target.Handle.Healthz(); err != nil {
target.svc.Healthy = false
errs = append(errs, Error{
Name: target.svc.Name,
Message: err.Error(),
})
}
svcs = append(svcs, Service{
Name: target.svc.Name,
Healthy: target.svc.Healthy,
})
}
}
response := Response{
Service: svcs,
Errors: errs,
Healthy: true,
}
if len(errs) > 0 {
response.Healthy = false
w.WriteHeader(http.StatusServiceUnavailable)
} else {
w.WriteHeader(http.StatusOK)
}
json, err := json.Marshal(response)
if err != nil {
klog.Warning(err.Error())
}
w.Write(json)
})
}