14087: Check for remote clusters before searching
[arvados.git] / services / ws / main.go
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 package main
6
7 import (
8         "flag"
9         "fmt"
10
11         "git.curoverse.com/arvados.git/sdk/go/config"
12         "git.curoverse.com/arvados.git/sdk/go/ctxlog"
13 )
14
15 var logger = ctxlog.FromContext
16 var version = "dev"
17
18 func main() {
19         log := logger(nil)
20
21         configPath := flag.String("config", "/etc/arvados/ws/ws.yml", "`path` to config file")
22         dumpConfig := flag.Bool("dump-config", false, "show current configuration and exit")
23         getVersion := flag.Bool("version", false, "Print version information and exit.")
24         cfg := defaultConfig()
25         flag.Parse()
26
27         // Print version information if requested
28         if *getVersion {
29                 fmt.Printf("arvados-ws %s\n", version)
30                 return
31         }
32
33         err := config.LoadFile(&cfg, *configPath)
34         if err != nil {
35                 log.Fatal(err)
36         }
37
38         ctxlog.SetLevel(cfg.LogLevel)
39         ctxlog.SetFormat(cfg.LogFormat)
40
41         if *dumpConfig {
42                 txt, err := config.Dump(&cfg)
43                 if err != nil {
44                         log.Fatal(err)
45                 }
46                 fmt.Print(string(txt))
47                 return
48         }
49
50         log.Printf("arvados-ws %s started", version)
51         srv := &server{wsConfig: &cfg}
52         log.Fatal(srv.Run())
53 }