forked from TrueCloudLab/frostfs-node
[#465] objsvc: Set NETMAP_EPOCH xheader for auxiliary requests
Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
This commit is contained in:
parent
f6c5222952
commit
ca0a33ea0f
1 changed files with 20 additions and 8 deletions
|
@ -7,9 +7,11 @@ import (
|
|||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"strconv"
|
||||
|
||||
coreclient "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/core/client"
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-observability/tracing"
|
||||
sessionAPI "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/api/session"
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-sdk-go/bearer"
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-sdk-go/client"
|
||||
apistatus "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/client/status"
|
||||
|
@ -31,6 +33,8 @@ type commonPrm struct {
|
|||
local bool
|
||||
|
||||
xHeaders []string
|
||||
|
||||
netmapEpoch uint64
|
||||
}
|
||||
|
||||
// SetClient sets base client for ForstFS API communication.
|
||||
|
@ -73,6 +77,14 @@ func (x *commonPrm) SetXHeaders(hs []string) {
|
|||
x.xHeaders = hs
|
||||
}
|
||||
|
||||
func (x *commonPrm) calculateXHeaders() []string {
|
||||
hs := x.xHeaders
|
||||
if x.netmapEpoch != 0 {
|
||||
hs = append(hs, sessionAPI.XHeaderNetmapEpoch, strconv.FormatUint(x.netmapEpoch, 10))
|
||||
}
|
||||
return hs
|
||||
}
|
||||
|
||||
type readPrmCommon struct {
|
||||
commonPrm
|
||||
}
|
||||
|
@ -80,8 +92,8 @@ type readPrmCommon struct {
|
|||
// SetNetmapEpoch sets the epoch number to be used to locate the objectSDK.
|
||||
//
|
||||
// By default current epoch on the server will be used.
|
||||
func (x *readPrmCommon) SetNetmapEpoch(_ uint64) {
|
||||
// FIXME(@fyrchik): https://git.frostfs.info/TrueCloudLab/frostfs-node/issues/465
|
||||
func (x *readPrmCommon) SetNetmapEpoch(epoch uint64) {
|
||||
x.netmapEpoch = epoch
|
||||
}
|
||||
|
||||
// GetObjectPrm groups parameters of GetObject operation.
|
||||
|
@ -139,7 +151,7 @@ func GetObject(ctx context.Context, prm GetObjectPrm) (*GetObjectRes, error) {
|
|||
prm.ClientParams.Session = prm.tokenSession
|
||||
}
|
||||
|
||||
prm.ClientParams.XHeaders = prm.xHeaders
|
||||
prm.ClientParams.XHeaders = prm.calculateXHeaders()
|
||||
prm.ClientParams.BearerToken = prm.tokenBearer
|
||||
prm.ClientParams.Local = prm.local
|
||||
prm.ClientParams.Key = prm.key
|
||||
|
@ -233,7 +245,7 @@ func HeadObject(ctx context.Context, prm HeadObjectPrm) (*HeadObjectRes, error)
|
|||
|
||||
prm.ClientParams.BearerToken = prm.tokenBearer
|
||||
prm.ClientParams.Local = prm.local
|
||||
prm.ClientParams.XHeaders = prm.xHeaders
|
||||
prm.ClientParams.XHeaders = prm.calculateXHeaders()
|
||||
|
||||
cliRes, err := prm.cli.ObjectHead(ctx, prm.ClientParams)
|
||||
if err == nil {
|
||||
|
@ -326,7 +338,7 @@ func PayloadRange(ctx context.Context, prm PayloadRangePrm) (*PayloadRangeRes, e
|
|||
prm.ClientParams.Session = prm.tokenSession
|
||||
}
|
||||
|
||||
prm.ClientParams.XHeaders = prm.xHeaders
|
||||
prm.ClientParams.XHeaders = prm.calculateXHeaders()
|
||||
prm.ClientParams.BearerToken = prm.tokenBearer
|
||||
prm.ClientParams.Local = prm.local
|
||||
prm.ClientParams.Length = prm.ln
|
||||
|
@ -390,7 +402,7 @@ func PutObject(ctx context.Context, prm PutObjectPrm) (*PutObjectRes, error) {
|
|||
defer span.End()
|
||||
|
||||
prmCli := client.PrmObjectPutInit{
|
||||
XHeaders: prm.xHeaders,
|
||||
XHeaders: prm.calculateXHeaders(),
|
||||
BearerToken: prm.tokenBearer,
|
||||
Session: prm.tokenSession,
|
||||
Local: true,
|
||||
|
@ -437,7 +449,7 @@ func PutObjectSingle(ctx context.Context, prm PutObjectPrm) (*PutObjectRes, erro
|
|||
}
|
||||
|
||||
prmCli := client.PrmObjectPutSingle{
|
||||
XHeaders: prm.xHeaders,
|
||||
XHeaders: prm.calculateXHeaders(),
|
||||
BearerToken: prm.tokenBearer,
|
||||
Session: prm.tokenSession,
|
||||
Local: true,
|
||||
|
@ -496,7 +508,7 @@ func SearchObjects(ctx context.Context, prm SearchObjectsPrm) (*SearchObjectsRes
|
|||
prm.cliPrm.Local = prm.local
|
||||
prm.cliPrm.Session = prm.tokenSession
|
||||
prm.cliPrm.BearerToken = prm.tokenBearer
|
||||
prm.cliPrm.XHeaders = prm.xHeaders
|
||||
prm.cliPrm.XHeaders = prm.calculateXHeaders()
|
||||
prm.cliPrm.Key = prm.key
|
||||
|
||||
rdr, err := prm.cli.ObjectSearchInit(ctx, prm.cliPrm)
|
||||
|
|
Loading…
Reference in a new issue