Add support for GCS StorageClass

Fixes: #7417
This commit is contained in:
Matt Morrison 2016-09-22 07:46:35 +12:00
parent 92fe030b5e
commit a554f15490
2 changed files with 59 additions and 0 deletions

View File

@ -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{})

View File

@ -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)
}