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  }