"flag"
"fmt"
"io"
- "log"
"net"
"net/http"
"net/url"
log.WithError(err).Info("exiting")
}
}()
+
flags := flag.NewFlagSet("", flag.ContinueOnError)
flags.SetOutput(stderr)
- configFile := flags.String("config", arvados.DefaultConfigFile, "Site configuration `file`")
+
+ loader := config.NewLoader(stdin, log)
+ loader.SetupFlags(flags)
+ versionFlag := flags.Bool("version", false, "Write version information to stdout and exit 0")
+
err = flags.Parse(args)
if err == flag.ErrHelp {
err = nil
return 0
} else if err != nil {
return 2
+ } else if *versionFlag {
+ return cmd.Version.RunCommand(prog, args, stdin, stdout, stderr)
}
- cfg, err := config.LoadFile(*configFile, log)
+
+ cfg, err := loader.Load()
if err != nil {
return 1
}
}
srv := &httpserver.Server{
Server: http.Server{
- Handler: httpserver.AddRequestIDs(httpserver.LogRequests(log, handler)),
+ Handler: httpserver.HandlerWithContext(ctx,
+ httpserver.AddRequestIDs(httpserver.LogRequests(handler))),
},
Addr: listen,
}
const rfc3339NanoFixed = "2006-01-02T15:04:05.000000000Z07:00"
func getListenAddr(svcs arvados.Services, prog arvados.ServiceName) (string, error) {
- svc, ok := map[arvados.ServiceName]arvados.Service{
- arvados.ServiceNameController: svcs.Controller,
- arvados.ServiceNameDispatchCloud: svcs.DispatchCloud,
- arvados.ServiceNameHealth: svcs.Health,
- arvados.ServiceNameKeepbalance: svcs.Keepbalance,
- arvados.ServiceNameKeepproxy: svcs.Keepproxy,
- arvados.ServiceNameKeepstore: svcs.Keepstore,
- arvados.ServiceNameKeepweb: svcs.WebDAV,
- arvados.ServiceNameWebsocket: svcs.Websocket,
- }[prog]
+ svc, ok := svcs.Map()[prog]
if !ok {
return "", fmt.Errorf("unknown service name %q", prog)
}
listener.Close()
return url.Host, nil
}
- log.Print(err)
-
}
return "", fmt.Errorf("configuration does not enable the %s service on this host", prog)
}