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 (
|
import (
|
||||||
"context"
|
"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"
|
"github.com/nspcc-dev/neofs-node/pkg/services/tree"
|
||||||
)
|
)
|
||||||
|
|
||||||
func initTreeService(c *cfg) {
|
func initTreeService(c *cfg) {
|
||||||
sub := c.appCfg.Sub("tree")
|
treeConfig := treeconfig.Tree(c.appCfg)
|
||||||
if !config.BoolSafe(sub, "enabled") {
|
if !treeConfig.Enabled() {
|
||||||
c.log.Info("tree service is not enabled, skip initialization")
|
c.log.Info("tree service is not enabled, skip initialization")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -20,9 +20,9 @@ func initTreeService(c *cfg) {
|
||||||
tree.WithPrivateKey(&c.key.PrivateKey),
|
tree.WithPrivateKey(&c.key.PrivateKey),
|
||||||
tree.WithLogger(c.log),
|
tree.WithLogger(c.log),
|
||||||
tree.WithStorage(c.cfgObject.cfgLocalStorage.localStorage),
|
tree.WithStorage(c.cfgObject.cfgLocalStorage.localStorage),
|
||||||
tree.WithContainerCacheSize(int(config.IntSafe(sub, "cache_size"))),
|
tree.WithContainerCacheSize(treeConfig.CacheSize()),
|
||||||
tree.WithReplicationChannelCapacity(int(config.IntSafe(sub, "replication_channel_capacity"))),
|
tree.WithReplicationChannelCapacity(treeConfig.ReplicationChannelCapacity()),
|
||||||
tree.WithReplicationWorkerCount(int(config.IntSafe(sub, "replication_worker_count"))))
|
tree.WithReplicationWorkerCount(treeConfig.ReplicationWorkerCount()))
|
||||||
|
|
||||||
for _, srv := range c.cfgGRPC.servers {
|
for _, srv := range c.cfgGRPC.servers {
|
||||||
tree.RegisterTreeServiceServer(srv, c.treeService)
|
tree.RegisterTreeServiceServer(srv, c.treeService)
|
||||||
|
|
Loading…
Reference in a new issue