func()

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)
	})
}