X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/71229e23918b698caa7c6c8b62b368d4aef2ab85..641ef213571f793bb290a182dee3c4325bc85096:/services/keep-web/main.go diff --git a/services/keep-web/main.go b/services/keep-web/main.go index cd55355c7c..d09fce706c 100644 --- a/services/keep-web/main.go +++ b/services/keep-web/main.go @@ -1,18 +1,24 @@ +// Copyright (C) The Arvados Authors. All rights reserved. +// +// SPDX-License-Identifier: AGPL-3.0 + package main import ( "flag" - "log" + "fmt" "os" + "time" "git.curoverse.com/arvados.git/sdk/go/arvados" "git.curoverse.com/arvados.git/sdk/go/config" + log "github.com/Sirupsen/logrus" "github.com/coreos/go-systemd/daemon" - "github.com/ghodss/yaml" ) var ( defaultConfigPath = "/etc/arvados/keep-web/keep-web.yml" + version = "dev" ) // Config specifies server configuration. @@ -25,15 +31,28 @@ type Config struct { AttachmentOnlyHost string TrustAllContent bool + Cache cache + // Hack to support old command line flag, which is a bool // meaning "get actual token from environment". deprecatedAllowAnonymous bool + + //Authorization token to be included in all health check requests. + ManagementToken string } // DefaultConfig returns the default configuration. func DefaultConfig() *Config { return &Config{ Listen: ":80", + Cache: cache{ + TTL: arvados.Duration(5 * time.Minute), + UUIDTTL: arvados.Duration(5 * time.Second), + MaxCollectionEntries: 1000, + MaxCollectionBytes: 100000000, + MaxPermissionEntries: 1000, + MaxUUIDEntries: 1000, + }, } } @@ -46,6 +65,10 @@ func init() { if os.Getenv("ARVADOS_API_TOKEN") == "" { os.Setenv("ARVADOS_API_TOKEN", "xxx") } + + log.SetFormatter(&log.JSONFormatter{ + TimestampFormat: "2006-01-02T15:04:05.000000000Z07:00", + }) } func main() { @@ -63,11 +86,22 @@ func main() { "Only serve attachments at the given `host:port`"+deprecated) flag.BoolVar(&cfg.TrustAllContent, "trust-all-content", false, "Serve non-public content from a single origin. Dangerous: read docs before using!"+deprecated) + flag.StringVar(&cfg.ManagementToken, "management-token", "", + "Authorization token to be included in all health check requests.") + dumpConfig := flag.Bool("dump-config", false, "write current configuration to stdout and exit") + getVersion := flag.Bool("version", false, + "print version information and exit.") flag.Usage = usage flag.Parse() + // Print version information if requested + if *getVersion { + fmt.Printf("keep-web %s\n", version) + return + } + if err := config.LoadFile(cfg, configPath); err != nil { if h := os.Getenv("ARVADOS_API_HOST"); h != "" && configPath == defaultConfigPath { log.Printf("DEPRECATED: Using ARVADOS_API_HOST environment variable. Use config file instead.") @@ -82,14 +116,11 @@ func main() { } if *dumpConfig { - y, err := yaml.Marshal(cfg) - if err != nil { - log.Fatal(err) - } - os.Stdout.Write(y) - os.Exit(0) + log.Fatal(config.DumpAndExit(cfg)) } + log.Printf("keep-web %s started", version) + os.Setenv("ARVADOS_API_HOST", cfg.Client.APIHost) srv := &server{Config: cfg} if err := srv.Start(); err != nil {