diff --git a/client/container_eacl.go b/client/container_eacl.go deleted file mode 100644 index 8e9fd40..0000000 --- a/client/container_eacl.go +++ /dev/null @@ -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 -} diff --git a/go.mod b/go.mod index 75a8bff..013f347 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module git.frostfs.info/TrueCloudLab/frostfs-sdk-go go 1.22 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/hrw v1.2.1 git.frostfs.info/TrueCloudLab/tzhash v1.8.0 diff --git a/go.sum b/go.sum index e184e11..cc07ee4 100644 Binary files a/go.sum and b/go.sum differ diff --git a/pool/pool.go b/pool/pool.go index 9798836..f5d3498 100644 --- a/pool/pool.go +++ b/pool/pool.go @@ -50,8 +50,6 @@ type client interface { containerList(context.Context, PrmContainerList) ([]cid.ID, error) // see clientWrapper.containerDelete. containerDelete(context.Context, PrmContainerDelete) error - // see clientWrapper.containerEACL. - containerEACL(context.Context, PrmContainerEACL) (eacl.Table, error) // see clientWrapper.apeManagerAddChain. apeManagerAddChain(context.Context, PrmAddAPEChain) error // see clientWrapper.apeManagerRemoveChain. @@ -579,32 +577,6 @@ func (c *clientWrapper) containerDelete(ctx context.Context, prm PrmContainerDel 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. func (c *clientWrapper) apeManagerAddChain(ctx context.Context, prm PrmAddAPEChain) error { cl, err := c.getClient() @@ -2930,23 +2902,6 @@ func (p *Pool) DeleteContainer(ctx context.Context, prm PrmContainerDelete) erro 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). func (p *Pool) AddAPEChain(ctx context.Context, prm PrmAddAPEChain) error { cp, err := p.connection()