frostfs-node/cmd/frostfs-node/config/tree/config.go

95 lines
2.7 KiB
Go

package treeconfig
import (
"fmt"
"time"
"git.frostfs.info/TrueCloudLab/frostfs-node/cmd/frostfs-node/config"
"github.com/nspcc-dev/neo-go/pkg/crypto/keys"
)
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"))
}
// ReplicationTimeout returns the value of "replication_timeout"
// config parameter from the "tree" section.
//
// Returns `0` if config value is not specified.
func (c TreeConfig) ReplicationTimeout() time.Duration {
return config.DurationSafe(c.cfg, "replication_timeout")
}
// 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"))
}
// SyncInterval returns the value of "sync_interval"
// config parameter from the "tree" section.
//
// Returns 0 if config value is not specified.
func (c TreeConfig) SyncInterval() time.Duration {
return config.DurationSafe(c.cfg, "sync_interval")
}
// AuthorizedKeys parses and returns an array of "authorized_keys" config
// parameter from "tree" section.
//
// Returns an empty list if not set.
func (c TreeConfig) AuthorizedKeys() keys.PublicKeys {
authorizedKeysStr := config.StringSliceSafe(c.cfg, "authorized_keys")
authorizedKeys := make(keys.PublicKeys, 0, len(authorizedKeysStr))
for i := range authorizedKeysStr {
pub, err := keys.NewPublicKeyFromString(authorizedKeysStr[i])
if err != nil {
panic(fmt.Errorf("could not parse Tree authorized key %s: %w", authorizedKeysStr[i], err))
}
authorizedKeys = append(authorizedKeys, pub)
}
return authorizedKeys
}