X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/060d38d627bd1e51dd2b3c6e7de9af6aa7d7b6f3..acd3d380bb636ca7ef324e0903e54e309b132dc7:/services/keep-web/handler.go diff --git a/services/keep-web/handler.go b/services/keep-web/handler.go index 769c2f59ce..16df210fe8 100644 --- a/services/keep-web/handler.go +++ b/services/keep-web/handler.go @@ -21,14 +21,16 @@ import ( "git.curoverse.com/arvados.git/sdk/go/arvados" "git.curoverse.com/arvados.git/sdk/go/arvadosclient" "git.curoverse.com/arvados.git/sdk/go/auth" + "git.curoverse.com/arvados.git/sdk/go/health" "git.curoverse.com/arvados.git/sdk/go/httpserver" "git.curoverse.com/arvados.git/sdk/go/keepclient" ) type handler struct { - Config *Config - clientPool *arvadosclient.ClientPool - setupOnce sync.Once + Config *Config + clientPool *arvadosclient.ClientPool + setupOnce sync.Once + healthHandler http.Handler } // parseCollectionIDFromDNSName returns a UUID or PDH if s begins with @@ -70,7 +72,13 @@ func parseCollectionIDFromURL(s string) string { func (h *handler) setup() { h.clientPool = arvadosclient.MakeClientPool() + keepclient.RefreshServiceDiscoveryOnSIGHUP() + + h.healthHandler = &health.Handler{ + Token: h.Config.ManagementToken, + Prefix: "/_health/", + } } func (h *handler) serveStatus(w http.ResponseWriter, r *http.Request) { @@ -110,6 +118,11 @@ func (h *handler) ServeHTTP(wOrig http.ResponseWriter, r *http.Request) { httpserver.Log(remoteAddr, statusCode, statusText, w.WroteBodyBytes(), r.Method, r.Host, r.URL.Path, r.URL.RawQuery) }() + if strings.HasPrefix(r.URL.Path, "/_health/") && r.Method == "GET" { + h.healthHandler.ServeHTTP(w, r) + return + } + if r.Method == "OPTIONS" { method := r.Header.Get("Access-Control-Request-Method") if method != "GET" && method != "POST" {