Skip to content

Commit c8ba3c0

Browse files
authored
Cleaned up google_project_usage_export_bucket code and docs. (#1922)
1 parent 96cb1fb commit c8ba3c0

File tree

2 files changed

+39
-14
lines changed

2 files changed

+39
-14
lines changed

google/resource_usage_export_bucket.go

+21-5
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ func resourceProjectUsageBucket() *schema.Resource {
1414
Read: resourceProjectUsageBucketRead,
1515
Delete: resourceProjectUsageBucketDelete,
1616
Importer: &schema.ResourceImporter{
17-
State: schema.ImportStatePassthrough,
17+
State: resourceProjectUsageBucketImportState,
1818
},
1919

2020
Schema: map[string]*schema.Schema{
@@ -40,7 +40,11 @@ func resourceProjectUsageBucket() *schema.Resource {
4040

4141
func resourceProjectUsageBucketRead(d *schema.ResourceData, meta interface{}) error {
4242
config := meta.(*Config)
43-
project := d.Id()
43+
44+
project, err := getProject(d, config)
45+
if err != nil {
46+
return err
47+
}
4448

4549
p, err := config.clientCompute.Projects.Get(project).Do()
4650
if err != nil {
@@ -60,6 +64,7 @@ func resourceProjectUsageBucketRead(d *schema.ResourceData, meta interface{}) er
6064

6165
func resourceProjectUsageBucketCreate(d *schema.ResourceData, meta interface{}) error {
6266
config := meta.(*Config)
67+
6368
project, err := getProject(d, config)
6469
if err != nil {
6570
return err
@@ -86,18 +91,29 @@ func resourceProjectUsageBucketCreate(d *schema.ResourceData, meta interface{})
8691

8792
func resourceProjectUsageBucketDelete(d *schema.ResourceData, meta interface{}) error {
8893
config := meta.(*Config)
89-
project := d.Id()
94+
95+
project, err := getProject(d, config)
96+
if err != nil {
97+
return err
98+
}
9099

91100
op, err := config.clientCompute.Projects.SetUsageExportBucket(project, nil).Do()
92101
if err != nil {
93102
return err
94103
}
95-
d.SetId(project)
96-
err = computeOperationWait(config.clientCompute, op, project, "Setting usage export bucket.")
104+
105+
err = computeOperationWait(config.clientCompute, op, project,
106+
"Setting usage export bucket to nil, automatically disabling usage export.")
97107
if err != nil {
98108
return err
99109
}
100110
d.SetId("")
101111

102112
return nil
103113
}
114+
115+
func resourceProjectUsageBucketImportState(d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) {
116+
project := d.Id()
117+
d.Set("project", project)
118+
return []*schema.ResourceData{d}, nil
119+
}

website/docs/r/usage_export_bucket.html.markdown

+18-9
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ layout: "google"
33
page_title: "Google: google_project_usage_export_bucket"
44
sidebar_current: "docs-google-project-usage-export-bucket"
55
description: |-
6-
Creates a dataset resource for Google BigQuery.
6+
Manages a project's usage export bucket.
77
---
88

99
# google_project_usage_export_bucket
@@ -16,23 +16,32 @@ For more information see the [Docs](https://cloud.google.com/compute/docs/usage-
1616
and for further details, the
1717
[API Documentation](https://cloud.google.com/compute/docs/reference/rest/beta/projects/setUsageExportBucket).
1818

19+
~> **Note:** You should specify only one of these per project. If there are two or more
20+
they will fight over which bucket the reports should be stored in. It is
21+
safe to have multiple resources with the same backing bucket.
1922

2023
## Example Usage
2124

2225
```hcl
23-
resource "google_project_usage_export_bucket" "export" {
24-
project = "foo"
25-
bucket_name = "bar"
26+
resource "google_project_usage_export_bucket" "usage_export" {
27+
project = "development-project"
28+
bucket_name = "usage-tracking-bucket"
2629
}
2730
```
2831

2932
## Argument Reference
30-
* `project`: (Required) The project to set the export bucket on.
3133
* `bucket_name`: (Required) The bucket to store reports in.
34+
35+
- - -
36+
3237
* `prefix`: (Optional) A prefix for the reports, for instance, the project name.
3338

34-
## Note
39+
* `project`: (Optional) The project to set the export bucket on. If it is not provided, the provider project is used.
3540

36-
You should specify only one of these per project. If there are two or more
37-
they will fight over which bucket the reports should be stored in. It is
38-
safe to have multiple resources with the same backing bucket.
41+
## Import
42+
43+
A project's Usage Export Bucket can be imported using this format:
44+
45+
```
46+
$ terraform import google_project_usage_export_bucket.usage_export {{project}}
47+
```

0 commit comments

Comments
 (0)