mirror of https://github.com/harness/drone.git
separate healthz from other routes
parent
b52456f652
commit
346743176b
|
@ -20,6 +20,7 @@ import (
|
|||
"github.com/drone/drone/cmd/drone-server/config"
|
||||
"github.com/drone/drone/core"
|
||||
"github.com/drone/drone/handler/api"
|
||||
"github.com/drone/drone/handler/health"
|
||||
"github.com/drone/drone/handler/web"
|
||||
"github.com/drone/drone/metric"
|
||||
"github.com/drone/drone/operator/manager"
|
||||
|
@ -44,6 +45,7 @@ var serverSet = wire.NewSet(
|
|||
manager.New,
|
||||
api.New,
|
||||
web.New,
|
||||
provideHealthz,
|
||||
provideMetric,
|
||||
provideRouter,
|
||||
provideRPC,
|
||||
|
@ -54,8 +56,9 @@ var serverSet = wire.NewSet(
|
|||
|
||||
// provideRouter is a Wire provider function that returns a
|
||||
// router that is serves the provided handlers.
|
||||
func provideRouter(api api.Server, web web.Server, rpcv1 rpcHandlerV1, rpcv2 rpcHandlerV2, metrics *metric.Server) *chi.Mux {
|
||||
func provideRouter(api api.Server, web web.Server, rpcv1 rpcHandlerV1, rpcv2 rpcHandlerV2, healthz healthzHandler, metrics *metric.Server) *chi.Mux {
|
||||
r := chi.NewRouter()
|
||||
r.Mount("/healthz", healthz)
|
||||
r.Mount("/metrics", metrics)
|
||||
r.Mount("/api", api.Handler())
|
||||
r.Mount("/rpc/v2", rpcv2)
|
||||
|
@ -64,6 +67,13 @@ func provideRouter(api api.Server, web web.Server, rpcv1 rpcHandlerV1, rpcv2 rpc
|
|||
return r
|
||||
}
|
||||
|
||||
// provideMetric is a Wire provider function that returns the
|
||||
// healthcheck server.
|
||||
func provideHealthz() healthzHandler {
|
||||
v := health.New()
|
||||
return healthzHandler(v)
|
||||
}
|
||||
|
||||
// provideMetric is a Wire provider function that returns the
|
||||
// metrics server exposing metrics in prometheus format.
|
||||
func provideMetric(session core.Session, config config.Config) *metric.Server {
|
||||
|
|
|
@ -91,10 +91,11 @@ func InitializeApplication(config2 config.Config) (application, error) {
|
|||
middleware := provideLogin(config2)
|
||||
options := provideServerOptions(config2)
|
||||
webServer := web.New(admissionService, buildStore, client, hookParser, coreLicense, licenseService, middleware, repositoryStore, session, syncer, triggerer, userStore, userService, webhookSender, options, system)
|
||||
handler := provideRPC(buildManager, config2)
|
||||
rpc2Server := provideRPC2(buildManager, config2)
|
||||
mainRpcHandlerV1 := provideRPC(buildManager, config2)
|
||||
mainRpcHandlerV2 := provideRPC2(buildManager, config2)
|
||||
mainHealthzHandler := provideHealthz()
|
||||
metricServer := provideMetric(session, config2)
|
||||
mux := provideRouter(server, webServer, handler, rpc2Server, metricServer)
|
||||
mux := provideRouter(server, webServer, mainRpcHandlerV1, mainRpcHandlerV2, mainHealthzHandler, metricServer)
|
||||
serverServer := provideServer(mux, config2)
|
||||
mainApplication := newApplication(cronScheduler, datadog, runner, serverServer, userStore)
|
||||
return mainApplication, nil
|
||||
|
|
|
@ -12,19 +12,32 @@
|
|||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package web
|
||||
package health
|
||||
|
||||
import (
|
||||
"io"
|
||||
"net/http"
|
||||
|
||||
"github.com/go-chi/chi"
|
||||
"github.com/go-chi/chi/middleware"
|
||||
)
|
||||
|
||||
// HandleHealthz creates an http.HandlerFunc that performs system
|
||||
// New returns a new health check router.
|
||||
func New() http.Handler {
|
||||
r := chi.NewRouter()
|
||||
r.Use(middleware.Recoverer)
|
||||
r.Use(middleware.NoCache)
|
||||
r.Handle("/", Handler())
|
||||
return r
|
||||
}
|
||||
|
||||
// Handler creates an http.HandlerFunc that performs system
|
||||
// healthchecks and returns 500 if the system is in an unhealthy state.
|
||||
func HandleHealthz() http.HandlerFunc {
|
||||
func Handler() http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
w.WriteHeader(200)
|
||||
w.Header().Set("Content-Type", "text/plain")
|
||||
io.WriteString(w, "OK")
|
||||
}
|
||||
}
|
||||
|
|
@ -2,7 +2,7 @@
|
|||
// Use of this source code is governed by the Drone Non-Commercial License
|
||||
// that can be found in the LICENSE file.
|
||||
|
||||
package web
|
||||
package health
|
||||
|
||||
import (
|
||||
"net/http/httptest"
|
||||
|
@ -13,7 +13,7 @@ func TestHandleHealthz(t *testing.T) {
|
|||
w := httptest.NewRecorder()
|
||||
r := httptest.NewRequest("GET", "/healthz", nil)
|
||||
|
||||
HandleHealthz().ServeHTTP(w, r)
|
||||
Handler().ServeHTTP(w, r)
|
||||
|
||||
if got, want := w.Code, 200; want != got {
|
||||
t.Errorf("Want response code %d, got %d", want, got)
|
|
@ -102,7 +102,6 @@ func (s Server) Handler() http.Handler {
|
|||
})
|
||||
|
||||
r.Get("/version", HandleVersion)
|
||||
r.Get("/healthz", HandleHealthz())
|
||||
r.Get("/varz", HandleVarz(s.Client, s.License))
|
||||
|
||||
r.Handle("/login",
|
||||
|
|
Loading…
Reference in New Issue