2021-02-02 11:12:41 +00:00
|
|
|
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 (
|
2021-06-09 11:00:55 +00:00
|
|
|
"github.com/nspcc-dev/neofs-node/misc"
|
2021-02-02 11:12:41 +00:00
|
|
|
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) {
|
2021-06-09 11:00:55 +00:00
|
|
|
if isDebug() {
|
|
|
|
value := c.cfg.GetUint64("settlement.basic_income_rate")
|
|
|
|
if value != 0 {
|
|
|
|
return value, nil
|
|
|
|
}
|
2021-02-02 11:12:41 +00:00
|
|
|
}
|
|
|
|
|
2021-04-15 06:42:35 +00:00
|
|
|
return c.nm.BasicIncomeRate()
|
2021-02-02 11:12:41 +00:00
|
|
|
}
|
2021-04-07 10:53:13 +00:00
|
|
|
|
|
|
|
func (c *GlobalConfig) AuditFee() (uint64, error) {
|
2021-06-09 11:00:55 +00:00
|
|
|
if isDebug() {
|
|
|
|
value := c.cfg.GetUint64("settlement.audit_fee")
|
|
|
|
if value != 0 {
|
|
|
|
return value, nil
|
|
|
|
}
|
2021-04-07 10:53:13 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return c.nm.AuditFee()
|
|
|
|
}
|
2021-04-15 06:43:49 +00:00
|
|
|
|
|
|
|
func (c *GlobalConfig) EpochDuration() (uint32, error) {
|
2021-06-09 11:00:55 +00:00
|
|
|
if isDebug() {
|
|
|
|
value := c.cfg.GetUint32("timers.epoch")
|
|
|
|
if value != 0 {
|
|
|
|
return value, nil
|
|
|
|
}
|
2021-04-15 06:43:49 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
epochDuration, err := c.nm.EpochDuration()
|
|
|
|
if err != nil {
|
|
|
|
return 0, err
|
|
|
|
}
|
|
|
|
|
|
|
|
return uint32(epochDuration), nil
|
|
|
|
}
|
2021-06-09 11:00:55 +00:00
|
|
|
|
|
|
|
func isDebug() bool {
|
|
|
|
return misc.Debug == "true"
|
|
|
|
}
|