Skip to content

Commit 9c23bb7

Browse files
Switched biglake database to use parent field implementation (#8790) (#6171)
* Switched biglake database to use parent field implementation * Added custom import * Switched to id_format / import_format * Fixed biglake database test file path * Fixed function names Signed-off-by: Modular Magician <[email protected]>
1 parent 76d48a2 commit 9c23bb7

File tree

6 files changed

+109
-89
lines changed

6 files changed

+109
-89
lines changed

.changelog/8790.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:none
2+
3+
```

google-beta/services/biglake/resource_biglake_database.go

Lines changed: 9 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,11 @@ func ResourceBiglakeDatabase() *schema.Resource {
4848
},
4949

5050
Schema: map[string]*schema.Schema{
51-
"catalog_id": {
51+
"catalog": {
5252
Type: schema.TypeString,
5353
Required: true,
5454
ForceNew: true,
55-
Description: `The name of the parent catalog.`,
55+
Description: `The parent catalog.`,
5656
},
5757
"hive_options": {
5858
Type: schema.TypeList,
@@ -77,12 +77,6 @@ Example: { "name": "wrench", "mass": "1.3kg", "count": "3" }.`,
7777
},
7878
},
7979
},
80-
"location": {
81-
Type: schema.TypeString,
82-
Required: true,
83-
ForceNew: true,
84-
Description: `The geographic location where the Database should reside.`,
85-
},
8680
"name": {
8781
Type: schema.TypeString,
8882
Required: true,
@@ -126,12 +120,6 @@ RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine
126120
fractional digits. Examples: "2014-10-02T15:01:23Z" and
127121
"2014-10-02T15:01:23.045123456Z".`,
128122
},
129-
"project": {
130-
Type: schema.TypeString,
131-
Optional: true,
132-
Computed: true,
133-
ForceNew: true,
134-
},
135123
},
136124
UseJSONNumber: true,
137125
}
@@ -158,20 +146,14 @@ func resourceBiglakeDatabaseCreate(d *schema.ResourceData, meta interface{}) err
158146
obj["hiveOptions"] = hiveOptionsProp
159147
}
160148

161-
url, err := tpgresource.ReplaceVars(d, config, "{{BiglakeBasePath}}projects/{{project}}/locations/{{location}}/catalogs/{{catalog_id}}/databases?databaseId={{name}}")
149+
url, err := tpgresource.ReplaceVars(d, config, "{{BiglakeBasePath}}{{catalog}}/databases?databaseId={{name}}")
162150
if err != nil {
163151
return err
164152
}
165153

166154
log.Printf("[DEBUG] Creating new Database: %#v", obj)
167155
billingProject := ""
168156

169-
project, err := tpgresource.GetProject(d, config)
170-
if err != nil {
171-
return fmt.Errorf("Error fetching project for Database: %s", err)
172-
}
173-
billingProject = project
174-
175157
// err == nil indicates that the billing_project value was found
176158
if bp, err := tpgresource.GetBillingProject(d, config); err == nil {
177159
billingProject = bp
@@ -191,7 +173,7 @@ func resourceBiglakeDatabaseCreate(d *schema.ResourceData, meta interface{}) err
191173
}
192174

193175
// Store the ID now
194-
id, err := tpgresource.ReplaceVars(d, config, "projects/{{project}}/locations/{{location}}/catalogs/{{catalog_id}}/databases/{{name}}")
176+
id, err := tpgresource.ReplaceVars(d, config, "{{catalog}}/databases/{{name}}")
195177
if err != nil {
196178
return fmt.Errorf("Error constructing id: %s", err)
197179
}
@@ -209,19 +191,13 @@ func resourceBiglakeDatabaseRead(d *schema.ResourceData, meta interface{}) error
209191
return err
210192
}
211193

212-
url, err := tpgresource.ReplaceVars(d, config, "{{BiglakeBasePath}}projects/{{project}}/locations/{{location}}/catalogs/{{catalog_id}}/databases/{{name}}")
194+
url, err := tpgresource.ReplaceVars(d, config, "{{BiglakeBasePath}}{{catalog}}/databases/{{name}}")
213195
if err != nil {
214196
return err
215197
}
216198

217199
billingProject := ""
218200

219-
project, err := tpgresource.GetProject(d, config)
220-
if err != nil {
221-
return fmt.Errorf("Error fetching project for Database: %s", err)
222-
}
223-
billingProject = project
224-
225201
// err == nil indicates that the billing_project value was found
226202
if bp, err := tpgresource.GetBillingProject(d, config); err == nil {
227203
billingProject = bp
@@ -238,10 +214,6 @@ func resourceBiglakeDatabaseRead(d *schema.ResourceData, meta interface{}) error
238214
return transport_tpg.HandleNotFoundError(err, d, fmt.Sprintf("BiglakeDatabase %q", d.Id()))
239215
}
240216

241-
if err := d.Set("project", project); err != nil {
242-
return fmt.Errorf("Error reading Database: %s", err)
243-
}
244-
245217
if err := d.Set("create_time", flattenBiglakeDatabaseCreateTime(res["createTime"], d, config)); err != nil {
246218
return fmt.Errorf("Error reading Database: %s", err)
247219
}
@@ -273,12 +245,6 @@ func resourceBiglakeDatabaseUpdate(d *schema.ResourceData, meta interface{}) err
273245

274246
billingProject := ""
275247

276-
project, err := tpgresource.GetProject(d, config)
277-
if err != nil {
278-
return fmt.Errorf("Error fetching project for Database: %s", err)
279-
}
280-
billingProject = project
281-
282248
obj := make(map[string]interface{})
283249
typeProp, err := expandBiglakeDatabaseType(d.Get("type"), d, config)
284250
if err != nil {
@@ -293,7 +259,7 @@ func resourceBiglakeDatabaseUpdate(d *schema.ResourceData, meta interface{}) err
293259
obj["hiveOptions"] = hiveOptionsProp
294260
}
295261

296-
url, err := tpgresource.ReplaceVars(d, config, "{{BiglakeBasePath}}projects/{{project}}/locations/{{location}}/catalogs/{{catalog_id}}/databases/{{name}}")
262+
url, err := tpgresource.ReplaceVars(d, config, "{{BiglakeBasePath}}{{catalog}}/databases/{{name}}")
297263
if err != nil {
298264
return err
299265
}
@@ -348,13 +314,7 @@ func resourceBiglakeDatabaseDelete(d *schema.ResourceData, meta interface{}) err
348314

349315
billingProject := ""
350316

351-
project, err := tpgresource.GetProject(d, config)
352-
if err != nil {
353-
return fmt.Errorf("Error fetching project for Database: %s", err)
354-
}
355-
billingProject = project
356-
357-
url, err := tpgresource.ReplaceVars(d, config, "{{BiglakeBasePath}}projects/{{project}}/locations/{{location}}/catalogs/{{catalog_id}}/databases/{{name}}")
317+
url, err := tpgresource.ReplaceVars(d, config, "{{BiglakeBasePath}}{{catalog}}/databases/{{name}}")
358318
if err != nil {
359319
return err
360320
}
@@ -387,15 +347,13 @@ func resourceBiglakeDatabaseDelete(d *schema.ResourceData, meta interface{}) err
387347
func resourceBiglakeDatabaseImport(d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) {
388348
config := meta.(*transport_tpg.Config)
389349
if err := tpgresource.ParseImportId([]string{
390-
"projects/(?P<project>[^/]+)/locations/(?P<location>[^/]+)/catalogs/(?P<catalog_id>[^/]+)/databases/(?P<name>[^/]+)",
391-
"(?P<project>[^/]+)/(?P<location>[^/]+)/(?P<catalog_id>[^/]+)/(?P<name>[^/]+)",
392-
"(?P<location>[^/]+)/(?P<catalog_id>[^/]+)/(?P<name>[^/]+)",
350+
"(?P<catalog>.+)/databases/(?P<name>[^/]+)",
393351
}, d, config); err != nil {
394352
return nil, err
395353
}
396354

397355
// Replace import id for the resource id
398-
id, err := tpgresource.ReplaceVars(d, config, "projects/{{project}}/locations/{{location}}/catalogs/{{catalog_id}}/databases/{{name}}")
356+
id, err := tpgresource.ReplaceVars(d, config, "{{catalog}}/databases/{{name}}")
399357
if err != nil {
400358
return nil, fmt.Errorf("Error constructing id: %s", err)
401359
}

google-beta/services/biglake/resource_biglake_database_generated_test.go

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ import (
3030
transport_tpg "github.com/hashicorp/terraform-provider-google-beta/google-beta/transport"
3131
)
3232

33-
func TestAccBiglakeDatabase_bigqueryBiglakeDatabaseExample(t *testing.T) {
33+
func TestAccBiglakeDatabase_biglakeDatabaseExample(t *testing.T) {
3434
t.Parallel()
3535

3636
context := map[string]interface{}{
@@ -43,19 +43,19 @@ func TestAccBiglakeDatabase_bigqueryBiglakeDatabaseExample(t *testing.T) {
4343
CheckDestroy: testAccCheckBiglakeDatabaseDestroyProducer(t),
4444
Steps: []resource.TestStep{
4545
{
46-
Config: testAccBiglakeDatabase_bigqueryBiglakeDatabaseExample(context),
46+
Config: testAccBiglakeDatabase_biglakeDatabaseExample(context),
4747
},
4848
{
4949
ResourceName: "google_biglake_database.database",
5050
ImportState: true,
5151
ImportStateVerify: true,
52-
ImportStateVerifyIgnore: []string{"location", "name", "catalog_id"},
52+
ImportStateVerifyIgnore: []string{"catalog", "name"},
5353
},
5454
},
5555
})
5656
}
5757

58-
func testAccBiglakeDatabase_bigqueryBiglakeDatabaseExample(context map[string]interface{}) string {
58+
func testAccBiglakeDatabase_biglakeDatabaseExample(context map[string]interface{}) string {
5959
return acctest.Nprintf(`
6060
resource "google_biglake_catalog" "catalog" {
6161
name = "tf_test_my_catalog%{random_suffix}"
@@ -77,8 +77,7 @@ resource "google_storage_bucket_object" "metadata_folder" {
7777
7878
resource "google_biglake_database" "database" {
7979
name = "tf_test_my_database%{random_suffix}"
80-
catalog_id = google_biglake_catalog.catalog.name
81-
location = google_biglake_catalog.catalog.location
80+
catalog = google_biglake_catalog.catalog.id
8281
type = "HIVE"
8382
hive_options {
8483
location_uri = "gs://${google_storage_bucket.bucket.name}/${google_storage_bucket_object.metadata_folder.name}"
@@ -102,7 +101,7 @@ func testAccCheckBiglakeDatabaseDestroyProducer(t *testing.T) func(s *terraform.
102101

103102
config := acctest.GoogleProviderConfig(t)
104103

105-
url, err := tpgresource.ReplaceVarsForTest(config, rs, "{{BiglakeBasePath}}projects/{{project}}/locations/{{location}}/catalogs/{{catalog_id}}/databases/{{name}}")
104+
url, err := tpgresource.ReplaceVarsForTest(config, rs, "{{BiglakeBasePath}}{{catalog}}/databases/{{name}}")
106105
if err != nil {
107106
return err
108107
}

google-beta/services/biglake/resource_biglake_database_sweeper.go

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ func testSweepBiglakeDatabase(region string) error {
6464
},
6565
}
6666

67-
listTemplate := strings.Split("https://biglake.googleapis.com/v1/projects/{{project}}/locations/{{location}}/catalogs/{{catalog_id}}/databases", "?")[0]
67+
listTemplate := strings.Split("https://biglake.googleapis.com/v1/{{catalog}}/databases", "?")[0]
6868
listUrl, err := tpgresource.ReplaceVars(d, config, listTemplate)
6969
if err != nil {
7070
log.Printf("[INFO][SWEEPER_LOG] error preparing sweeper list url: %s", err)
@@ -96,23 +96,19 @@ func testSweepBiglakeDatabase(region string) error {
9696
nonPrefixCount := 0
9797
for _, ri := range rl {
9898
obj := ri.(map[string]interface{})
99-
var name string
100-
// Id detected in the delete URL, attempt to use id.
101-
if obj["id"] != nil {
102-
name = tpgresource.GetResourceNameFromSelfLink(obj["id"].(string))
103-
} else if obj["name"] != nil {
104-
name = tpgresource.GetResourceNameFromSelfLink(obj["name"].(string))
105-
} else {
106-
log.Printf("[INFO][SWEEPER_LOG] %s resource name and id were nil", resourceName)
99+
if obj["name"] == nil {
100+
log.Printf("[INFO][SWEEPER_LOG] %s resource name was nil", resourceName)
107101
return nil
108102
}
103+
104+
name := tpgresource.GetResourceNameFromSelfLink(obj["name"].(string))
109105
// Skip resources that shouldn't be sweeped
110106
if !sweeper.IsSweepableTestResource(name) {
111107
nonPrefixCount++
112108
continue
113109
}
114110

115-
deleteTemplate := "https://biglake.googleapis.com/v1/projects/{{project}}/locations/{{location}}/catalogs/{{catalog_id}}/databases/{{name}}"
111+
deleteTemplate := "https://biglake.googleapis.com/v1/{{catalog}}/databases/{{name}}"
116112
deleteUrl, err := tpgresource.ReplaceVars(d, config, deleteTemplate)
117113
if err != nil {
118114
log.Printf("[INFO][SWEEPER_LOG] error preparing delete url: %s", err)
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
// Copyright (c) HashiCorp, Inc.
2+
// SPDX-License-Identifier: MPL-2.0
3+
package biglake_test
4+
5+
import (
6+
"testing"
7+
8+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
9+
10+
"github.com/hashicorp/terraform-provider-google-beta/google-beta/acctest"
11+
)
12+
13+
func TestAccBiglakeDatabase_biglakeDatabase_update(t *testing.T) {
14+
t.Parallel()
15+
16+
context := map[string]interface{}{
17+
"random_suffix": acctest.RandString(t, 10),
18+
}
19+
20+
acctest.VcrTest(t, resource.TestCase{
21+
PreCheck: func() { acctest.AccTestPreCheck(t) },
22+
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t),
23+
CheckDestroy: testAccCheckBiglakeDatabaseDestroyProducer(t),
24+
Steps: []resource.TestStep{
25+
{
26+
Config: testAccBiglakeDatabase_biglakeDatabaseExample(context),
27+
},
28+
{
29+
ResourceName: "google_biglake_database.database",
30+
ImportState: true,
31+
ImportStateVerify: true,
32+
ImportStateVerifyIgnore: []string{"name", "catalog"},
33+
},
34+
{
35+
Config: testAccBiglakeDatabase_biglakeDatabase_update(context),
36+
},
37+
{
38+
ResourceName: "google_biglake_database.database",
39+
ImportState: true,
40+
ImportStateVerify: true,
41+
ImportStateVerifyIgnore: []string{"name", "catalog"},
42+
},
43+
},
44+
})
45+
}
46+
47+
func testAccBiglakeDatabase_biglakeDatabase_update(context map[string]interface{}) string {
48+
return acctest.Nprintf(`
49+
resource "google_biglake_catalog" "catalog" {
50+
name = "tf_test_my_catalog%{random_suffix}"
51+
# Hard code to avoid invalid random id suffix
52+
location = "US"
53+
}
54+
resource "google_storage_bucket" "bucket" {
55+
name = "tf_test_my_bucket%{random_suffix}"
56+
location = "US"
57+
force_destroy = true
58+
uniform_bucket_level_access = true
59+
}
60+
resource "google_storage_bucket_object" "metadata_folder" {
61+
name = "metadata/"
62+
content = " "
63+
bucket = google_storage_bucket.bucket.name
64+
}
65+
resource "google_biglake_database" "database" {
66+
name = "tf_test_my_database%{random_suffix}"
67+
catalog = google_biglake_catalog.catalog.id
68+
type = "HIVE"
69+
hive_options {
70+
location_uri = "gs://${google_storage_bucket.bucket.name}/${google_storage_bucket_object.metadata_folder.name}/metadata/metadata"
71+
parameters = {
72+
"owner": "Jane Doe"
73+
"tool" = "screwdriver"
74+
}
75+
}
76+
}
77+
`, context)
78+
}

0 commit comments

Comments
 (0)