forked from TrueCloudLab/frostfs-sdk-go
[#205] pool: fix using default key for requests
Signed-off-by: Denis Kirillov <denis@nspcc.ru>
This commit is contained in:
parent
53e064e556
commit
3e75660802
1 changed files with 37 additions and 7 deletions
32
pool/pool.go
32
pool/pool.go
|
@ -221,7 +221,9 @@ func (c *clientWrapper) objectPut(ctx context.Context, prm PrmObjectPut) (*oid.I
|
|||
if prm.stoken != nil {
|
||||
wObj.WithinSession(*prm.stoken)
|
||||
}
|
||||
if prm.key != nil {
|
||||
wObj.UseKey(*prm.key)
|
||||
}
|
||||
|
||||
if prm.btoken != nil {
|
||||
wObj.WithBearerToken(*prm.btoken)
|
||||
|
@ -302,7 +304,9 @@ func (c *clientWrapper) objectDelete(ctx context.Context, prm PrmObjectDelete) e
|
|||
cliPrm.WithBearerToken(*prm.btoken)
|
||||
}
|
||||
|
||||
if prm.key != nil {
|
||||
cliPrm.UseKey(*prm.key)
|
||||
}
|
||||
_, err := c.client.ObjectDelete(ctx, cliPrm)
|
||||
return err
|
||||
}
|
||||
|
@ -341,7 +345,9 @@ func (c *clientWrapper) objectGet(ctx context.Context, prm PrmObjectGet) (*ResGe
|
|||
return nil, fmt.Errorf("init object reading on client: %w", err)
|
||||
}
|
||||
|
||||
if prm.key != nil {
|
||||
rObj.UseKey(*prm.key)
|
||||
}
|
||||
|
||||
if !rObj.ReadHeader(&res.Header) {
|
||||
_, err = rObj.Close()
|
||||
|
@ -372,7 +378,9 @@ func (c *clientWrapper) objectHead(ctx context.Context, prm PrmObjectHead) (*obj
|
|||
cliPrm.WithBearerToken(*prm.btoken)
|
||||
}
|
||||
|
||||
if prm.key != nil {
|
||||
cliPrm.UseKey(*prm.key)
|
||||
}
|
||||
|
||||
var obj object.Object
|
||||
|
||||
|
@ -413,7 +421,9 @@ func (c *clientWrapper) objectRange(ctx context.Context, prm PrmObjectRange) (*R
|
|||
if err != nil {
|
||||
return nil, fmt.Errorf("init payload range reading on client: %w", err)
|
||||
}
|
||||
if prm.key != nil {
|
||||
res.UseKey(*prm.key)
|
||||
}
|
||||
|
||||
return &ResObjectRange{payload: res}, nil
|
||||
}
|
||||
|
@ -436,7 +446,9 @@ func (c *clientWrapper) objectSearch(ctx context.Context, prm PrmObjectSearch) (
|
|||
if err != nil {
|
||||
return nil, fmt.Errorf("init object searching on client: %w", err)
|
||||
}
|
||||
if prm.key != nil {
|
||||
res.UseKey(*prm.key)
|
||||
}
|
||||
|
||||
return &ResObjectSearch{r: res}, nil
|
||||
}
|
||||
|
@ -1333,6 +1345,13 @@ func (p *Pool) call(ctx *callContext, f func() error) error {
|
|||
return err
|
||||
}
|
||||
|
||||
// fillAppropriateKey use pool key if caller didn't specify its own.
|
||||
func (p *Pool) fillAppropriateKey(prm *prmCommon) {
|
||||
if prm.key == nil {
|
||||
prm.key = p.key
|
||||
}
|
||||
}
|
||||
|
||||
// PutObject writes an object through a remote server using NeoFS API protocol.
|
||||
func (p *Pool) PutObject(ctx context.Context, prm PrmObjectPut) (*oid.ID, error) {
|
||||
var prmCtx prmContext
|
||||
|
@ -1340,6 +1359,8 @@ func (p *Pool) PutObject(ctx context.Context, prm PrmObjectPut) (*oid.ID, error)
|
|||
prmCtx.useVerb(sessionv2.ObjectVerbPut)
|
||||
prmCtx.useAddress(newAddressFromCnrID(prm.hdr.ContainerID()))
|
||||
|
||||
p.fillAppropriateKey(&prm.prmCommon)
|
||||
|
||||
var ctxCall callContext
|
||||
|
||||
ctxCall.Context = ctx
|
||||
|
@ -1354,7 +1375,6 @@ func (p *Pool) PutObject(ctx context.Context, prm PrmObjectPut) (*oid.ID, error)
|
|||
return nil, fmt.Errorf("open default session: %w", err)
|
||||
}
|
||||
}
|
||||
prm.key = ctxCall.key
|
||||
|
||||
id, err := ctxCall.client.objectPut(ctx, prm)
|
||||
if err != nil {
|
||||
|
@ -1376,6 +1396,8 @@ func (p *Pool) DeleteObject(ctx context.Context, prm PrmObjectDelete) error {
|
|||
prmCtx.useVerb(sessionv2.ObjectVerbDelete)
|
||||
prmCtx.useAddress(&prm.addr)
|
||||
|
||||
p.fillAppropriateKey(&prm.prmCommon)
|
||||
|
||||
var cc callContext
|
||||
|
||||
cc.Context = ctx
|
||||
|
@ -1422,6 +1444,8 @@ func (p *Pool) GetObject(ctx context.Context, prm PrmObjectGet) (*ResGetObject,
|
|||
prmCtx.useVerb(sessionv2.ObjectVerbGet)
|
||||
prmCtx.useAddress(&prm.addr)
|
||||
|
||||
p.fillAppropriateKey(&prm.prmCommon)
|
||||
|
||||
var cc callContext
|
||||
cc.Context = ctx
|
||||
cc.sessionTarget = prm.UseSession
|
||||
|
@ -1445,6 +1469,8 @@ func (p *Pool) HeadObject(ctx context.Context, prm PrmObjectHead) (*object.Objec
|
|||
prmCtx.useVerb(sessionv2.ObjectVerbHead)
|
||||
prmCtx.useAddress(&prm.addr)
|
||||
|
||||
p.fillAppropriateKey(&prm.prmCommon)
|
||||
|
||||
var cc callContext
|
||||
|
||||
cc.Context = ctx
|
||||
|
@ -1491,6 +1517,8 @@ func (p *Pool) ObjectRange(ctx context.Context, prm PrmObjectRange) (*ResObjectR
|
|||
prmCtx.useVerb(sessionv2.ObjectVerbRange)
|
||||
prmCtx.useAddress(&prm.addr)
|
||||
|
||||
p.fillAppropriateKey(&prm.prmCommon)
|
||||
|
||||
var cc callContext
|
||||
cc.Context = ctx
|
||||
cc.sessionTarget = prm.UseSession
|
||||
|
@ -1555,6 +1583,8 @@ func (p *Pool) SearchObjects(ctx context.Context, prm PrmObjectSearch) (*ResObje
|
|||
prmCtx.useVerb(sessionv2.ObjectVerbSearch)
|
||||
prmCtx.useAddress(newAddressFromCnrID(&prm.cnrID))
|
||||
|
||||
p.fillAppropriateKey(&prm.prmCommon)
|
||||
|
||||
var cc callContext
|
||||
|
||||
cc.Context = ctx
|
||||
|
|
Loading…
Reference in a new issue