forked from TrueCloudLab/frostfs-node
[#798] neofs-node/config: Add persistent_state section
Signed-off-by: Alex Vanin <alexey@nspcc.ru>
This commit is contained in:
parent
005f54e61e
commit
cdb3b71070
5 changed files with 43 additions and 2 deletions
|
@ -11,10 +11,20 @@ import (
|
||||||
utilConfig "github.com/nspcc-dev/neofs-node/pkg/util/config"
|
utilConfig "github.com/nspcc-dev/neofs-node/pkg/util/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// PersistentStateConfig is a wrapper over "persistent_state" config section
|
||||||
|
// which provides access to persistent state storage configuration of node.
|
||||||
|
type PersistentStateConfig struct {
|
||||||
|
cfg *config.Config
|
||||||
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
subsection = "node"
|
subsection = "node"
|
||||||
|
persistentStateSubsection = "persistent_state"
|
||||||
|
|
||||||
attributePrefix = "attribute"
|
attributePrefix = "attribute"
|
||||||
|
|
||||||
|
// PersistentStatePathDefault is a default path for persistent state file.
|
||||||
|
PersistentStatePathDefault = ".neofs-storage-state"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Key returns value of "key" config parameter
|
// Key returns value of "key" config parameter
|
||||||
|
@ -115,3 +125,23 @@ func Attributes(c *config.Config) (attrs []string) {
|
||||||
func Relay(c *config.Config) bool {
|
func Relay(c *config.Config) bool {
|
||||||
return config.BoolSafe(c.Sub(subsection), "relay")
|
return config.BoolSafe(c.Sub(subsection), "relay")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// PersistentState returns structure that provides access to "persistent_state"
|
||||||
|
// subsection of "node" section.
|
||||||
|
func PersistentState(c *config.Config) PersistentStateConfig {
|
||||||
|
return PersistentStateConfig{
|
||||||
|
c.Sub(subsection).Sub(persistentStateSubsection),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Path returns value of "path" config parameter.
|
||||||
|
//
|
||||||
|
// Returns PersistentStatePathDefault if value is not a non-empty string.
|
||||||
|
func (p PersistentStateConfig) Path() string {
|
||||||
|
v := config.String(p.cfg, "path")
|
||||||
|
if v != "" {
|
||||||
|
return v
|
||||||
|
}
|
||||||
|
|
||||||
|
return PersistentStatePathDefault
|
||||||
|
}
|
||||||
|
|
|
@ -30,9 +30,11 @@ func TestNodeSection(t *testing.T) {
|
||||||
|
|
||||||
attribute := Attributes(empty)
|
attribute := Attributes(empty)
|
||||||
relay := Relay(empty)
|
relay := Relay(empty)
|
||||||
|
persistatePath := PersistentState(empty).Path()
|
||||||
|
|
||||||
require.Empty(t, attribute)
|
require.Empty(t, attribute)
|
||||||
require.Equal(t, false, relay)
|
require.Equal(t, false, relay)
|
||||||
|
require.Equal(t, PersistentStatePathDefault, persistatePath)
|
||||||
})
|
})
|
||||||
|
|
||||||
const path = "../../../../config/example/node"
|
const path = "../../../../config/example/node"
|
||||||
|
@ -43,6 +45,7 @@ func TestNodeSection(t *testing.T) {
|
||||||
attributes := Attributes(c)
|
attributes := Attributes(c)
|
||||||
relay := Relay(c)
|
relay := Relay(c)
|
||||||
wKey := Wallet(c)
|
wKey := Wallet(c)
|
||||||
|
persistatePath := PersistentState(c).Path()
|
||||||
|
|
||||||
expectedAddr := []struct {
|
expectedAddr := []struct {
|
||||||
str string
|
str string
|
||||||
|
@ -94,6 +97,8 @@ func TestNodeSection(t *testing.T) {
|
||||||
require.Equal(t,
|
require.Equal(t,
|
||||||
config.StringSafe(c.Sub("node").Sub("wallet"), "address"),
|
config.StringSafe(c.Sub("node").Sub("wallet"), "address"),
|
||||||
address.Uint160ToString(wKey.GetScriptHash()))
|
address.Uint160ToString(wKey.GetScriptHash()))
|
||||||
|
|
||||||
|
require.Equal(t, "/state", persistatePath)
|
||||||
}
|
}
|
||||||
|
|
||||||
configtest.ForEachFileType(path, fileConfigTest)
|
configtest.ForEachFileType(path, fileConfigTest)
|
||||||
|
|
|
@ -15,6 +15,7 @@ NEOFS_NODE_ADDRESSES=s01.neofs.devenv:8080 /dns4/s02.neofs.devenv/tcp/8081 grpc:
|
||||||
NEOFS_NODE_ATTRIBUTE_0=Price:11
|
NEOFS_NODE_ATTRIBUTE_0=Price:11
|
||||||
NEOFS_NODE_ATTRIBUTE_1=UN-LOCODE:RU MSK
|
NEOFS_NODE_ATTRIBUTE_1=UN-LOCODE:RU MSK
|
||||||
NEOFS_NODE_RELAY=true
|
NEOFS_NODE_RELAY=true
|
||||||
|
NEOFS_NODE_PERSISTENT_STATE_PATH=/state
|
||||||
|
|
||||||
# gRPC section
|
# gRPC section
|
||||||
NEOFS_GRPC_NUM=2
|
NEOFS_GRPC_NUM=2
|
||||||
|
|
|
@ -25,7 +25,10 @@
|
||||||
],
|
],
|
||||||
"attribute_0": "Price:11",
|
"attribute_0": "Price:11",
|
||||||
"attribute_1": "UN-LOCODE:RU MSK",
|
"attribute_1": "UN-LOCODE:RU MSK",
|
||||||
"relay": true
|
"relay": true,
|
||||||
|
"persistent_state": {
|
||||||
|
"path": "/state"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"grpc": {
|
"grpc": {
|
||||||
"num": 2,
|
"num": 2,
|
||||||
|
|
|
@ -23,6 +23,8 @@ node:
|
||||||
attribute_0: "Price:11"
|
attribute_0: "Price:11"
|
||||||
attribute_1: UN-LOCODE:RU MSK
|
attribute_1: UN-LOCODE:RU MSK
|
||||||
relay: true
|
relay: true
|
||||||
|
persistent_state:
|
||||||
|
path: /state
|
||||||
|
|
||||||
grpc:
|
grpc:
|
||||||
num: 2
|
num: 2
|
||||||
|
|
Loading…
Reference in a new issue