[#121] pool: Make PrmContainerDelete fields public

* Refactor client PrmContainerDelete usage
* Introduce WaitParams CheckValidity method

Signed-off-by: Airat Arifullin a.arifullin@yadro.com
pull/141/head
Airat Arifullin 2023-08-03 12:11:14 +03:00
parent eea2042405
commit 4996ff619e
1 changed files with 32 additions and 17 deletions

View File

@ -486,10 +486,9 @@ func (c *clientWrapper) containerDelete(ctx context.Context, prm PrmContainerDel
return err
}
var cliPrm sdkClient.PrmContainerDelete
cliPrm.SetContainer(prm.cnrID)
if prm.stokenSet {
cliPrm.WithinSession(prm.stoken)
cliPrm := sdkClient.PrmContainerDelete{
ContainerID: &prm.ContainerID,
Session: prm.Session,
}
start := time.Now()
@ -503,11 +502,14 @@ func (c *clientWrapper) containerDelete(ctx context.Context, prm PrmContainerDel
return fmt.Errorf("container delete on client: %w", err)
}
if !prm.waitParamsSet {
prm.waitParams.setDefaults()
if prm.WaitParams == nil {
prm.WaitParams = defaultWaitParams()
}
if err := prm.WaitParams.CheckValidity(); err != nil {
return fmt.Errorf("invalid wait parameters: %w", err)
}
return waitForContainerRemoved(ctx, c, &prm.cnrID, &prm.waitParams)
return waitForContainerRemoved(ctx, c, &prm.ContainerID, prm.WaitParams)
}
// containerEACL invokes sdkClient.ContainerEACL parse response status to error and return result as is.
@ -1235,6 +1237,17 @@ func (x *WaitParams) checkForPositive() {
}
}
// CheckForValid checks if all wait params are non-negative.
func (waitPrm *WaitParams) CheckValidity() error {
if waitPrm.timeout <= 0 {
return errors.New("timeout cannot be negative")
}
if waitPrm.pollInterval <= 0 {
return errors.New("poll interval cannot be negative")
}
return nil
}
type prmContext struct {
defaultSession bool
verb session.ObjectVerb
@ -1464,33 +1477,35 @@ func (x *PrmContainerList) SetOwnerID(ownerID user.ID) {
// PrmContainerDelete groups parameters of DeleteContainer operation.
type PrmContainerDelete struct {
cnrID cid.ID
ContainerID cid.ID
stoken session.Container
stokenSet bool
Session *session.Container
waitParams WaitParams
waitParamsSet bool
WaitParams *WaitParams
}
// SetContainerID specifies identifier of the FrostFS container to be removed.
//
// Deprecated: Use PrmContainerDelete.ContainerID instead.
func (x *PrmContainerDelete) SetContainerID(cnrID cid.ID) {
x.cnrID = cnrID
x.ContainerID = cnrID
}
// SetSessionToken specifies session within which operation should be performed.
//
// Deprecated: Use PrmContainerDelete.Session instead.
func (x *PrmContainerDelete) SetSessionToken(token session.Container) {
x.stoken = token
x.stokenSet = true
x.Session = &token
}
// SetWaitParams specifies timeout params to complete operation.
// If not provided the default one will be used.
// Panics if any of the wait params isn't positive.
//
// Deprecated: Use PrmContainerDelete.WaitParams instead.
func (x *PrmContainerDelete) SetWaitParams(waitParams WaitParams) {
waitParams.checkForPositive()
x.waitParams = waitParams
x.waitParamsSet = true
x.WaitParams = &waitParams
}
// PrmContainerEACL groups parameters of GetEACL operation.