Skip to content

Commit

Permalink
try deleting storage buckets before clearing them
Browse files Browse the repository at this point in the history
Signed-off-by: Modular Magician <magic-modules@google.com>
  • Loading branch information
danawillow authored and modular-magician committed Dec 4, 2019
1 parent b3f7ca5 commit c24988d
Showing 1 changed file with 24 additions and 1 deletion.
25 changes: 24 additions & 1 deletion google/resource_storage_bucket.go
Original file line number Diff line number Diff line change
Expand Up @@ -595,6 +595,29 @@ func resourceStorageBucketDelete(d *schema.ResourceData, meta interface{}) error
// Get the bucket
bucket := d.Get("name").(string)

// Try to delete the bucket without clearing it first
err := resource.Retry(1*time.Minute, func() *resource.RetryError {
err := config.clientStorage.Buckets.Delete(bucket).Do()
if err == nil {
return nil
}
if gerr, ok := err.(*googleapi.Error); ok && gerr.Code == 429 {
return resource.RetryableError(gerr)
}
return resource.NonRetryableError(err)
})

if err == nil {
log.Printf("[DEBUG] Deleted bucket %v\n\n", bucket)
return nil
}

// We get a 409 when we try to delete a bucket with items in it
if gerr, ok := err.(*googleapi.Error); !ok || gerr.Code != 409 {
fmt.Printf("Error deleting bucket %s: %v\n\n", bucket, err)
return err
}

for {
res, err := config.clientStorage.Objects.List(bucket).Versions(true).Do()
if err != nil {
Expand Down Expand Up @@ -665,7 +688,7 @@ func resourceStorageBucketDelete(d *schema.ResourceData, meta interface{}) error
}

// remove empty bucket
err := resource.Retry(1*time.Minute, func() *resource.RetryError {
err = resource.Retry(1*time.Minute, func() *resource.RetryError {
err := config.clientStorage.Buckets.Delete(bucket).Do()
if err == nil {
return nil
Expand Down

0 comments on commit c24988d

Please sign in to comment.