mirror of
https://github.com/versity/versitygw.git
synced 2026-07-20 06:52:21 +00:00
fix: Removed ObjectLockConfigurationNotFoundError, when attempting to set bucket versioning status to suspended
This commit is contained in:
@@ -466,15 +466,17 @@ func (p *Posix) PutBucketVersioning(ctx context.Context, bucket string, status t
|
||||
versioning = []byte{1}
|
||||
case types.BucketVersioningStatusSuspended:
|
||||
lockRaw, err := p.GetObjectLockConfiguration(ctx, bucket)
|
||||
if err != nil {
|
||||
if err != nil && !errors.Is(err, s3err.GetAPIError(s3err.ErrObjectLockConfigurationNotFound)) {
|
||||
return err
|
||||
}
|
||||
lockStatus, err := auth.ParseBucketLockConfigurationOutput(lockRaw)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if lockStatus.ObjectLockEnabled == types.ObjectLockEnabledEnabled {
|
||||
return s3err.GetAPIError(s3err.ErrSuspendedVersioningNotAllowed)
|
||||
if err == nil {
|
||||
lockStatus, err := auth.ParseBucketLockConfigurationOutput(lockRaw)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if lockStatus.ObjectLockEnabled == types.ObjectLockEnabledEnabled {
|
||||
return s3err.GetAPIError(s3err.ErrSuspendedVersioningNotAllowed)
|
||||
}
|
||||
}
|
||||
|
||||
// '0' maps to 'Suspended'
|
||||
|
||||
@@ -522,7 +522,8 @@ func TestVersioning(s *S3Conf) {
|
||||
// PutBucketVersioning action
|
||||
PutBucketVersioning_non_existing_bucket(s)
|
||||
PutBucketVersioning_invalid_status(s)
|
||||
PutBucketVersioning_success(s)
|
||||
PutBucketVersioning_success_enabled(s)
|
||||
PutBucketVersioning_success_suspended(s)
|
||||
// GetBucketVersioning action
|
||||
GetBucketVersioning_non_existing_bucket(s)
|
||||
GetBucketVersioning_empty_response(s)
|
||||
@@ -897,7 +898,8 @@ func GetIntTests() IntTests {
|
||||
"AccessControl_copy_object_with_starting_slash_for_user": AccessControl_copy_object_with_starting_slash_for_user,
|
||||
"PutBucketVersioning_non_existing_bucket": PutBucketVersioning_non_existing_bucket,
|
||||
"PutBucketVersioning_invalid_status": PutBucketVersioning_invalid_status,
|
||||
"PutBucketVersioning_success": PutBucketVersioning_success,
|
||||
"PutBucketVersioning_success_enabled": PutBucketVersioning_success_enabled,
|
||||
"PutBucketVersioning_success_suspended": PutBucketVersioning_success_suspended,
|
||||
"GetBucketVersioning_non_existing_bucket": GetBucketVersioning_non_existing_bucket,
|
||||
"GetBucketVersioning_empty_response": GetBucketVersioning_empty_response,
|
||||
"GetBucketVersioning_success": GetBucketVersioning_success,
|
||||
|
||||
@@ -10412,8 +10412,8 @@ func PutBucketVersioning_invalid_status(s *S3Conf) error {
|
||||
})
|
||||
}
|
||||
|
||||
func PutBucketVersioning_success(s *S3Conf) error {
|
||||
testName := "PutBucketVersioning_success"
|
||||
func PutBucketVersioning_success_enabled(s *S3Conf) error {
|
||||
testName := "PutBucketVersioning_success_enabled"
|
||||
return actionHandler(s, testName, func(s3client *s3.Client, bucket string) error {
|
||||
ctx, cancel := context.WithTimeout(context.Background(), shortTimeout)
|
||||
_, err := s3client.PutBucketVersioning(ctx, &s3.PutBucketVersioningInput{
|
||||
@@ -10431,6 +10431,25 @@ func PutBucketVersioning_success(s *S3Conf) error {
|
||||
})
|
||||
}
|
||||
|
||||
func PutBucketVersioning_success_suspended(s *S3Conf) error {
|
||||
testName := "PutBucketVersioning_success_suspended"
|
||||
return actionHandler(s, testName, func(s3client *s3.Client, bucket string) error {
|
||||
ctx, cancel := context.WithTimeout(context.Background(), shortTimeout)
|
||||
_, err := s3client.PutBucketVersioning(ctx, &s3.PutBucketVersioningInput{
|
||||
Bucket: &bucket,
|
||||
VersioningConfiguration: &types.VersioningConfiguration{
|
||||
Status: types.BucketVersioningStatusSuspended,
|
||||
},
|
||||
})
|
||||
cancel()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
func GetBucketVersioning_non_existing_bucket(s *S3Conf) error {
|
||||
testName := "GetBucketVersioning_non_existing_bucket"
|
||||
return actionHandler(s, testName, func(s3client *s3.Client, bucket string) error {
|
||||
|
||||
Reference in New Issue
Block a user