-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}