14324: Use logrus in Azure driver. Fix Sirupsen->sirupsen in imports
[arvados.git] / services / keepstore / config.go
index 8824db9dc54afd9ea4cf341a98171651084c8ff3..2bd989de30c1bffc020777ba1ecbb895591570cf 100644 (file)
@@ -1,3 +1,7 @@
+// Copyright (C) The Arvados Authors. All rights reserved.
+//
+// SPDX-License-Identifier: AGPL-3.0
+
 package main
 
 import (
@@ -9,7 +13,7 @@ import (
        "time"
 
        "git.curoverse.com/arvados.git/sdk/go/arvados"
-       log "github.com/Sirupsen/logrus"
+       "github.com/sirupsen/logrus"
 )
 
 type Config struct {
@@ -30,15 +34,34 @@ type Config struct {
        EnableDelete        bool
        TrashLifetime       arvados.Duration
        TrashCheckInterval  arvados.Duration
+       PullWorkers         int
+       TrashWorkers        int
+       EmptyTrashWorkers   int
+       TLSCertificateFile  string
+       TLSKeyFile          string
 
        Volumes VolumeList
 
        blobSigningKey  []byte
        systemAuthToken string
        debugLogf       func(string, ...interface{})
+
+       ManagementToken string
 }
 
-var theConfig = DefaultConfig()
+var (
+       theConfig = DefaultConfig()
+       formatter = map[string]logrus.Formatter{
+               "text": &logrus.TextFormatter{
+                       FullTimestamp:   true,
+                       TimestampFormat: rfc3339NanoFixed,
+               },
+               "json": &logrus.JSONFormatter{
+                       TimestampFormat: rfc3339NanoFixed,
+               },
+       }
+       log = logrus.StandardLogger()
+)
 
 const rfc3339NanoFixed = "2006-01-02T15:04:05.000000000Z07:00"
 
@@ -60,25 +83,19 @@ func DefaultConfig() *Config {
 // fields, and before using the config.
 func (cfg *Config) Start() error {
        if cfg.Debug {
-               log.SetLevel(log.DebugLevel)
+               log.Level = logrus.DebugLevel
                cfg.debugLogf = log.Printf
                cfg.debugLogf("debugging enabled")
        } else {
+               log.Level = logrus.InfoLevel
                cfg.debugLogf = func(string, ...interface{}) {}
        }
 
-       switch strings.ToLower(cfg.LogFormat) {
-       case "text":
-               log.SetFormatter(&log.TextFormatter{
-                       TimestampFormat: rfc3339NanoFixed,
-               })
-       case "json":
-               log.SetFormatter(&log.JSONFormatter{
-                       TimestampFormat: rfc3339NanoFixed,
-               })
-       default:
+       f := formatter[strings.ToLower(cfg.LogFormat)]
+       if f == nil {
                return fmt.Errorf(`unsupported log format %q (try "text" or "json")`, cfg.LogFormat)
        }
+       log.Formatter = f
 
        if cfg.MaxBuffers < 0 {
                return fmt.Errorf("MaxBuffers must be greater than zero")
@@ -141,9 +158,9 @@ var VolumeTypes = []func() VolumeWithExamples{}
 
 type VolumeList []Volume
 
-// UnmarshalJSON, given an array of objects, deserializes each object
-// as the volume type indicated by the object's Type field.
-func (vols *VolumeList) UnmarshalJSON(data []byte) error {
+// UnmarshalJSON -- given an array of objects -- deserializes each
+// object as the volume type indicated by the object's Type field.
+func (vl *VolumeList) UnmarshalJSON(data []byte) error {
        typeMap := map[string]func() VolumeWithExamples{}
        for _, factory := range VolumeTypes {
                t := factory().Type()
@@ -176,7 +193,7 @@ func (vols *VolumeList) UnmarshalJSON(data []byte) error {
                if err != nil {
                        return err
                }
-               *vols = append(*vols, vol)
+               *vl = append(*vl, vol)
        }
        return nil
 }