diff --git a/resource_storage_bucket.go b/resource_storage_bucket.go index 8da47cab..6183ee72 100644 --- a/resource_storage_bucket.go +++ b/resource_storage_bucket.go @@ -56,6 +56,13 @@ func resourceStorageBucket() *schema.Resource { Computed: true, }, + "storage_class": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Default: "STANDARD", + ForceNew: true, + }, + "website": &schema.Schema{ Type: schema.TypeList, Optional: true, @@ -91,6 +98,10 @@ func resourceStorageBucketCreate(d *schema.ResourceData, meta interface{}) error // Create a bucket, setting the acl, location and name. sb := &storage.Bucket{Name: bucket, Location: location} + if v, ok := d.GetOk("storage_class"); ok { + sb.StorageClass = v.(string) + } + if v, ok := d.GetOk("website"); ok { websites := v.([]interface{}) diff --git a/resource_storage_bucket_test.go b/resource_storage_bucket_test.go index de38be84..2e1a9e2b 100644 --- a/resource_storage_bucket_test.go +++ b/resource_storage_bucket_test.go @@ -59,6 +59,45 @@ func TestAccStorageCustomAttributes(t *testing.T) { }) } +func TestAccStorageStorageClass(t *testing.T) { + bucketName := fmt.Sprintf("tf-test-acc-bucket-%d", acctest.RandInt()) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + CheckDestroy: testAccGoogleStorageDestroy, + Steps: []resource.TestStep{ + { + Config: testGoogleStorageBucketsReaderStorageClass(bucketName, "STANDARD"), + Check: resource.ComposeTestCheckFunc( + testAccCheckCloudStorageBucketExists( + "google_storage_bucket.bucket", bucketName), + resource.TestCheckResourceAttr( + "google_storage_bucket.bucket", "storage_class", "STANDARD"), + ), + }, + { + Config: testGoogleStorageBucketsReaderStorageClass(bucketName, "NEARLINE"), + Check: resource.ComposeTestCheckFunc( + testAccCheckCloudStorageBucketExists( + "google_storage_bucket.bucket", bucketName), + resource.TestCheckResourceAttr( + "google_storage_bucket.bucket", "storage_class", "NEARLINE"), + ), + }, + { + Config: testGoogleStorageBucketsReaderStorageClass(bucketName, "DURABLE_REDUCED_AVAILABILITY"), + Check: resource.ComposeTestCheckFunc( + testAccCheckCloudStorageBucketExists( + "google_storage_bucket.bucket", bucketName), + resource.TestCheckResourceAttr( + "google_storage_bucket.bucket", "storage_class", "DURABLE_REDUCED_AVAILABILITY"), + ), + }, + }, + }) +} + func TestAccStorageBucketUpdate(t *testing.T) { bucketName := fmt.Sprintf("tf-test-acl-bucket-%d", acctest.RandInt()) @@ -226,3 +265,12 @@ resource "google_storage_bucket" "bucket" { } `, bucketName) } + +func testGoogleStorageBucketsReaderStorageClass(bucketName string, storageClass string) string { + return fmt.Sprintf(` +resource "google_storage_bucket" "bucket" { + name = "%s" + storage_class = "%s" +} +`, bucketName, storageClass) +}