Merge branch 'master' into 14874-protected-collection-properties
[arvados.git] / lib / controller / cmd.go
index c13d0fa07a1f2faeb7c0d276904b7345ee5e4ec0..4345370469d07f3d5be685b9dd2e4a0efbe1ab7b 100644 (file)
@@ -5,75 +5,15 @@
 package controller
 
 import (
-       "flag"
-       "fmt"
-       "io"
-       "net/http"
+       "context"
 
        "git.curoverse.com/arvados.git/lib/cmd"
+       "git.curoverse.com/arvados.git/lib/service"
        "git.curoverse.com/arvados.git/sdk/go/arvados"
-       "git.curoverse.com/arvados.git/sdk/go/httpserver"
-       "github.com/Sirupsen/logrus"
 )
 
-const rfc3339NanoFixed = "2006-01-02T15:04:05.000000000Z07:00"
+var Command cmd.Handler = service.Command(arvados.ServiceNameController, newHandler)
 
-var Command cmd.Handler = &command{}
-
-type command struct{}
-
-func (*command) RunCommand(prog string, args []string, stdin io.Reader, stdout, stderr io.Writer) int {
-       log := logrus.StandardLogger()
-       log.Formatter = &logrus.JSONFormatter{
-               TimestampFormat: rfc3339NanoFixed,
-       }
-       log.Out = stderr
-
-       var err error
-       defer func() {
-               if err != nil {
-                       log.WithError(err).Info("exiting")
-               }
-       }()
-       flags := flag.NewFlagSet("", flag.ContinueOnError)
-       flags.SetOutput(stderr)
-       configFile := flags.String("config", arvados.DefaultConfigFile, "Site configuration `file`")
-       err = flags.Parse(args)
-       if err != nil {
-               return 2
-       }
-       cfg, err := arvados.GetConfig(*configFile)
-       if err != nil {
-               return 1
-       }
-       cluster, err := cfg.GetCluster("")
-       if err != nil {
-               return 1
-       }
-       node, err := cluster.GetThisSystemNode()
-       if err != nil {
-               return 1
-       }
-       if node.Controller.Listen == "" {
-               err = fmt.Errorf("configuration does not run a controller on this host: Clusters[%q].SystemNodes[`hostname` or *].Controller.Listen == \"\"", cluster.ClusterID)
-               return 1
-       }
-       srv := &httpserver.Server{
-               Server: http.Server{
-                       Handler: httpserver.LogRequests(&Handler{
-                               Cluster: cluster,
-                       }),
-               },
-               Addr: node.Controller.Listen,
-       }
-       err = srv.Start()
-       if err != nil {
-               return 1
-       }
-       log.WithField("Listen", srv.Addr).Info("listening")
-       err = srv.Wait()
-       if err != nil {
-               return 1
-       }
-       return 0
+func newHandler(_ context.Context, cluster *arvados.Cluster, _ string) service.Handler {
+       return &Handler{Cluster: cluster}
 }