X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/c07314d641177cfcecf4321a7b7e6771702f5916..4696633ae5e955c267d50a14e790c93d833f41b0:/services/keep-balance/main.go diff --git a/services/keep-balance/main.go b/services/keep-balance/main.go index da4fb62a6a..310c77a21c 100644 --- a/services/keep-balance/main.go +++ b/services/keep-balance/main.go @@ -3,7 +3,6 @@ package main import ( "encoding/json" "flag" - "io/ioutil" "log" "os" "os/signal" @@ -11,8 +10,11 @@ import ( "time" "git.curoverse.com/arvados.git/sdk/go/arvados" + "git.curoverse.com/arvados.git/sdk/go/config" ) +const defaultConfigPath = "/etc/arvados/keep-balance/keep-balance.yml" + // Config specifies site configuration, like API credentials and the // choice of which servers are to be balanced. // @@ -65,10 +67,10 @@ func main() { var config Config var runOptions RunOptions - configPath := flag.String("config", "", - "`path` of json configuration file") + configPath := flag.String("config", defaultConfigPath, + "`path` of JSON or YAML configuration file") serviceListPath := flag.String("config.KeepServiceList", "", - "`path` of json file with list of keep services to balance, as given by \"arv keep_service list\" "+ + "`path` of JSON or YAML file with list of keep services to balance, as given by \"arv keep_service list\" "+ "(default: config[\"KeepServiceList\"], or if none given, get all available services and filter by config[\"KeepServiceTypes\"])") flag.BoolVar(&runOptions.Once, "once", false, "balance once and then exit") @@ -81,12 +83,9 @@ func main() { flag.Usage = usage flag.Parse() - if *configPath == "" { - log.Fatal("You must specify a config file (see `keep-balance -help`)") - } - mustReadJSON(&config, *configPath) + mustReadConfig(&config, *configPath) if *serviceListPath != "" { - mustReadJSON(&config.KeepServiceList, *serviceListPath) + mustReadConfig(&config.KeepServiceList, *serviceListPath) } if *debugFlag { @@ -113,11 +112,9 @@ func main() { } } -func mustReadJSON(dst interface{}, path string) { - if buf, err := ioutil.ReadFile(path); err != nil { - log.Fatalf("Reading %q: %v", path, err) - } else if err = json.Unmarshal(buf, dst); err != nil { - log.Fatalf("Decoding %q: %v", path, err) +func mustReadConfig(dst interface{}, path string) { + if err := config.LoadFile(dst, path); err != nil { + log.Fatal(err) } }