mirror of
https://github.com/letic/terraform-provider-google.git
synced 2024-07-03 08:42:39 +00:00
fix: include object versions when deleting all objects in GCS bucket (#1285)
* fix: include object versions when deleting all objects in GCS bucket * test: acceptance test for force destroy with versioning
This commit is contained in:
parent
3460ddcaa7
commit
b80aad4bc6
|
@ -446,7 +446,7 @@ func resourceStorageBucketDelete(d *schema.ResourceData, meta interface{}) error
|
|||
bucket := d.Get("name").(string)
|
||||
|
||||
for {
|
||||
res, err := config.clientStorage.Objects.List(bucket).Do()
|
||||
res, err := config.clientStorage.Objects.List(bucket).Versions(true).Do()
|
||||
if err != nil {
|
||||
fmt.Printf("Error Objects.List failed: %v", err)
|
||||
return err
|
||||
|
@ -459,7 +459,7 @@ func resourceStorageBucketDelete(d *schema.ResourceData, meta interface{}) error
|
|||
|
||||
for _, object := range res.Items {
|
||||
log.Printf("[DEBUG] Found %s", object.Name)
|
||||
if err := config.clientStorage.Objects.Delete(bucket, object.Name).Do(); err != nil {
|
||||
if err := config.clientStorage.Objects.Delete(bucket, object.Name).Generation(object.Generation).Do(); err != nil {
|
||||
log.Fatalf("Error trying to delete object: %s %s\n\n", object.Name, err)
|
||||
} else {
|
||||
log.Printf("Object deleted: %s \n\n", object.Name)
|
||||
|
|
|
@ -360,6 +360,40 @@ func TestAccStorageBucket_forceDestroy(t *testing.T) {
|
|||
})
|
||||
}
|
||||
|
||||
func TestAccStorageBucket_forceDestroyWithVersioning(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
var bucket storage.Bucket
|
||||
bucketName := fmt.Sprintf("tf-test-acc-bucket-%d", acctest.RandInt())
|
||||
|
||||
resource.Test(t, resource.TestCase{
|
||||
PreCheck: func() { testAccPreCheck(t) },
|
||||
Providers: testAccProviders,
|
||||
CheckDestroy: testAccStorageBucketDestroy,
|
||||
Steps: []resource.TestStep{
|
||||
resource.TestStep{
|
||||
Config: testAccStorageBucket_forceDestroyWithVersioning(bucketName),
|
||||
Check: resource.ComposeTestCheckFunc(
|
||||
testAccCheckStorageBucketExists(
|
||||
"google_storage_bucket.bucket", bucketName, &bucket),
|
||||
),
|
||||
},
|
||||
resource.TestStep{
|
||||
Config: testAccStorageBucket_forceDestroyWithVersioning(bucketName),
|
||||
Check: resource.ComposeTestCheckFunc(
|
||||
testAccCheckStorageBucketPutItem(bucketName),
|
||||
),
|
||||
},
|
||||
resource.TestStep{
|
||||
Config: testAccStorageBucket_forceDestroyWithVersioning(bucketName),
|
||||
Check: resource.ComposeTestCheckFunc(
|
||||
testAccCheckStorageBucketPutItem(bucketName),
|
||||
),
|
||||
},
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
func TestAccStorageBucket_versioning(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
|
@ -768,6 +802,18 @@ resource "google_storage_bucket" "bucket" {
|
|||
`, bucketName)
|
||||
}
|
||||
|
||||
func testAccStorageBucket_forceDestroyWithVersioning(bucketName string) string {
|
||||
return fmt.Sprintf(`
|
||||
resource "google_storage_bucket" "bucket" {
|
||||
name = "%s"
|
||||
force_destroy = "true"
|
||||
versioning = {
|
||||
enabled = "true"
|
||||
}
|
||||
}
|
||||
`, bucketName)
|
||||
}
|
||||
|
||||
func testAccStorageBucket_versioning(bucketName string) string {
|
||||
return fmt.Sprintf(`
|
||||
resource "google_storage_bucket" "bucket" {
|
||||
|
|
Loading…
Reference in New Issue
Block a user