Skip to content

Commit f0d34ef

Browse files
authored
fix(object): lifecycle: fix case with no tags and no prefix (#2463)
1 parent 46d62b5 commit f0d34ef

File tree

3 files changed

+1638
-819
lines changed

3 files changed

+1638
-819
lines changed

scaleway/resource_object_bucket.go

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -355,20 +355,21 @@ func resourceBucketLifecycleUpdate(ctx context.Context, conn *s3.S3, d *schema.R
355355
ruleHasPrefix := len(r["prefix"].(string)) > 0
356356
filter := &s3.LifecycleRuleFilter{}
357357

358+
if len(tags) > 1 || (ruleHasPrefix && len(tags) == 1) {
359+
lifecycleRuleAndOp := &s3.LifecycleRuleAndOperator{}
360+
lifecycleRuleAndOp.SetTags(tags)
361+
if ruleHasPrefix {
362+
lifecycleRuleAndOp.SetPrefix(r["prefix"].(string))
363+
}
364+
filter.SetAnd(lifecycleRuleAndOp)
365+
}
366+
358367
if !ruleHasPrefix && len(tags) == 1 {
359368
filter.SetTag(tags[0])
360-
} else {
361-
if len(tags) == 0 && ruleHasPrefix {
362-
filter.SetPrefix(r["prefix"].(string))
363-
} else {
364-
lifecycleRuleAndOp := &s3.LifecycleRuleAndOperator{}
365-
lifecycleRuleAndOp.SetTags(tags)
366-
if ruleHasPrefix {
367-
lifecycleRuleAndOp.SetPrefix(r["prefix"].(string))
368-
}
369-
filter.SetAnd(lifecycleRuleAndOp)
370-
}
369+
} else if ruleHasPrefix && len(tags) == 0 {
370+
filter.SetPrefix(r["prefix"].(string))
371371
}
372+
372373
rule.SetFilter(filter)
373374

374375
// ID

scaleway/resource_object_bucket_test.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -378,6 +378,36 @@ func TestAccScalewayObjectBucket_Lifecycle(t *testing.T) {
378378
resource.TestCheckResourceAttr(resourceNameLifecycle, "lifecycle_rule.0.expiration.0.days", "1"),
379379
),
380380
},
381+
{
382+
Config: fmt.Sprintf(`
383+
resource "scaleway_object_bucket" "main-bucket-lifecycle" {
384+
name = "%s"
385+
region = "%s"
386+
object_lock_enabled = true
387+
388+
lifecycle_rule {
389+
enabled = true
390+
prefix = ""
391+
expiration {
392+
days = 2
393+
}
394+
}
395+
396+
lifecycle_rule {
397+
enabled = true
398+
abort_incomplete_multipart_upload_days = 30
399+
}
400+
}`, bucketLifecycle, objectTestsMainRegion),
401+
Check: resource.ComposeTestCheckFunc(
402+
testAccCheckScalewayObjectBucketExists(tt, "scaleway_object_bucket.main-bucket-lifecycle", true),
403+
testAccCheckScalewayObjectBucketLifecycleConfigurationExists(tt, resourceNameLifecycle),
404+
resource.TestCheckResourceAttrSet(resourceNameLifecycle, "lifecycle_rule.0.id"),
405+
resource.TestCheckResourceAttrSet(resourceNameLifecycle, "lifecycle_rule.1.id"),
406+
resource.TestCheckResourceAttr(resourceNameLifecycle, "lifecycle_rule.0.prefix", ""),
407+
resource.TestCheckResourceAttr(resourceNameLifecycle, "lifecycle_rule.0.expiration.0.days", "2"),
408+
resource.TestCheckResourceAttr(resourceNameLifecycle, "lifecycle_rule.1.abort_incomplete_multipart_upload_days", "30"),
409+
),
410+
},
381411
},
382412
})
383413
}

0 commit comments

Comments
 (0)