Merge branch '15928-fs-deadlock'
[arvados.git] / services / keep-balance / server.go
index 23e597c89e63e384aef6ab9dff4ea297f74e76c3..05658b5e5d7f17a4dcd9bd099d81d68950f97a8f 100644 (file)
@@ -5,18 +5,13 @@
 package main
 
 import (
-       "context"
        "net/http"
        "os"
        "os/signal"
        "syscall"
        "time"
 
-       "git.curoverse.com/arvados.git/sdk/go/arvados"
-       "git.curoverse.com/arvados.git/sdk/go/auth"
-       "git.curoverse.com/arvados.git/sdk/go/ctxlog"
-       "github.com/julienschmidt/httprouter"
-       "github.com/prometheus/client_golang/prometheus/promhttp"
+       "git.arvados.org/arvados.git/sdk/go/arvados"
        "github.com/sirupsen/logrus"
 )
 
@@ -42,31 +37,23 @@ type RunOptions struct {
 }
 
 type Server struct {
+       http.Handler
+
        Cluster    *arvados.Cluster
        ArvClient  *arvados.Client
        RunOptions RunOptions
        Metrics    *metrics
 
-       httpHandler http.Handler
-
        Logger logrus.FieldLogger
        Dumper logrus.FieldLogger
 }
 
-// ServeHTTP implements service.Handler.
-func (srv *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
-       srv.httpHandler.ServeHTTP(w, r)
-}
-
 // CheckHealth implements service.Handler.
 func (srv *Server) CheckHealth() error {
        return nil
 }
 
-// Start sets up and runs the balancer.
-func (srv *Server) Start(ctx context.Context) {
-       srv.init(ctx)
-
+func (srv *Server) run() {
        var err error
        if srv.RunOptions.Once {
                _, err = srv.runOnce()
@@ -75,29 +62,9 @@ func (srv *Server) Start(ctx context.Context) {
        }
        if err != nil {
                srv.Logger.Error(err)
-       }
-}
-
-func (srv *Server) init(ctx context.Context) {
-       if srv.RunOptions.Logger == nil {
-               srv.RunOptions.Logger = ctxlog.FromContext(ctx)
-       }
-
-       srv.Logger = srv.RunOptions.Logger
-       srv.Dumper = srv.RunOptions.Dumper
-
-       if srv.Cluster.ManagementToken == "" {
-               srv.httpHandler = http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
-                       http.Error(w, "Management API authentication is not configured", http.StatusForbidden)
-               })
+               os.Exit(1)
        } else {
-               mux := httprouter.New()
-               metricsH := promhttp.HandlerFor(srv.Metrics.reg, promhttp.HandlerOpts{
-                       ErrorLog: srv.Logger,
-               })
-               mux.Handler("GET", "/metrics", metricsH)
-               mux.Handler("GET", "/metrics.json", metricsH)
-               srv.httpHandler = auth.RequireLiteralToken(srv.Cluster.ManagementToken, mux)
+               os.Exit(0)
        }
 }