github.com/juju/juju@v0.0.0-20240327075706-a90865de2538/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 getLogSinkConfig(cfg agent.Config) (apiserver.LogSinkConfig, error) {
    17  	result := apiserver.DefaultLogSinkConfig()
    18  	var err error
    19  	if v := cfg.Value(agent.LogSinkDBLoggerBufferSize); v != "" {
    20  		result.DBLoggerBufferSize, err = strconv.Atoi(v)
    21  		if err != nil {
    22  			return result, errors.Annotatef(
    23  				err, "parsing %s", agent.LogSinkDBLoggerBufferSize,
    24  			)
    25  		}
    26  	}
    27  	if v := cfg.Value(agent.LogSinkDBLoggerFlushInterval); v != "" {
    28  		if result.DBLoggerFlushInterval, err = time.ParseDuration(v); err != nil {
    29  			return result, errors.Annotatef(
    30  				err, "parsing %s", agent.LogSinkDBLoggerFlushInterval,
    31  			)
    32  		}
    33  	}
    34  	if v := cfg.Value(agent.LogSinkRateLimitBurst); v != "" {
    35  		result.RateLimitBurst, err = strconv.ParseInt(v, 10, 64)
    36  		if err != nil {
    37  			return result, errors.Annotatef(
    38  				err, "parsing %s", agent.LogSinkRateLimitBurst,
    39  			)
    40  		}
    41  	}
    42  	if v := cfg.Value(agent.LogSinkRateLimitRefill); v != "" {
    43  		result.RateLimitRefill, err = time.ParseDuration(v)
    44  		if err != nil {
    45  			return result, errors.Annotatef(
    46  				err, "parsing %s", agent.LogSinkRateLimitRefill,
    47  			)
    48  		}
    49  	}
    50  	return result, nil
    51  }