[#xx] go.mod: Update api-go,
Remove `client.ContainerEACL` and related references. This change was initiated by the removal of `ContainerService.GetExtendedACL` from the API. Signed-off-by: Aleksey Savchuk <a.savchuk@yadro.com>
This commit is contained in:
parent
28f140bf06
commit
52ba5dbf31
4 changed files with 1 additions and 169 deletions
|
@ -1,123 +0,0 @@
|
||||||
package client
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"fmt"
|
|
||||||
|
|
||||||
v2container "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/container"
|
|
||||||
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/refs"
|
|
||||||
rpcapi "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/rpc"
|
|
||||||
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/rpc/client"
|
|
||||||
v2session "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/session"
|
|
||||||
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/signature"
|
|
||||||
apistatus "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/client/status"
|
|
||||||
cid "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/container/id"
|
|
||||||
"git.frostfs.info/TrueCloudLab/frostfs-sdk-go/eacl"
|
|
||||||
"git.frostfs.info/TrueCloudLab/frostfs-sdk-go/session"
|
|
||||||
)
|
|
||||||
|
|
||||||
// PrmContainerEACL groups parameters of ContainerEACL operation.
|
|
||||||
type PrmContainerEACL struct {
|
|
||||||
// FrostFS request X-Headers.
|
|
||||||
XHeaders []string
|
|
||||||
|
|
||||||
ContainerID *cid.ID
|
|
||||||
|
|
||||||
Session *session.Container
|
|
||||||
}
|
|
||||||
|
|
||||||
// SetContainer sets identifier of the FrostFS container to read the eACL table.
|
|
||||||
// Required parameter.
|
|
||||||
//
|
|
||||||
// Deprecated: Use PrmContainerEACL.ContainerID instead.
|
|
||||||
func (x *PrmContainerEACL) SetContainer(id cid.ID) {
|
|
||||||
x.ContainerID = &id
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *PrmContainerEACL) buildRequest(c *Client) (*v2container.GetExtendedACLRequest, error) {
|
|
||||||
if x.ContainerID == nil {
|
|
||||||
return nil, errorMissingContainer
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(x.XHeaders)%2 != 0 {
|
|
||||||
return nil, errorInvalidXHeaders
|
|
||||||
}
|
|
||||||
|
|
||||||
var cidV2 refs.ContainerID
|
|
||||||
x.ContainerID.WriteToV2(&cidV2)
|
|
||||||
|
|
||||||
reqBody := new(v2container.GetExtendedACLRequestBody)
|
|
||||||
reqBody.SetContainerID(&cidV2)
|
|
||||||
|
|
||||||
var meta v2session.RequestMetaHeader
|
|
||||||
writeXHeadersToMeta(x.XHeaders, &meta)
|
|
||||||
|
|
||||||
if x.Session != nil {
|
|
||||||
var tokv2 v2session.Token
|
|
||||||
x.Session.WriteToV2(&tokv2)
|
|
||||||
|
|
||||||
meta.SetSessionToken(&tokv2)
|
|
||||||
}
|
|
||||||
|
|
||||||
var req v2container.GetExtendedACLRequest
|
|
||||||
req.SetBody(reqBody)
|
|
||||||
c.prepareRequest(&req, &meta)
|
|
||||||
return &req, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// ResContainerEACL groups resulting values of ContainerEACL operation.
|
|
||||||
type ResContainerEACL struct {
|
|
||||||
statusRes
|
|
||||||
|
|
||||||
table eacl.Table
|
|
||||||
}
|
|
||||||
|
|
||||||
// Table returns eACL table of the requested container.
|
|
||||||
func (x ResContainerEACL) Table() eacl.Table {
|
|
||||||
return x.table
|
|
||||||
}
|
|
||||||
|
|
||||||
// ContainerEACL reads eACL table of the FrostFS container.
|
|
||||||
//
|
|
||||||
// Exactly one return value is non-nil. By default, server status is returned in res structure.
|
|
||||||
// Any client's internal or transport errors are returned as `error`.
|
|
||||||
// If PrmInit.DisableFrostFSFailuresResolution has been called, unsuccessful
|
|
||||||
// FrostFS status codes are included in the returned result structure,
|
|
||||||
// otherwise, are also returned as `error`.
|
|
||||||
//
|
|
||||||
// Returns an error if parameters are set incorrectly (see PrmContainerEACL docs).
|
|
||||||
// Context is required and must not be nil. It is used for network communication.
|
|
||||||
//
|
|
||||||
// Return statuses:
|
|
||||||
// - global (see Client docs);
|
|
||||||
// - *apistatus.ContainerNotFound;
|
|
||||||
// - *apistatus.EACLNotFound.
|
|
||||||
func (c *Client) ContainerEACL(ctx context.Context, prm PrmContainerEACL) (*ResContainerEACL, error) {
|
|
||||||
req, err := prm.buildRequest(c)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := signature.SignServiceMessage(&c.prm.Key, req); err != nil {
|
|
||||||
return nil, fmt.Errorf("sign request: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := rpcapi.GetEACL(&c.c, req, client.WithContext(ctx))
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
var res ResContainerEACL
|
|
||||||
res.st, err = c.processResponse(resp)
|
|
||||||
if err != nil || !apistatus.IsSuccessful(res.st) {
|
|
||||||
return &res, err
|
|
||||||
}
|
|
||||||
|
|
||||||
eACL := resp.GetBody().GetEACL()
|
|
||||||
if eACL == nil {
|
|
||||||
return &res, newErrMissingResponseField("eACL")
|
|
||||||
}
|
|
||||||
|
|
||||||
res.table = *eacl.NewTableFromV2(eACL)
|
|
||||||
return &res, nil
|
|
||||||
}
|
|
2
go.mod
2
go.mod
|
@ -3,7 +3,7 @@ module git.frostfs.info/TrueCloudLab/frostfs-sdk-go
|
||||||
go 1.22
|
go 1.22
|
||||||
|
|
||||||
require (
|
require (
|
||||||
git.frostfs.info/TrueCloudLab/frostfs-api-go/v2 v2.16.1-0.20240819074700-a43110e36326
|
git.frostfs.info/TrueCloudLab/frostfs-api-go/v2 v2.16.1-0.20240902111049-c11f50efeccb
|
||||||
git.frostfs.info/TrueCloudLab/frostfs-contract v0.19.3-0.20240621131249-49e5270f673e
|
git.frostfs.info/TrueCloudLab/frostfs-contract v0.19.3-0.20240621131249-49e5270f673e
|
||||||
git.frostfs.info/TrueCloudLab/hrw v1.2.1
|
git.frostfs.info/TrueCloudLab/hrw v1.2.1
|
||||||
git.frostfs.info/TrueCloudLab/tzhash v1.8.0
|
git.frostfs.info/TrueCloudLab/tzhash v1.8.0
|
||||||
|
|
BIN
go.sum
BIN
go.sum
Binary file not shown.
45
pool/pool.go
45
pool/pool.go
|
@ -50,8 +50,6 @@ type client interface {
|
||||||
containerList(context.Context, PrmContainerList) ([]cid.ID, error)
|
containerList(context.Context, PrmContainerList) ([]cid.ID, error)
|
||||||
// see clientWrapper.containerDelete.
|
// see clientWrapper.containerDelete.
|
||||||
containerDelete(context.Context, PrmContainerDelete) error
|
containerDelete(context.Context, PrmContainerDelete) error
|
||||||
// see clientWrapper.containerEACL.
|
|
||||||
containerEACL(context.Context, PrmContainerEACL) (eacl.Table, error)
|
|
||||||
// see clientWrapper.apeManagerAddChain.
|
// see clientWrapper.apeManagerAddChain.
|
||||||
apeManagerAddChain(context.Context, PrmAddAPEChain) error
|
apeManagerAddChain(context.Context, PrmAddAPEChain) error
|
||||||
// see clientWrapper.apeManagerRemoveChain.
|
// see clientWrapper.apeManagerRemoveChain.
|
||||||
|
@ -579,32 +577,6 @@ func (c *clientWrapper) containerDelete(ctx context.Context, prm PrmContainerDel
|
||||||
return waitForContainerRemoved(ctx, c, getPrm, prm.WaitParams)
|
return waitForContainerRemoved(ctx, c, getPrm, prm.WaitParams)
|
||||||
}
|
}
|
||||||
|
|
||||||
// containerEACL invokes sdkClient.ContainerEACL parse response status to error and return result as is.
|
|
||||||
func (c *clientWrapper) containerEACL(ctx context.Context, prm PrmContainerEACL) (eacl.Table, error) {
|
|
||||||
cl, err := c.getClient()
|
|
||||||
if err != nil {
|
|
||||||
return eacl.Table{}, err
|
|
||||||
}
|
|
||||||
|
|
||||||
cliPrm := sdkClient.PrmContainerEACL{
|
|
||||||
ContainerID: &prm.ContainerID,
|
|
||||||
Session: prm.Session,
|
|
||||||
}
|
|
||||||
|
|
||||||
start := time.Now()
|
|
||||||
res, err := cl.ContainerEACL(ctx, cliPrm)
|
|
||||||
c.incRequests(time.Since(start), methodContainerEACL)
|
|
||||||
var st apistatus.Status
|
|
||||||
if res != nil {
|
|
||||||
st = res.Status()
|
|
||||||
}
|
|
||||||
if err = c.handleError(ctx, st, err); err != nil {
|
|
||||||
return eacl.Table{}, fmt.Errorf("get eacl on client: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return res.Table(), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// apeManagerAddChain invokes sdkClient.APEManagerAddChain and parse response status to error.
|
// apeManagerAddChain invokes sdkClient.APEManagerAddChain and parse response status to error.
|
||||||
func (c *clientWrapper) apeManagerAddChain(ctx context.Context, prm PrmAddAPEChain) error {
|
func (c *clientWrapper) apeManagerAddChain(ctx context.Context, prm PrmAddAPEChain) error {
|
||||||
cl, err := c.getClient()
|
cl, err := c.getClient()
|
||||||
|
@ -2930,23 +2902,6 @@ func (p *Pool) DeleteContainer(ctx context.Context, prm PrmContainerDelete) erro
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetEACL reads eACL table of the FrostFS container.
|
|
||||||
//
|
|
||||||
// Main return value MUST NOT be processed on an erroneous return.
|
|
||||||
func (p *Pool) GetEACL(ctx context.Context, prm PrmContainerEACL) (eacl.Table, error) {
|
|
||||||
cp, err := p.connection()
|
|
||||||
if err != nil {
|
|
||||||
return eacl.Table{}, err
|
|
||||||
}
|
|
||||||
|
|
||||||
eaclResult, err := cp.containerEACL(ctx, prm)
|
|
||||||
if err != nil {
|
|
||||||
return eacl.Table{}, fmt.Errorf("get EACL via client '%s': %w", cp.address(), err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return eaclResult, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// AddAPEChain sends a request to set APE chain rules for a target (basically, for a container).
|
// AddAPEChain sends a request to set APE chain rules for a target (basically, for a container).
|
||||||
func (p *Pool) AddAPEChain(ctx context.Context, prm PrmAddAPEChain) error {
|
func (p *Pool) AddAPEChain(ctx context.Context, prm PrmAddAPEChain) error {
|
||||||
cp, err := p.connection()
|
cp, err := p.connection()
|
||||||
|
|
Loading…
Reference in a new issue