forked from TrueCloudLab/frostfs-node
Initial commit
Initial public review release v0.10.0
This commit is contained in:
commit
dadfd90dcd
276 changed files with 46331 additions and 0 deletions
64
lib/buckets/init.go
Normal file
64
lib/buckets/init.go
Normal file
|
@ -0,0 +1,64 @@
|
|||
package buckets
|
||||
|
||||
import (
|
||||
"plugin"
|
||||
"strings"
|
||||
|
||||
"github.com/nspcc-dev/neofs-node/lib/buckets/boltdb"
|
||||
"github.com/nspcc-dev/neofs-node/lib/buckets/fsbucket"
|
||||
"github.com/nspcc-dev/neofs-node/lib/buckets/inmemory"
|
||||
"github.com/nspcc-dev/neofs-node/lib/core"
|
||||
"github.com/pkg/errors"
|
||||
"github.com/spf13/viper"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
const (
|
||||
// BoltDBBucket is a name of BoltDB bucket.
|
||||
BoltDBBucket = "boltdb"
|
||||
|
||||
// InMemoryBucket is a name RAM bucket.
|
||||
InMemoryBucket = "in-memory"
|
||||
|
||||
// FileSystemBucket is a name of file system bucket.
|
||||
FileSystemBucket = "fsbucket"
|
||||
|
||||
bucketSymbol = "PrepareBucket"
|
||||
)
|
||||
|
||||
// NewBucket is a bucket's constructor.
|
||||
func NewBucket(name core.BucketType, l *zap.Logger, v *viper.Viper) (core.Bucket, error) {
|
||||
bucket := v.GetString("storage." + string(name) + ".bucket")
|
||||
|
||||
l.Info("initialize bucket",
|
||||
zap.String("name", string(name)),
|
||||
zap.String("bucket", bucket))
|
||||
|
||||
switch strings.ToLower(bucket) {
|
||||
case FileSystemBucket:
|
||||
return fsbucket.NewBucket(name, v)
|
||||
|
||||
case InMemoryBucket:
|
||||
return inmemory.NewBucket(name, v), nil
|
||||
|
||||
case BoltDBBucket:
|
||||
opts, err := boltdb.NewOptions("storage."+name, v)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return boltdb.NewBucket(&opts)
|
||||
default:
|
||||
instance, err := plugin.Open(bucket)
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "could not load bucket: `%s`", bucket)
|
||||
}
|
||||
|
||||
sym, err := instance.Lookup(bucketSymbol)
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "could not find bucket signature: `%s`", bucket)
|
||||
}
|
||||
|
||||
return sym.(func(core.BucketType, *viper.Viper) (core.Bucket, error))(name, v)
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue