forked from TrueCloudLab/frostfs-node
[#189] blobstor: Implement DumpInfo method
Implement method to get the information about the BLOB storage. Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
This commit is contained in:
parent
dae8d3de5b
commit
eaa7068e3c
4 changed files with 29 additions and 11 deletions
|
@ -37,8 +37,10 @@ func defaultCfg() *cfg {
|
||||||
fsTree: fsTree{
|
fsTree: fsTree{
|
||||||
depth: defaultShallowDepth,
|
depth: defaultShallowDepth,
|
||||||
dirNameLen: hex.EncodedLen(dirNameLen),
|
dirNameLen: hex.EncodedLen(dirNameLen),
|
||||||
perm: defaultPerm,
|
Info: Info{
|
||||||
rootDir: "./",
|
Permissions: defaultPerm,
|
||||||
|
RootPath: "./",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
compressor: noOpCompressor,
|
compressor: noOpCompressor,
|
||||||
decompressor: noOpDecompressor,
|
decompressor: noOpDecompressor,
|
||||||
|
@ -108,7 +110,7 @@ func WithCompressObjects(comp bool, log *logger.Logger) Option {
|
||||||
// of the fs tree to write the objects.
|
// of the fs tree to write the objects.
|
||||||
func WithTreeRootPath(rootDir string) Option {
|
func WithTreeRootPath(rootDir string) Option {
|
||||||
return func(c *cfg) {
|
return func(c *cfg) {
|
||||||
c.fsTree.rootDir = rootDir
|
c.fsTree.RootPath = rootDir
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -116,6 +118,6 @@ func WithTreeRootPath(rootDir string) Option {
|
||||||
// bits of the fs tree.
|
// bits of the fs tree.
|
||||||
func WithTreeRootPerm(perm os.FileMode) Option {
|
func WithTreeRootPerm(perm os.FileMode) Option {
|
||||||
return func(c *cfg) {
|
return func(c *cfg) {
|
||||||
c.fsTree.perm = perm
|
c.fsTree.Permissions = perm
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,6 @@ import (
|
||||||
"crypto/sha256"
|
"crypto/sha256"
|
||||||
"encoding/hex"
|
"encoding/hex"
|
||||||
"errors"
|
"errors"
|
||||||
"os"
|
|
||||||
"path"
|
"path"
|
||||||
|
|
||||||
objectSDK "github.com/nspcc-dev/neofs-api-go/pkg/object"
|
objectSDK "github.com/nspcc-dev/neofs-api-go/pkg/object"
|
||||||
|
@ -15,9 +14,7 @@ type fsTree struct {
|
||||||
|
|
||||||
dirNameLen int
|
dirNameLen int
|
||||||
|
|
||||||
perm os.FileMode
|
Info
|
||||||
|
|
||||||
rootDir string
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const dirNameLen = 1 // in bytes
|
const dirNameLen = 1 // in bytes
|
||||||
|
@ -36,7 +33,7 @@ func (t *fsTree) treePath(addr *objectSDK.Address) string {
|
||||||
sAddr := stringifyAddress(addr)
|
sAddr := stringifyAddress(addr)
|
||||||
|
|
||||||
dirs := make([]string, 0, t.depth+1+1) // 1 for root, 1 for file
|
dirs := make([]string, 0, t.depth+1+1) // 1 for root, 1 for file
|
||||||
dirs = append(dirs, t.rootDir)
|
dirs = append(dirs, t.RootPath)
|
||||||
|
|
||||||
for i := 0; i < t.depth; i++ {
|
for i := 0; i < t.depth; i++ {
|
||||||
dirs = append(dirs, sAddr[:t.dirNameLen])
|
dirs = append(dirs, sAddr[:t.dirNameLen])
|
||||||
|
|
19
pkg/local_object_storage/blobstor/info.go
Normal file
19
pkg/local_object_storage/blobstor/info.go
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
package blobstor
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Info groups the information about BlobStor.
|
||||||
|
type Info struct {
|
||||||
|
// Permission bits of the root directory.
|
||||||
|
Permissions os.FileMode
|
||||||
|
|
||||||
|
// Full path to the root directory.
|
||||||
|
RootPath string
|
||||||
|
}
|
||||||
|
|
||||||
|
// DumpInfo returns information about the BlobStor.
|
||||||
|
func (b *BlobStor) DumpInfo() Info {
|
||||||
|
return b.fsTree.Info
|
||||||
|
}
|
|
@ -53,9 +53,9 @@ func (b *BlobStor) Put(prm *PutPrm) (*PutRes, error) {
|
||||||
func (t *fsTree) put(addr *objectSDK.Address, data []byte) error {
|
func (t *fsTree) put(addr *objectSDK.Address, data []byte) error {
|
||||||
p := t.treePath(addr)
|
p := t.treePath(addr)
|
||||||
|
|
||||||
if err := os.MkdirAll(path.Dir(p), t.perm); err != nil {
|
if err := os.MkdirAll(path.Dir(p), t.Permissions); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return ioutil.WriteFile(p, data, t.perm)
|
return ioutil.WriteFile(p, data, t.Permissions)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue