X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/71229e23918b698caa7c6c8b62b368d4aef2ab85..5012102bb1854af9ae591c755feb2ea9c874b708:/services/keep-balance/main.go diff --git a/services/keep-balance/main.go b/services/keep-balance/main.go index 926a0f2da3..947033564d 100644 --- a/services/keep-balance/main.go +++ b/services/keep-balance/main.go @@ -1,8 +1,13 @@ +// Copyright (C) The Arvados Authors. All rights reserved. +// +// SPDX-License-Identifier: AGPL-3.0 + package main import ( "encoding/json" "flag" + "fmt" "log" "os" "os/signal" @@ -11,9 +16,10 @@ import ( "git.curoverse.com/arvados.git/sdk/go/arvados" "git.curoverse.com/arvados.git/sdk/go/config" - "github.com/ghodss/yaml" ) +var version = "dev" + const defaultConfigPath = "/etc/arvados/keep-balance/keep-balance.yml" // Config specifies site configuration, like API credentials and the @@ -65,7 +71,7 @@ type RunOptions struct { var debugf = func(string, ...interface{}) {} func main() { - var config Config + var cfg Config var runOptions RunOptions configPath := flag.String("config", defaultConfigPath, @@ -82,26 +88,30 @@ func main() { dumpConfig := flag.Bool("dump-config", false, "write current configuration to stdout and exit") dumpFlag := flag.Bool("dump", false, "dump details for each block to stdout") debugFlag := flag.Bool("debug", false, "enable debug messages") + getVersion := flag.Bool("version", false, "Print version information and exit.") flag.Usage = usage flag.Parse() - mustReadConfig(&config, *configPath) + // Print version information if requested + if *getVersion { + fmt.Printf("keep-balance %s\n", version) + return + } + + mustReadConfig(&cfg, *configPath) if *serviceListPath != "" { - mustReadConfig(&config.KeepServiceList, *serviceListPath) + mustReadConfig(&cfg.KeepServiceList, *serviceListPath) } if *dumpConfig { - y, err := yaml.Marshal(config) - if err != nil { - log.Fatal(err) - } - os.Stdout.Write(y) - os.Exit(0) + log.Fatal(config.DumpAndExit(cfg)) } + log.Printf("keep-balance %s started", version) + if *debugFlag { debugf = log.Printf - if j, err := json.Marshal(config); err != nil { + if j, err := json.Marshal(cfg); err != nil { log.Fatal(err) } else { log.Printf("config is %s", j) @@ -110,13 +120,13 @@ func main() { if *dumpFlag { runOptions.Dumper = log.New(os.Stdout, "", log.LstdFlags) } - err := CheckConfig(config, runOptions) + err := CheckConfig(cfg, runOptions) if err != nil { // (don't run) } else if runOptions.Once { - _, err = (&Balancer{}).Run(config, runOptions) + _, err = (&Balancer{}).Run(cfg, runOptions) } else { - err = RunForever(config, runOptions, nil) + err = RunForever(cfg, runOptions, nil) } if err != nil { log.Fatal(err)