forked from TrueCloudLab/frostfs-node
[#1627] node: Add tree service to the config framework
Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
This commit is contained in:
parent
a0fae0443f
commit
8162b27264
3 changed files with 99 additions and 6 deletions
53
cmd/neofs-node/config/tree/config.go
Normal file
53
cmd/neofs-node/config/tree/config.go
Normal file
|
@ -0,0 +1,53 @@
|
|||
package treeconfig
|
||||
|
||||
import "github.com/nspcc-dev/neofs-node/cmd/neofs-node/config"
|
||||
|
||||
const (
|
||||
subsection = "tree"
|
||||
)
|
||||
|
||||
// TreeConfig is a wrapper over "tree" config section
|
||||
// which provides access to the configuration of the tree service.
|
||||
type TreeConfig struct {
|
||||
cfg *config.Config
|
||||
}
|
||||
|
||||
// Tree returns structure that provides access to a "tree"
|
||||
// configuration subsection.
|
||||
func Tree(c *config.Config) TreeConfig {
|
||||
return TreeConfig{
|
||||
c.Sub(subsection),
|
||||
}
|
||||
}
|
||||
|
||||
// Enabled returns the value of "enabled" config parameter
|
||||
// from the "tree" section.
|
||||
//
|
||||
// Returns `false` if config value is not specified.
|
||||
func (c TreeConfig) Enabled() bool {
|
||||
return config.BoolSafe(c.cfg, "enabled")
|
||||
}
|
||||
|
||||
// CacheSize returns the value of "cache_size" config parameter
|
||||
// from the "tree" section.
|
||||
//
|
||||
// Returns `0` if config value is not specified.
|
||||
func (c TreeConfig) CacheSize() int {
|
||||
return int(config.IntSafe(c.cfg, "cache_size"))
|
||||
}
|
||||
|
||||
// ReplicationChannelCapacity returns the value of "replication_channel_capacity"
|
||||
// config parameter from the "tree" section.
|
||||
//
|
||||
// Returns `0` if config value is not specified.
|
||||
func (c TreeConfig) ReplicationChannelCapacity() int {
|
||||
return int(config.IntSafe(c.cfg, "replication_channel_capacity"))
|
||||
}
|
||||
|
||||
// ReplicationWorkerCount returns the value of "replication_worker_count"
|
||||
// config parameter from the "tree" section.
|
||||
//
|
||||
// Returns `0` if config value is not specified.
|
||||
func (c TreeConfig) ReplicationWorkerCount() int {
|
||||
return int(config.IntSafe(c.cfg, "replication_worker_count"))
|
||||
}
|
40
cmd/neofs-node/config/tree/config_test.go
Normal file
40
cmd/neofs-node/config/tree/config_test.go
Normal file
|
@ -0,0 +1,40 @@
|
|||
package treeconfig_test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/nspcc-dev/neofs-node/cmd/neofs-node/config"
|
||||
configtest "github.com/nspcc-dev/neofs-node/cmd/neofs-node/config/test"
|
||||
treeconfig "github.com/nspcc-dev/neofs-node/cmd/neofs-node/config/tree"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestTreeSection(t *testing.T) {
|
||||
t.Run("defaults", func(t *testing.T) {
|
||||
empty := configtest.EmptyConfig()
|
||||
|
||||
treeSec := treeconfig.Tree(empty)
|
||||
|
||||
require.False(t, treeSec.Enabled())
|
||||
require.Equal(t, 0, treeSec.CacheSize())
|
||||
require.Equal(t, 0, treeSec.ReplicationChannelCapacity())
|
||||
require.Equal(t, 0, treeSec.ReplicationWorkerCount())
|
||||
})
|
||||
|
||||
const path = "../../../../config/example/node"
|
||||
|
||||
var fileConfigTest = func(c *config.Config) {
|
||||
treeSec := treeconfig.Tree(c)
|
||||
|
||||
require.True(t, treeSec.Enabled())
|
||||
require.Equal(t, 15, treeSec.CacheSize())
|
||||
require.Equal(t, 32, treeSec.ReplicationChannelCapacity())
|
||||
require.Equal(t, 32, treeSec.ReplicationWorkerCount())
|
||||
}
|
||||
|
||||
configtest.ForEachFileType(path, fileConfigTest)
|
||||
|
||||
t.Run("ENV", func(t *testing.T) {
|
||||
configtest.ForEnvFileType(path, fileConfigTest)
|
||||
})
|
||||
}
|
|
@ -3,13 +3,13 @@ package main
|
|||
import (
|
||||
"context"
|
||||
|
||||
"github.com/nspcc-dev/neofs-node/cmd/neofs-node/config"
|
||||
treeconfig "github.com/nspcc-dev/neofs-node/cmd/neofs-node/config/tree"
|
||||
"github.com/nspcc-dev/neofs-node/pkg/services/tree"
|
||||
)
|
||||
|
||||
func initTreeService(c *cfg) {
|
||||
sub := c.appCfg.Sub("tree")
|
||||
if !config.BoolSafe(sub, "enabled") {
|
||||
treeConfig := treeconfig.Tree(c.appCfg)
|
||||
if !treeConfig.Enabled() {
|
||||
c.log.Info("tree service is not enabled, skip initialization")
|
||||
return
|
||||
}
|
||||
|
@ -20,9 +20,9 @@ func initTreeService(c *cfg) {
|
|||
tree.WithPrivateKey(&c.key.PrivateKey),
|
||||
tree.WithLogger(c.log),
|
||||
tree.WithStorage(c.cfgObject.cfgLocalStorage.localStorage),
|
||||
tree.WithContainerCacheSize(int(config.IntSafe(sub, "cache_size"))),
|
||||
tree.WithReplicationChannelCapacity(int(config.IntSafe(sub, "replication_channel_capacity"))),
|
||||
tree.WithReplicationWorkerCount(int(config.IntSafe(sub, "replication_worker_count"))))
|
||||
tree.WithContainerCacheSize(treeConfig.CacheSize()),
|
||||
tree.WithReplicationChannelCapacity(treeConfig.ReplicationChannelCapacity()),
|
||||
tree.WithReplicationWorkerCount(treeConfig.ReplicationWorkerCount()))
|
||||
|
||||
for _, srv := range c.cfgGRPC.servers {
|
||||
tree.RegisterTreeServiceServer(srv, c.treeService)
|
||||
|
|
Loading…
Reference in a new issue