Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add storage bucket access control #2364

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion build/ansible
2 changes: 1 addition & 1 deletion build/terraform
2 changes: 1 addition & 1 deletion build/terraform-beta
2 changes: 1 addition & 1 deletion build/terraform-mapper
4 changes: 4 additions & 0 deletions products/storage/api.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -474,6 +474,7 @@ objects:
imports: 'name'
description: 'The name of the bucket.'
required: true
input: true
- !ruby/object:Api::Type::String
name: 'domain'
description: 'The domain associated with the entity.'
Expand Down Expand Up @@ -501,9 +502,11 @@ objects:
To refer to all members of the Google Apps for Business domain
example.com, the entity would be domain-example.com.
required: true
input: true
- !ruby/object:Api::Type::String
name: 'entityId'
description: 'The ID for the entity'
output: true
# | 'etag' is not applicable for state convergence.
- !ruby/object:Api::Type::String
name: 'id'
Expand All @@ -512,6 +515,7 @@ objects:
- !ruby/object:Api::Type::NestedObject
name: 'projectTeam'
description: 'The project team associated with the entity'
output: true
properties:
- !ruby/object:Api::Type::String
name: 'projectNumber'
Expand Down
19 changes: 18 additions & 1 deletion products/storage/terraform.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,24 @@ overrides: !ruby/object:Overrides::ResourceOverrides
Bucket: !ruby/object:Overrides::Terraform::ResourceOverride
exclude: true
BucketAccessControl: !ruby/object:Overrides::Terraform::ResourceOverride
exclude: true
examples:
- !ruby/object:Provider::Terraform::Examples
name: "storage_bucket_access_control_public_bucket"
primary_resource_id: "public_rule"
vars:
bucket_name: "static-content-bucket"
id_format: "{{bucket}}/{{entity}}"
import_format: ["{{bucket}}/{{entity}}"]
properties:
id: !ruby/object:Overrides::Terraform::PropertyOverride
exclude: true
bucket: !ruby/object:Overrides::Terraform::PropertyOverride
custom_expand: 'templates/terraform/custom_expand/resourceref_as_string.go.erb'
# entityId and projectTeam don't seem to actually part of the schema
entityId: !ruby/object:Overrides::Terraform::PropertyOverride
exclude: true
projectTeam: !ruby/object:Overrides::Terraform::PropertyOverride
exclude: true
ObjectAccessControl: !ruby/object:Overrides::Terraform::ResourceOverride
examples:
- !ruby/object:Provider::Terraform::Examples
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
resource "google_storage_bucket_access_control" "<%= ctx[:primary_resource_id] %>" {
bucket = google_storage_bucket.bucket.name
role = "READER"
entity = "allUsers"
}

resource "google_storage_bucket" "bucket" {
name = "<%= ctx[:vars]['bucket_name'] %>"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
package google

import (
"fmt"
"testing"

"github.com/hashicorp/terraform/helper/resource"
)

func TestAccStorageBucketAccessControl_update(t *testing.T) {
t.Parallel()

bucketName := testBucketName()
resource.Test(t, resource.TestCase{
PreCheck: func() {
if errObjectAcl != nil {
panic(errObjectAcl)
}
testAccPreCheck(t)
},
Providers: testAccProviders,
CheckDestroy: testAccCheckStorageObjectAccessControlDestroy,
Steps: []resource.TestStep{
{
Config: testGoogleStorageBucketAccessControlBasic(bucketName, "READER", "allUsers"),
},
{
ResourceName: "google_storage_bucket_access_control.default",
ImportState: true,
ImportStateVerify: true,
},
{
Config: testGoogleStorageBucketAccessControlBasic(bucketName, "OWNER", "allUsers"),
},
{
ResourceName: "google_storage_bucket_access_control.default",
ImportState: true,
ImportStateVerify: true,
},
},
})
}

func testGoogleStorageBucketAccessControlBasic(bucketName, role, entity string) string {
return fmt.Sprintf(`
resource "google_storage_bucket_access_control" "default" {
bucket = google_storage_bucket.bucket.name
role = "%s"
entity = "%s"
}

resource "google_storage_bucket" "bucket" {
name = "%s"
}
`, role, entity, bucketName)
}
4 changes: 4 additions & 0 deletions third_party/terraform/website-compiled/google.erb
Original file line number Diff line number Diff line change
Expand Up @@ -1227,6 +1227,10 @@
<a href="/docs/providers/google/r/storage_bucket.html">google_storage_bucket</a>
</li>

<li<%%= sidebar_current("docs-google-storage-bucket-access-control") %>>
<a href="/docs/providers/google/r/storage_bucket_access_control.html">google_storage_bucket_access_control</a>
</li>

<li<%%= sidebar_current("docs-google-storage-bucket-acl") %>>
<a href="/docs/providers/google/r/storage_bucket_acl.html">google_storage_bucket_acl</a>
</li>
Expand Down