Remove puma from the API server Gemfile.
[arvados.git] / services / health / main.go
index 7f4d6481e034556f6c71f6caef042f0d3199030a..b6358deefcf8d333971435b2a9ede4021bc68f54 100644 (file)
@@ -1,6 +1,9 @@
 package main
 
 import (
+       "flag"
+       "net/http"
+
        "git.curoverse.com/arvados.git/sdk/go/arvados"
        "git.curoverse.com/arvados.git/sdk/go/health"
        "git.curoverse.com/arvados.git/sdk/go/httpserver"
@@ -8,21 +11,40 @@ import (
 )
 
 func main() {
+       configFile := flag.String("config", arvados.DefaultConfigFile, "`path` to arvados configuration file")
+       flag.Parse()
+
        log.SetFormatter(&log.JSONFormatter{
                TimestampFormat: "2006-01-02T15:04:05.000000000Z07:00",
        })
-       sysConf, err := arvados.GetSystemConfig()
+       cfg, err := arvados.GetConfig(*configFile)
+       if err != nil {
+               log.Fatal(err)
+       }
+       clusterCfg, err := cfg.GetCluster("")
+       if err != nil {
+               log.Fatal(err)
+       }
+       nodeCfg, err := clusterCfg.GetThisSystemNode()
        if err != nil {
                log.Fatal(err)
        }
 
+       log := log.WithField("Service", "Health")
        srv := &httpserver.Server{
-               Addr: ":", // FIXME: should be dictated by Health on this SystemNode
-               Handler: &health.Aggregator{
-                       SystemConfig: sysConf,
+               Addr: nodeCfg.Health.Listen,
+               Server: http.Server{
+                       Handler: &health.Aggregator{
+                               Config: cfg,
+                               Log: func(req *http.Request, err error) {
+                                       log.WithField("RemoteAddr", req.RemoteAddr).
+                                               WithField("Path", req.URL.Path).
+                                               WithError(err).
+                                               Info("HTTP request")
+                               },
+                       },
                },
        }
-       srv.HandleFunc()
        if err := srv.Start(); err != nil {
                log.Fatal(err)
        }