git.frostfs.info/TrueCloudLab/frostfs-sdk-go@v0.0.0-20241022124111-5361f0ecebd3/client/apemanager_remove_chain.go (about) 1 package client 2 3 import ( 4 "context" 5 "fmt" 6 7 apemanagerV2 "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/apemanager" 8 rpcapi "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/rpc" 9 "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/rpc/client" 10 sessionV2 "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/session" 11 "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/signature" 12 apeSDK "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/ape" 13 apistatus "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/client/status" 14 ) 15 16 // PrmAPEManagerRemoveChain groups parameters of APEManagerRemoveChain operation. 17 type PrmAPEManagerRemoveChain struct { 18 XHeaders []string 19 20 ChainTarget apeSDK.ChainTarget 21 22 ChainID apeSDK.ChainID 23 } 24 25 func (prm *PrmAPEManagerRemoveChain) buildRequest(c *Client) (*apemanagerV2.RemoveChainRequest, error) { 26 if len(prm.XHeaders)%2 != 0 { 27 return nil, errorInvalidXHeaders 28 } 29 30 req := new(apemanagerV2.RemoveChainRequest) 31 reqBody := new(apemanagerV2.RemoveChainRequestBody) 32 33 reqBody.SetTarget(prm.ChainTarget.ToV2()) 34 reqBody.SetChainID(prm.ChainID) 35 36 req.SetBody(reqBody) 37 38 var meta sessionV2.RequestMetaHeader 39 writeXHeadersToMeta(prm.XHeaders, &meta) 40 41 c.prepareRequest(req, &meta) 42 43 return req, nil 44 } 45 46 type ResAPEManagerRemoveChain struct { 47 statusRes 48 } 49 50 // APEManagerRemoveChain removes Chain with ChainID defined for ChainTarget. 51 func (c *Client) APEManagerRemoveChain(ctx context.Context, prm PrmAPEManagerRemoveChain) (*ResAPEManagerRemoveChain, error) { 52 req, err := prm.buildRequest(c) 53 if err != nil { 54 return nil, err 55 } 56 57 if err := signature.SignServiceMessage(&c.prm.Key, req); err != nil { 58 return nil, fmt.Errorf("sign request: %w", err) 59 } 60 61 resp, err := rpcapi.RemoveChain(&c.c, req, client.WithContext(ctx)) 62 if err != nil { 63 return nil, err 64 } 65 66 var res ResAPEManagerRemoveChain 67 res.st, err = c.processResponse(resp) 68 if err != nil || !apistatus.IsSuccessful(res.st) { 69 return &res, err 70 } 71 72 return &res, nil 73 }