X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/09a2e88c51e5432e607f2a38466e55b4ba15e887..3134a937ab5133d73c799618f2a53e21e7c8a460:/services/keepstore/keepstore.go diff --git a/services/keepstore/keepstore.go b/services/keepstore/keepstore.go index 4eaaea8ea3..f3d30d9831 100644 --- a/services/keepstore/keepstore.go +++ b/services/keepstore/keepstore.go @@ -1,9 +1,12 @@ +// Copyright (C) The Arvados Authors. All rights reserved. +// +// SPDX-License-Identifier: AGPL-3.0 + package main import ( "flag" "fmt" - "log" "net" "net/http" "os" @@ -15,10 +18,12 @@ import ( "git.curoverse.com/arvados.git/sdk/go/config" "git.curoverse.com/arvados.git/sdk/go/httpserver" "git.curoverse.com/arvados.git/sdk/go/keepclient" + log "github.com/Sirupsen/logrus" "github.com/coreos/go-systemd/daemon" - "github.com/ghodss/yaml" ) +var version = "dev" + // A Keep "block" is 64MB. const BlockSize = 64 * 1024 * 1024 @@ -86,6 +91,7 @@ func main() { deprecated.beforeFlagParse(theConfig) dumpConfig := flag.Bool("dump-config", false, "write current configuration to stdout and exit (useful for migrating from command line flags to config file)") + getVersion := flag.Bool("version", false, "Print version information and exit.") defaultConfigPath := "/etc/arvados/keepstore/keepstore.yml" var configPath string @@ -97,6 +103,12 @@ func main() { flag.Usage = usage flag.Parse() + // Print version information if requested + if *getVersion { + fmt.Printf("keepstore %s\n", version) + return + } + deprecated.afterFlagParse(theConfig) err := config.LoadFile(theConfig, configPath) @@ -105,14 +117,11 @@ func main() { } if *dumpConfig { - y, err := yaml.Marshal(theConfig) - if err != nil { - log.Fatal(err) - } - os.Stdout.Write(y) - os.Exit(0) + log.Fatal(config.DumpAndExit(theConfig)) } + log.Printf("keepstore %s started", version) + err = theConfig.Start() if err != nil { log.Fatal(err) @@ -150,10 +159,10 @@ func main() { KeepVM = MakeRRVolumeManager(theConfig.Volumes) // Middleware stack: logger, MaxRequests limiter, method handlers - http.Handle("/", &LoggingRESTRouter{ - httpserver.NewRequestLimiter(theConfig.MaxRequests, - MakeRESTRouter()), - }) + router := MakeRESTRouter() + limiter := httpserver.NewRequestLimiter(theConfig.MaxRequests, router) + router.limiter = limiter + http.Handle("/", &LoggingRESTRouter{router: limiter}) // Set up a TCP listener. listener, err := net.Listen("tcp", theConfig.Listen) @@ -165,7 +174,6 @@ func main() { keepClient := &keepclient.KeepClient{ Arvados: &arvadosclient.ArvadosClient{}, Want_replicas: 1, - Client: &http.Client{}, } // Initialize the pullq and worker