github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/worker/apiserver/config.go (about) 1 // Copyright 2017 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package apiserver 5 6 import ( 7 "strconv" 8 "time" 9 10 "github.com/juju/errors" 11 12 "github.com/juju/juju/agent" 13 "github.com/juju/juju/apiserver" 14 ) 15 16 func getRateLimitConfig(cfg agent.Config) (apiserver.RateLimitConfig, error) { 17 result := apiserver.DefaultRateLimitConfig() 18 if v := cfg.Value(agent.AgentLoginRateLimit); v != "" { 19 val, err := strconv.Atoi(v) 20 if err != nil { 21 return apiserver.RateLimitConfig{}, errors.Annotatef( 22 err, "parsing %s", agent.AgentLoginRateLimit, 23 ) 24 } 25 result.LoginRateLimit = val 26 } 27 if v := cfg.Value(agent.AgentLoginMinPause); v != "" { 28 val, err := time.ParseDuration(v) 29 if err != nil { 30 return apiserver.RateLimitConfig{}, errors.Annotatef( 31 err, "parsing %s", agent.AgentLoginMinPause, 32 ) 33 } 34 result.LoginMinPause = val 35 } 36 if v := cfg.Value(agent.AgentLoginMaxPause); v != "" { 37 val, err := time.ParseDuration(v) 38 if err != nil { 39 return apiserver.RateLimitConfig{}, errors.Annotatef( 40 err, "parsing %s", agent.AgentLoginMaxPause, 41 ) 42 } 43 result.LoginMaxPause = val 44 } 45 if v := cfg.Value(agent.AgentLoginRetryPause); v != "" { 46 val, err := time.ParseDuration(v) 47 if err != nil { 48 return apiserver.RateLimitConfig{}, errors.Annotatef( 49 err, "parsing %s", agent.AgentLoginRetryPause, 50 ) 51 } 52 result.LoginRetryPause = val 53 } 54 if v := cfg.Value(agent.AgentConnMinPause); v != "" { 55 val, err := time.ParseDuration(v) 56 if err != nil { 57 return apiserver.RateLimitConfig{}, errors.Annotatef( 58 err, "parsing %s", agent.AgentConnMinPause, 59 ) 60 } 61 result.ConnMinPause = val 62 } 63 if v := cfg.Value(agent.AgentConnMaxPause); v != "" { 64 val, err := time.ParseDuration(v) 65 if err != nil { 66 return apiserver.RateLimitConfig{}, errors.Annotatef( 67 err, "parsing %s", agent.AgentConnMaxPause, 68 ) 69 } 70 result.ConnMaxPause = val 71 } 72 if v := cfg.Value(agent.AgentConnLookbackWindow); v != "" { 73 val, err := time.ParseDuration(v) 74 if err != nil { 75 return apiserver.RateLimitConfig{}, errors.Annotatef( 76 err, "parsing %s", agent.AgentConnLookbackWindow, 77 ) 78 } 79 result.ConnLookbackWindow = val 80 } 81 if v := cfg.Value(agent.AgentConnLowerThreshold); v != "" { 82 val, err := strconv.Atoi(v) 83 if err != nil { 84 return apiserver.RateLimitConfig{}, errors.Annotatef( 85 err, "parsing %s", agent.AgentConnLowerThreshold, 86 ) 87 } 88 result.ConnLowerThreshold = val 89 } 90 if v := cfg.Value(agent.AgentConnUpperThreshold); v != "" { 91 val, err := strconv.Atoi(v) 92 if err != nil { 93 return apiserver.RateLimitConfig{}, errors.Annotatef( 94 err, "parsing %s", agent.AgentConnUpperThreshold, 95 ) 96 } 97 result.ConnUpperThreshold = val 98 } 99 return result, nil 100 } 101 102 func getLogSinkConfig(cfg agent.Config) (apiserver.LogSinkConfig, error) { 103 result := apiserver.DefaultLogSinkConfig() 104 var err error 105 if v := cfg.Value(agent.LogSinkDBLoggerBufferSize); v != "" { 106 result.DBLoggerBufferSize, err = strconv.Atoi(v) 107 if err != nil { 108 return result, errors.Annotatef( 109 err, "parsing %s", agent.LogSinkDBLoggerBufferSize, 110 ) 111 } 112 } 113 if v := cfg.Value(agent.LogSinkDBLoggerFlushInterval); v != "" { 114 if result.DBLoggerFlushInterval, err = time.ParseDuration(v); err != nil { 115 return result, errors.Annotatef( 116 err, "parsing %s", agent.LogSinkDBLoggerFlushInterval, 117 ) 118 } 119 } 120 if v := cfg.Value(agent.LogSinkRateLimitBurst); v != "" { 121 result.RateLimitBurst, err = strconv.ParseInt(v, 10, 64) 122 if err != nil { 123 return result, errors.Annotatef( 124 err, "parsing %s", agent.LogSinkRateLimitBurst, 125 ) 126 } 127 } 128 if v := cfg.Value(agent.LogSinkRateLimitRefill); v != "" { 129 result.RateLimitRefill, err = time.ParseDuration(v) 130 if err != nil { 131 return result, errors.Annotatef( 132 err, "parsing %s", agent.LogSinkRateLimitRefill, 133 ) 134 } 135 } 136 return result, nil 137 }