Skip to content

Commit 97603ec

Browse files
Merge pull request #17489 from DrFaust92/r/glue_catalog_database_delete_cross_account
r/glue_catalog_database - Add sweeper + use catalog_id when deleting
2 parents 4a4ced5 + a9a74fb commit 97603ec

3 files changed

Lines changed: 65 additions & 15 deletions

File tree

.changelog/17489.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:bug
2+
resource/aws_glue_catalog_database: Use Catalog Id when deleting Databases.
3+
```

aws/resource_aws_glue_catalog_database.go

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -162,37 +162,34 @@ func resourceAwsGlueCatalogDatabaseRead(d *schema.ResourceData, meta interface{}
162162
return fmt.Errorf("Error reading Glue Catalog Database: %s", err.Error())
163163
}
164164

165+
database := out.Database
165166
databaseArn := arn.ARN{
166167
Partition: meta.(*AWSClient).partition,
167168
Service: "glue",
168169
Region: meta.(*AWSClient).region,
169170
AccountID: meta.(*AWSClient).accountid,
170-
Resource: fmt.Sprintf("database/%s", aws.StringValue(out.Database.Name)),
171+
Resource: fmt.Sprintf("database/%s", aws.StringValue(database.Name)),
171172
}.String()
172173
d.Set("arn", databaseArn)
173-
174-
d.Set("name", out.Database.Name)
175-
d.Set("catalog_id", catalogID)
176-
d.Set("description", out.Database.Description)
177-
d.Set("location_uri", out.Database.LocationUri)
178-
d.Set("parameters", aws.StringValueMap(out.Database.Parameters))
174+
d.Set("name", database.Name)
175+
d.Set("catalog_id", database.CatalogId)
176+
d.Set("description", database.Description)
177+
d.Set("location_uri", database.LocationUri)
178+
d.Set("parameters", aws.StringValueMap(database.Parameters))
179179

180180
return nil
181181
}
182182

183183
func resourceAwsGlueCatalogDatabaseDelete(d *schema.ResourceData, meta interface{}) error {
184184
conn := meta.(*AWSClient).glueconn
185-
catalogID, name, err := readAwsGlueCatalogID(d.Id())
186-
if err != nil {
187-
return err
188-
}
189185

190-
log.Printf("[DEBUG] Glue Catalog Database: %s:%s", catalogID, name)
191-
_, err = conn.DeleteDatabase(&glue.DeleteDatabaseInput{
192-
Name: aws.String(name),
186+
log.Printf("[DEBUG] Glue Catalog Database: %s", d.Id())
187+
_, err := conn.DeleteDatabase(&glue.DeleteDatabaseInput{
188+
Name: aws.String(d.Get("name").(string)),
189+
CatalogId: aws.String(d.Get("catalog_id").(string)),
193190
})
194191
if err != nil {
195-
return fmt.Errorf("Error deleting Glue Catalog Database: %s", err.Error())
192+
return fmt.Errorf("Error deleting Glue Catalog Database: %w", err)
196193
}
197194
return nil
198195
}

aws/resource_aws_glue_catalog_database_test.go

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package aws
22

33
import (
44
"fmt"
5+
"log"
56
"testing"
67

78
"github.com/aws/aws-sdk-go/aws"
@@ -11,6 +12,55 @@ import (
1112
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
1213
)
1314

15+
func init() {
16+
resource.AddTestSweepers("aws_glue_catalog_database", &resource.Sweeper{
17+
Name: "aws_glue_catalog_database",
18+
F: testSweepGlueCatalogDatabases,
19+
})
20+
}
21+
22+
func testSweepGlueCatalogDatabases(region string) error {
23+
client, err := sharedClientForRegion(region)
24+
if err != nil {
25+
return fmt.Errorf("error getting client: %s", err)
26+
}
27+
conn := client.(*AWSClient).glueconn
28+
29+
input := &glue.GetDatabasesInput{}
30+
err = conn.GetDatabasesPages(input, func(page *glue.GetDatabasesOutput, lastPage bool) bool {
31+
if len(page.DatabaseList) == 0 {
32+
log.Printf("[INFO] No Glue Catalog Databases to sweep")
33+
return false
34+
}
35+
for _, database := range page.DatabaseList {
36+
name := aws.StringValue(database.Name)
37+
38+
log.Printf("[INFO] Deleting Glue Catalog Database: %s", name)
39+
40+
r := resourceAwsGlueCatalogDatabase()
41+
d := r.Data(nil)
42+
d.SetId("???")
43+
d.Set("name", name)
44+
d.Set("catalog_id", database.CatalogId)
45+
46+
err := r.Delete(d, client)
47+
if err != nil {
48+
log.Printf("[ERROR] Failed to delete Glue Catalog Database %s: %s", name, err)
49+
}
50+
}
51+
return !lastPage
52+
})
53+
if err != nil {
54+
if testSweepSkipSweepError(err) {
55+
log.Printf("[WARN] Skipping Glue Catalog Database sweep for %s: %s", region, err)
56+
return nil
57+
}
58+
return fmt.Errorf("Error retrieving Glue Catalog Databases: %s", err)
59+
}
60+
61+
return nil
62+
}
63+
1464
func TestAccAWSGlueCatalogDatabase_full(t *testing.T) {
1565
resourceName := "aws_glue_catalog_database.test"
1666
rName := acctest.RandomWithPrefix("tf-acc-test")

0 commit comments

Comments
 (0)