forked from TrueCloudLab/frostfs-s3-gw
[#449] Add prefix for user tags in tree service
Signed-off-by: Angira Kekteeva <kira@nspcc.ru>
This commit is contained in:
parent
b6a43c6f4c
commit
24bad60048
1 changed files with 36 additions and 17 deletions
|
@ -76,6 +76,7 @@ const (
|
||||||
systemTree = "system"
|
systemTree = "system"
|
||||||
|
|
||||||
separator = "/"
|
separator = "/"
|
||||||
|
userDefinedtagPrefix = "User-Tag-"
|
||||||
|
|
||||||
maxGetSubTreeDepth = 10 // current limit on storage node side
|
maxGetSubTreeDepth = 10 // current limit on storage node side
|
||||||
)
|
)
|
||||||
|
@ -296,9 +297,15 @@ func (c *TreeClient) GetObjectTagging(ctx context.Context, cnrID *cid.ID, objVer
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
delete(tagNode.Meta, isTagKV)
|
meta := make(map[string]string)
|
||||||
|
|
||||||
return tagNode.Meta, nil
|
for key, val := range tagNode.Meta {
|
||||||
|
if strings.HasPrefix(key, userDefinedtagPrefix) {
|
||||||
|
meta[strings.TrimPrefix(key, userDefinedtagPrefix)] = val
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return meta, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *TreeClient) PutObjectTagging(ctx context.Context, cnrID *cid.ID, objVersion *data.NodeVersion, tagSet map[string]string) error {
|
func (c *TreeClient) PutObjectTagging(ctx context.Context, cnrID *cid.ID, objVersion *data.NodeVersion, tagSet map[string]string) error {
|
||||||
|
@ -307,15 +314,18 @@ func (c *TreeClient) PutObjectTagging(ctx context.Context, cnrID *cid.ID, objVer
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
tagSet[isTagKV] = "true"
|
treeTagSet := make(map[string]string)
|
||||||
|
treeTagSet[isTagKV] = "true"
|
||||||
|
|
||||||
if tagNode == nil {
|
for key, val := range tagSet {
|
||||||
_, err = c.addNode(ctx, cnrID, versionTree, objVersion.ID, tagSet)
|
treeTagSet[userDefinedtagPrefix+key] = val
|
||||||
} else {
|
|
||||||
err = c.moveNode(ctx, cnrID, versionTree, tagNode.ID, objVersion.ID, tagSet)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
delete(tagSet, isTagKV)
|
if tagNode == nil {
|
||||||
|
_, err = c.addNode(ctx, cnrID, versionTree, objVersion.ID, treeTagSet)
|
||||||
|
} else {
|
||||||
|
err = c.moveNode(ctx, cnrID, versionTree, tagNode.ID, objVersion.ID, treeTagSet)
|
||||||
|
}
|
||||||
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -342,9 +352,15 @@ func (c *TreeClient) GetBucketTagging(ctx context.Context, cnrID *cid.ID) (map[s
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
delete(node.Meta, systemNameKV)
|
tags := make(map[string]string)
|
||||||
|
|
||||||
return node.Meta, nil
|
for key, val := range node.Meta {
|
||||||
|
if strings.HasPrefix(key, userDefinedtagPrefix) {
|
||||||
|
tags[strings.TrimPrefix(key, userDefinedtagPrefix)] = val
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return tags, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *TreeClient) PutBucketTagging(ctx context.Context, cnrID *cid.ID, tagSet map[string]string) error {
|
func (c *TreeClient) PutBucketTagging(ctx context.Context, cnrID *cid.ID, tagSet map[string]string) error {
|
||||||
|
@ -354,15 +370,18 @@ func (c *TreeClient) PutBucketTagging(ctx context.Context, cnrID *cid.ID, tagSet
|
||||||
return fmt.Errorf("couldn't get node: %w", err)
|
return fmt.Errorf("couldn't get node: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
tagSet[systemNameKV] = bucketTaggingFilename
|
treeTagSet := make(map[string]string)
|
||||||
|
treeTagSet[systemNameKV] = bucketTaggingFilename
|
||||||
|
|
||||||
if isErrNotFound {
|
for key, val := range tagSet {
|
||||||
_, err = c.addNode(ctx, cnrID, systemTree, 0, tagSet)
|
treeTagSet[userDefinedtagPrefix+key] = val
|
||||||
} else {
|
|
||||||
err = c.moveNode(ctx, cnrID, systemTree, node.ID, 0, tagSet)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
delete(tagSet, systemNameKV)
|
if isErrNotFound {
|
||||||
|
_, err = c.addNode(ctx, cnrID, systemTree, 0, treeTagSet)
|
||||||
|
} else {
|
||||||
|
err = c.moveNode(ctx, cnrID, systemTree, node.ID, 0, treeTagSet)
|
||||||
|
}
|
||||||
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue