frostfs-node/pkg/innerring/config/config.go
Alex Vanin c33512d976 [#478] morph/client: Add more global config value getters
Including:
- typo fix for `BasicIncomeRate` method
- epoch duration getter,
- container fee getter,
- EigenTrust iterations getter.

Signed-off-by: Alex Vanin <alexey@nspcc.ru>
2021-04-15 17:53:08 +03:00

48 lines
1.2 KiB
Go

package config
/*
Config package contains GlobalConfig structure that implements config
reader from both local and global configurations. Most of the time inner ring
does not need this, as for application it has static config with timeouts,
caches sizes etc. However there are routines that use global configuration
values that can be changed in runtime, e.g. basic income rate. Local
configuration value overrides global one so it is easy to debug and test
in different environments.
Implemented as a part of https://github.com/nspcc-dev/neofs-node/issues/363
*/
import (
netmapClient "github.com/nspcc-dev/neofs-node/pkg/morph/client/netmap/wrapper"
"github.com/spf13/viper"
)
type GlobalConfig struct {
cfg *viper.Viper
nm *netmapClient.Wrapper
}
func NewGlobalConfigReader(cfg *viper.Viper, nm *netmapClient.Wrapper) *GlobalConfig {
return &GlobalConfig{
cfg: cfg,
nm: nm,
}
}
func (c *GlobalConfig) BasicIncomeRate() (uint64, error) {
value := c.cfg.GetUint64("settlement.basic_income_rate")
if value != 0 {
return value, nil
}
return c.nm.BasicIncomeRate()
}
func (c *GlobalConfig) AuditFee() (uint64, error) {
value := c.cfg.GetUint64("settlement.audit_fee")
if value != 0 {
return value, nil
}
return c.nm.AuditFee()
}