1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
13 "git.curoverse.com/arvados.git/lib/cmd"
14 "git.curoverse.com/arvados.git/sdk/go/arvados"
15 "git.curoverse.com/arvados.git/sdk/go/httpserver"
16 "github.com/Sirupsen/logrus"
19 const rfc3339NanoFixed = "2006-01-02T15:04:05.000000000Z07:00"
21 var Command cmd.Handler = &command{}
25 func (*command) RunCommand(prog string, args []string, stdin io.Reader, stdout, stderr io.Writer) int {
26 log := logrus.StandardLogger()
27 log.Formatter = &logrus.JSONFormatter{
28 TimestampFormat: rfc3339NanoFixed,
35 log.WithError(err).Info("exiting")
38 flags := flag.NewFlagSet("", flag.ContinueOnError)
39 flags.SetOutput(stderr)
40 configFile := flags.String("config", arvados.DefaultConfigFile, "Site configuration `file`")
41 err = flags.Parse(args)
45 cfg, err := arvados.GetConfig(*configFile)
49 cluster, err := cfg.GetCluster("")
53 node, err := cluster.GetThisSystemNode()
57 if node.Controller.Listen == "" {
58 err = fmt.Errorf("configuration does not run a controller on this host: Clusters[%q].SystemNodes[`hostname` or *].Controller.Listen == \"\"", cluster.ClusterID)
61 srv := &httpserver.Server{
63 Handler: httpserver.LogRequests(&Handler{
67 Addr: node.Controller.Listen,
73 log.WithField("Listen", srv.Addr).Info("listening")