Skip to content

Commit 3a2c5ec

Browse files
googlyrahmanamanMahendroo
authored andcommitted
Make resource_google_storage_bucket_object generate diff for md5hash, generation, crc32c if content changes (GoogleCloudPlatform#12541)
1 parent 6989cef commit 3a2c5ec

File tree

1 file changed

+38
-4
lines changed

1 file changed

+38
-4
lines changed

mmv1/third_party/terraform/services/storage/resource_storage_bucket_object.go

+38-4
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package storage
33

44
import (
55
"bytes"
6+
"context"
67
"fmt"
78
"io"
89
"log"
@@ -24,10 +25,11 @@ import (
2425

2526
func ResourceStorageBucketObject() *schema.Resource {
2627
return &schema.Resource{
27-
Create: resourceStorageBucketObjectCreate,
28-
Read: resourceStorageBucketObjectRead,
29-
Update: resourceStorageBucketObjectUpdate,
30-
Delete: resourceStorageBucketObjectDelete,
28+
Create: resourceStorageBucketObjectCreate,
29+
Read: resourceStorageBucketObjectRead,
30+
Update: resourceStorageBucketObjectUpdate,
31+
Delete: resourceStorageBucketObjectDelete,
32+
CustomizeDiff: resourceStorageBucketObjectCustomizeDiff,
3133

3234
Timeouts: &schema.ResourceTimeout{
3335
Create: schema.DefaultTimeout(4 * time.Minute),
@@ -603,3 +605,35 @@ func flattenObjectRetention(objectRetention *storage.ObjectRetention) []map[stri
603605
retentions = append(retentions, retention)
604606
return retentions
605607
}
608+
609+
func resourceStorageBucketObjectCustomizeDiff(ctx context.Context, d *schema.ResourceDiff, meta interface{}) error {
610+
localMd5Hash := ""
611+
if source, ok := d.GetOkExists("source"); ok {
612+
localMd5Hash = tpgresource.GetFileMd5Hash(source.(string))
613+
}
614+
if content, ok := d.GetOkExists("content"); ok {
615+
localMd5Hash = tpgresource.GetContentMd5Hash([]byte(content.(string)))
616+
}
617+
if localMd5Hash == "" {
618+
return nil
619+
}
620+
621+
oldMd5Hash, ok := d.GetOkExists("md5hash")
622+
if ok && oldMd5Hash == localMd5Hash {
623+
return nil
624+
}
625+
626+
err := d.SetNewComputed("md5hash")
627+
if err != nil {
628+
return fmt.Errorf("Error re-setting md5hash: %s", err)
629+
}
630+
err = d.SetNewComputed("crc32c")
631+
if err != nil {
632+
return fmt.Errorf("Error re-setting crc32c: %s", err)
633+
}
634+
err = d.SetNewComputed("generation")
635+
if err != nil {
636+
return fmt.Errorf("Error re-setting generation: %s", err)
637+
}
638+
return nil
639+
}

0 commit comments

Comments
 (0)