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

service/rds: Refactor to use keyvaluetags package #11255

Merged
merged 1 commit into from
Dec 17, 2019
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
12 changes: 9 additions & 3 deletions aws/data_source_aws_db_cluster_snapshot.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/service/rds"
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
"github.com/terraform-providers/terraform-provider-aws/aws/internal/keyvaluetags"
)

func dataSourceAwsDbClusterSnapshot() *schema.Resource {
Expand Down Expand Up @@ -178,9 +179,14 @@ func dataSourceAwsDbClusterSnapshotRead(d *schema.ResourceData, meta interface{}
d.Set("storage_encrypted", snapshot.StorageEncrypted)
d.Set("vpc_id", snapshot.VpcId)

// Fetch and save tags
if err := saveTagsRDS(conn, d, aws.StringValue(snapshot.DBClusterSnapshotArn)); err != nil {
log.Printf("[WARN] Failed to save tags for RDS DB Cluster Snapshot (%s): %s", aws.StringValue(snapshot.DBClusterSnapshotArn), err)
tags, err := keyvaluetags.RdsListTags(conn, d.Get("db_cluster_snapshot_arn").(string))

if err != nil {
return fmt.Errorf("error listing tags for RDS DB Cluster Snapshot (%s): %s", d.Get("db_cluster_snapshot_arn").(string), err)
}

if err := d.Set("tags", tags.IgnoreAws().Map()); err != nil {
return fmt.Errorf("error setting tags: %s", err)
}

return nil
Expand Down
12 changes: 9 additions & 3 deletions aws/data_source_aws_db_instance.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/service/rds"
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
"github.com/terraform-providers/terraform-provider-aws/aws/internal/keyvaluetags"
)

func dataSourceAwsDbInstance() *schema.Resource {
Expand Down Expand Up @@ -315,9 +316,14 @@ func dataSourceAwsDbInstanceRead(d *schema.ResourceData, meta interface{}) error
return fmt.Errorf("Error setting vpc_security_groups attribute: %#v, error: %#v", vpcSecurityGroups, err)
}

// Fetch and save tags
if err := saveTagsRDS(conn, d, aws.StringValue(dbInstance.DBInstanceArn)); err != nil {
log.Printf("[WARN] Failed to save tags for RDS Instance (%s): %s", aws.StringValue(dbInstance.DBInstanceArn), err)
tags, err := keyvaluetags.RdsListTags(conn, d.Get("db_instance_arn").(string))

if err != nil {
return fmt.Errorf("error listing tags for RDS DB Instance (%s): %s", d.Get("db_instance_arn").(string), err)
}

if err := d.Set("tags", tags.IgnoreAws().Map()); err != nil {
return fmt.Errorf("error setting tags: %s", err)
}

return nil
Expand Down
23 changes: 16 additions & 7 deletions aws/resource_aws_db_cluster_snapshot.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (
"github.com/aws/aws-sdk-go/service/rds"
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
"github.com/terraform-providers/terraform-provider-aws/aws/internal/keyvaluetags"
)

func resourceAwsDbClusterSnapshot() *schema.Resource {
Expand Down Expand Up @@ -101,7 +102,7 @@ func resourceAwsDbClusterSnapshotCreate(d *schema.ResourceData, meta interface{}
params := &rds.CreateDBClusterSnapshotInput{
DBClusterIdentifier: aws.String(d.Get("db_cluster_identifier").(string)),
DBClusterSnapshotIdentifier: aws.String(d.Get("db_cluster_snapshot_identifier").(string)),
Tags: tagsFromMapRDS(d.Get("tags").(map[string]interface{})),
Tags: keyvaluetags.New(d.Get("tags").(map[string]interface{})).IgnoreAws().RdsTags(),
}

_, err := conn.CreateDBClusterSnapshot(params)
Expand Down Expand Up @@ -170,8 +171,14 @@ func resourceAwsDbClusterSnapshotRead(d *schema.ResourceData, meta interface{})
d.Set("storage_encrypted", snapshot.StorageEncrypted)
d.Set("vpc_id", snapshot.VpcId)

if err := saveTagsRDS(conn, d, aws.StringValue(snapshot.DBClusterSnapshotArn)); err != nil {
log.Printf("[WARN] Failed to save tags for RDS DB Cluster Snapshot (%s): %s", d.Id(), err)
tags, err := keyvaluetags.RdsListTags(conn, d.Get("db_cluster_snapshot_arn").(string))

if err != nil {
return fmt.Errorf("error listing tags for RDS DB Cluster Snapshot (%s): %s", d.Get("db_cluster_snapshot_arn").(string), err)
}

if err := d.Set("tags", tags.IgnoreAws().Map()); err != nil {
return fmt.Errorf("error setting tags: %s", err)
}

return nil
Expand All @@ -181,11 +188,13 @@ func resourceAwsdbClusterSnapshotUpdate(d *schema.ResourceData, meta interface{}
conn := meta.(*AWSClient).rdsconn

if d.HasChange("tags") {
if err := setTagsRDS(conn, d, d.Get("db_cluster_snapshot_arn").(string)); err != nil {
return err
} else {
d.SetPartial("tags")
o, n := d.GetChange("tags")

if err := keyvaluetags.RdsUpdateTags(conn, d.Get("db_cluster_snapshot_arn").(string), o, n); err != nil {
return fmt.Errorf("error updating RDS DB Cluster Snapshot (%s) tags: %s", d.Get("db_cluster_snapshot_arn").(string), err)
}

d.SetPartial("tags")
}

return nil
Expand Down
30 changes: 12 additions & 18 deletions aws/resource_aws_db_event_subscription.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (
"github.com/aws/aws-sdk-go/service/rds"
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
"github.com/terraform-providers/terraform-provider-aws/aws/internal/keyvaluetags"
)

func resourceAwsDbEventSubscription() *schema.Resource {
Expand Down Expand Up @@ -92,7 +93,7 @@ func resourceAwsDbEventSubscriptionCreate(d *schema.ResourceData, meta interface
name = resource.UniqueId()
}

tags := tagsFromMapRDS(d.Get("tags").(map[string]interface{}))
tags := keyvaluetags.New(d.Get("tags").(map[string]interface{})).IgnoreAws().RdsTags()

sourceIdsSet := d.Get("source_ids").(*schema.Set)
sourceIds := make([]*string, sourceIdsSet.Len())
Expand Down Expand Up @@ -125,10 +126,6 @@ func resourceAwsDbEventSubscriptionCreate(d *schema.ResourceData, meta interface

d.SetId(aws.StringValue(output.EventSubscription.CustSubscriptionId))

if err := setTagsRDS(conn, d, aws.StringValue(output.EventSubscription.EventSubscriptionArn)); err != nil {
return fmt.Errorf("Error creating RDS Event Subscription (%s) tags: %s", d.Id(), err)
}

log.Println(
"[INFO] Waiting for RDS Event Subscription to be ready")

Expand Down Expand Up @@ -194,20 +191,13 @@ func resourceAwsDbEventSubscriptionRead(d *schema.ResourceData, meta interface{}
return err
}

// list tags for resource
resp, err := conn.ListTagsForResource(&rds.ListTagsForResourceInput{
ResourceName: sub.EventSubscriptionArn,
})
tags, err := keyvaluetags.RdsListTags(conn, d.Get("arn").(string))

if err != nil {
log.Printf("[DEBUG] Error retrieving tags for ARN: %s", aws.StringValue(sub.EventSubscriptionArn))
return fmt.Errorf("error listing tags for RDS Event Subscription (%s): %s", d.Get("arn").(string), err)
}

var dt []*rds.Tag
if len(resp.TagList) > 0 {
dt = resp.TagList
}
if err := d.Set("tags", tagsToMapRDS(dt)); err != nil {
if err := d.Set("tags", tags.IgnoreAws().Map()); err != nil {
return fmt.Errorf("error setting tags: %s", err)
}

Expand Down Expand Up @@ -309,9 +299,13 @@ func resourceAwsDbEventSubscriptionUpdate(d *schema.ResourceData, meta interface
d.SetPartial("source_type")
}

if err := setTagsRDS(conn, d, d.Get("arn").(string)); err != nil {
return err
} else {
if d.HasChange("tags") {
o, n := d.GetChange("tags")

if err := keyvaluetags.RdsUpdateTags(conn, d.Get("arn").(string), o, n); err != nil {
return fmt.Errorf("error updating RDS Event Subscription (%s) tags: %s", d.Get("arn").(string), err)
}

d.SetPartial("tags")
}

Expand Down
27 changes: 13 additions & 14 deletions aws/resource_aws_db_instance.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@ import (

"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/service/rds"

"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
"github.com/hashicorp/terraform-plugin-sdk/helper/validation"
"github.com/terraform-providers/terraform-provider-aws/aws/internal/keyvaluetags"
)

func resourceAwsDbInstance() *schema.Resource {
Expand Down Expand Up @@ -500,7 +500,7 @@ func resourceAwsDbInstanceCreate(d *schema.ResourceData, meta interface{}) error
// we expect everything to be in sync before returning completion.
var requiresRebootDbInstance bool

tags := tagsFromMapRDS(d.Get("tags").(map[string]interface{}))
tags := keyvaluetags.New(d.Get("tags").(map[string]interface{})).IgnoreAws().RdsTags()

var identifier string
if v, ok := d.GetOk("identifier"); ok {
Expand Down Expand Up @@ -1348,19 +1348,16 @@ func resourceAwsDbInstanceRead(d *schema.ResourceData, meta interface{}) error {

arn := aws.StringValue(v.DBInstanceArn)
d.Set("arn", arn)
resp, err := conn.ListTagsForResource(&rds.ListTagsForResourceInput{
ResourceName: aws.String(arn),
})

tags, err := keyvaluetags.RdsListTags(conn, d.Get("arn").(string))

if err != nil {
return fmt.Errorf("Error retrieving tags for ARN (%s): %s", arn, err)
return fmt.Errorf("error listing tags for RDS DB Instance (%s): %s", d.Get("arn").(string), err)
}

var dt []*rds.Tag
if len(resp.TagList) > 0 {
dt = resp.TagList
if err := d.Set("tags", tags.IgnoreAws().Map()); err != nil {
return fmt.Errorf("error setting tags: %s", err)
}
d.Set("tags", tagsToMapRDS(dt))

// Create an empty schema.Set to hold all vpc security group ids
ids := &schema.Set{
Expand Down Expand Up @@ -1708,11 +1705,13 @@ func resourceAwsDbInstanceUpdate(d *schema.ResourceData, meta interface{}) error
}

if d.HasChange("tags") {
if err := setTagsRDS(conn, d, d.Get("arn").(string)); err != nil {
return err
} else {
d.SetPartial("tags")
o, n := d.GetChange("tags")

if err := keyvaluetags.RdsUpdateTags(conn, d.Get("arn").(string), o, n); err != nil {
return fmt.Errorf("error updating RDS DB Instance (%s) tags: %s", d.Get("arn").(string), err)
}

d.SetPartial("tags")
}

d.Partial(false)
Expand Down
22 changes: 12 additions & 10 deletions aws/resource_aws_db_option_group.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ import (

"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/service/rds"

"github.com/hashicorp/terraform-plugin-sdk/helper/hashcode"
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
"github.com/terraform-providers/terraform-provider-aws/aws/internal/keyvaluetags"
)

func resourceAwsDbOptionGroup() *schema.Resource {
Expand Down Expand Up @@ -124,7 +124,7 @@ func resourceAwsDbOptionGroup() *schema.Resource {

func resourceAwsDbOptionGroupCreate(d *schema.ResourceData, meta interface{}) error {
rdsconn := meta.(*AWSClient).rdsconn
tags := tagsFromMapRDS(d.Get("tags").(map[string]interface{}))
tags := keyvaluetags.New(d.Get("tags").(map[string]interface{})).IgnoreAws().RdsTags()

var groupName string
if v, ok := d.GetOk("name"); ok {
Expand Down Expand Up @@ -201,15 +201,13 @@ func resourceAwsDbOptionGroupRead(d *schema.ResourceData, meta interface{}) erro
return fmt.Errorf("error setting option: %s", err)
}

resp, err := rdsconn.ListTagsForResource(&rds.ListTagsForResourceInput{
ResourceName: option.OptionGroupArn,
})
tags, err := keyvaluetags.RdsListTags(rdsconn, d.Get("arn").(string))

if err != nil {
return fmt.Errorf("error listing tags for RDS Option Group (%s): %s", d.Id(), err)
return fmt.Errorf("error listing tags for RDS Option Group (%s): %s", d.Get("arn").(string), err)
}

if err := d.Set("tags", tagsToMapRDS(resp.TagList)); err != nil {
if err := d.Set("tags", tags.IgnoreAws().Map()); err != nil {
return fmt.Errorf("error setting tags: %s", err)
}

Expand Down Expand Up @@ -291,9 +289,13 @@ func resourceAwsDbOptionGroupUpdate(d *schema.ResourceData, meta interface{}) er
}
}

if err := setTagsRDS(rdsconn, d, d.Get("arn").(string)); err != nil {
return err
} else {
if d.HasChange("tags") {
o, n := d.GetChange("tags")

if err := keyvaluetags.RdsUpdateTags(rdsconn, d.Get("arn").(string), o, n); err != nil {
return fmt.Errorf("error updating RDS Option Group (%s) tags: %s", d.Get("arn").(string), err)
}

d.SetPartial("tags")
}

Expand Down
30 changes: 15 additions & 15 deletions aws/resource_aws_db_parameter_group.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@ import (
"strings"
"time"

"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/service/rds"
"github.com/hashicorp/terraform-plugin-sdk/helper/hashcode"
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"

"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/service/rds"
"github.com/terraform-providers/terraform-provider-aws/aws/internal/keyvaluetags"
)

func resourceAwsDbParameterGroup() *schema.Resource {
Expand Down Expand Up @@ -88,7 +88,7 @@ func resourceAwsDbParameterGroup() *schema.Resource {

func resourceAwsDbParameterGroupCreate(d *schema.ResourceData, meta interface{}) error {
rdsconn := meta.(*AWSClient).rdsconn
tags := tagsFromMapRDS(d.Get("tags").(map[string]interface{}))
tags := keyvaluetags.New(d.Get("tags").(map[string]interface{})).IgnoreAws().RdsTags()

var groupName string
if v, ok := d.GetOk("name"); ok {
Expand Down Expand Up @@ -230,19 +230,15 @@ func resourceAwsDbParameterGroupRead(d *schema.ResourceData, meta interface{}) e
arn := aws.StringValue(describeResp.DBParameterGroups[0].DBParameterGroupArn)
d.Set("arn", arn)

resp, err := rdsconn.ListTagsForResource(&rds.ListTagsForResourceInput{
ResourceName: aws.String(arn),
})
tags, err := keyvaluetags.RdsListTags(rdsconn, d.Get("arn").(string))

if err != nil {
log.Printf("[DEBUG] Error retrieving tags for ARN: %s", arn)
return fmt.Errorf("error listing tags for RDS DB Parameter Group (%s): %s", d.Get("arn").(string), err)
}

var dt []*rds.Tag
if len(resp.TagList) > 0 {
dt = resp.TagList
if err := d.Set("tags", tags.IgnoreAws().Map()); err != nil {
return fmt.Errorf("error setting tags: %s", err)
}
d.Set("tags", tagsToMapRDS(dt))

return nil
}
Expand Down Expand Up @@ -296,9 +292,13 @@ func resourceAwsDbParameterGroupUpdate(d *schema.ResourceData, meta interface{})
}
}

if err := setTagsRDS(rdsconn, d, d.Get("arn").(string)); err != nil {
return err
} else {
if d.HasChange("tags") {
o, n := d.GetChange("tags")

if err := keyvaluetags.RdsUpdateTags(rdsconn, d.Get("arn").(string), o, n); err != nil {
return fmt.Errorf("error updating RDS DB Parameter Group (%s) tags: %s", d.Get("arn").(string), err)
}

d.SetPartial("tags")
}

Expand Down
Loading