X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/a788135c352c36d1a905c7630423ba57b2ae072a..8da425a41233ce425f84e0e78166ac97358a5417:/lib/controller/cmd.go diff --git a/lib/controller/cmd.go b/lib/controller/cmd.go index c13d0fa07a..0c46e857b3 100644 --- a/lib/controller/cmd.go +++ b/lib/controller/cmd.go @@ -5,75 +5,16 @@ package controller import ( - "flag" - "fmt" - "io" - "net/http" + "context" - "git.curoverse.com/arvados.git/lib/cmd" - "git.curoverse.com/arvados.git/sdk/go/arvados" - "git.curoverse.com/arvados.git/sdk/go/httpserver" - "github.com/Sirupsen/logrus" + "git.arvados.org/arvados.git/lib/cmd" + "git.arvados.org/arvados.git/lib/service" + "git.arvados.org/arvados.git/sdk/go/arvados" + "github.com/prometheus/client_golang/prometheus" ) -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, _ *prometheus.Registry) service.Handler { + return &Handler{Cluster: cluster} }