forked from TrueCloudLab/frostfs-node
4944490ffb
`Degraded` mode can be set by the administrator if needed. Modifying operations in this mode can lead node into an inconsistent state because metabase checks such as lock checking are not performed. Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
98 lines
2.5 KiB
Go
98 lines
2.5 KiB
Go
package shardconfig
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/nspcc-dev/neofs-node/cmd/neofs-node/config"
|
|
blobstorconfig "github.com/nspcc-dev/neofs-node/cmd/neofs-node/config/engine/shard/blobstor"
|
|
gcconfig "github.com/nspcc-dev/neofs-node/cmd/neofs-node/config/engine/shard/gc"
|
|
metabaseconfig "github.com/nspcc-dev/neofs-node/cmd/neofs-node/config/engine/shard/metabase"
|
|
piloramaconfig "github.com/nspcc-dev/neofs-node/cmd/neofs-node/config/engine/shard/pilorama"
|
|
writecacheconfig "github.com/nspcc-dev/neofs-node/cmd/neofs-node/config/engine/shard/writecache"
|
|
"github.com/nspcc-dev/neofs-node/pkg/local_object_storage/shard/mode"
|
|
)
|
|
|
|
// Config is a wrapper over the config section
|
|
// which provides access to Shard configurations.
|
|
type Config config.Config
|
|
|
|
// From wraps config section into Config.
|
|
func From(c *config.Config) *Config {
|
|
return (*Config)(c)
|
|
}
|
|
|
|
// BlobStor returns "blobstor" subsection as a blobstorconfig.Config.
|
|
func (x *Config) BlobStor() *blobstorconfig.Config {
|
|
return blobstorconfig.From(
|
|
(*config.Config)(x).
|
|
Sub("blobstor"),
|
|
)
|
|
}
|
|
|
|
// Metabase returns "metabase" subsection as a metabaseconfig.Config.
|
|
func (x *Config) Metabase() *metabaseconfig.Config {
|
|
return metabaseconfig.From(
|
|
(*config.Config)(x).
|
|
Sub("metabase"),
|
|
)
|
|
}
|
|
|
|
// WriteCache returns "writecache" subsection as a writecacheconfig.Config.
|
|
func (x *Config) WriteCache() *writecacheconfig.Config {
|
|
return writecacheconfig.From(
|
|
(*config.Config)(x).
|
|
Sub("writecache"),
|
|
)
|
|
}
|
|
|
|
// Pilorama returns "pilorama" subsection as a piloramaconfig.Config.
|
|
func (x *Config) Pilorama() *piloramaconfig.Config {
|
|
return piloramaconfig.From(
|
|
(*config.Config)(x).
|
|
Sub("pilorama"),
|
|
)
|
|
}
|
|
|
|
// GC returns "gc" subsection as a gcconfig.Config.
|
|
func (x *Config) GC() *gcconfig.Config {
|
|
return gcconfig.From(
|
|
(*config.Config)(x).
|
|
Sub("gc"),
|
|
)
|
|
}
|
|
|
|
// RefillMetabase returns the value of "resync_metabase" config parameter.
|
|
//
|
|
// Returns false if the value is not a valid bool.
|
|
func (x *Config) RefillMetabase() bool {
|
|
return config.BoolSafe(
|
|
(*config.Config)(x),
|
|
"resync_metabase",
|
|
)
|
|
}
|
|
|
|
// Mode return the value of "mode" config parameter.
|
|
//
|
|
// Panics if read the value is not one of predefined
|
|
// shard modes.
|
|
func (x *Config) Mode() (m mode.Mode) {
|
|
s := config.StringSafe(
|
|
(*config.Config)(x),
|
|
"mode",
|
|
)
|
|
|
|
switch s {
|
|
case "read-write", "":
|
|
m = mode.ReadWrite
|
|
case "read-only":
|
|
m = mode.ReadOnly
|
|
case "degraded":
|
|
m = mode.Degraded
|
|
case "degraded-read-only":
|
|
m = mode.DegradedReadOnly
|
|
default:
|
|
panic(fmt.Sprintf("unknown shard mode: %s", s))
|
|
}
|
|
|
|
return
|
|
}
|