Skip to content

Commit

Permalink
Merge pull request #30478 from hashicorp/td-transparent-tagging-phase…
Browse files Browse the repository at this point in the history
…3c-q

Tech debt: Reduce `tags` boilerplate code - Plugin SDK resources `q*` (Phase 3c)
  • Loading branch information
ewbankkit authored Apr 5, 2023
2 parents 1e5805c + a1d45c0 commit 12d72d1
Show file tree
Hide file tree
Showing 7 changed files with 50 additions and 177 deletions.
39 changes: 6 additions & 33 deletions internal/service/qldb/ledger.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,11 @@ import (
tftags "github.com/hashicorp/terraform-provider-aws/internal/tags"
"github.com/hashicorp/terraform-provider-aws/internal/tfresource"
"github.com/hashicorp/terraform-provider-aws/internal/verify"
"github.com/hashicorp/terraform-provider-aws/names"
)

// @SDKResource("aws_qldb_ledger")
// @SDKResource("aws_qldb_ledger", name="Ledger")
// @Tags(identifierAttribute="arn")
func ResourceLedger() *schema.Resource {
return &schema.Resource{
CreateWithoutTimeout: resourceLedgerCreate,
Expand Down Expand Up @@ -71,8 +73,8 @@ func ResourceLedger() *schema.Resource {
Required: true,
ValidateFunc: validation.StringInSlice(qldb.PermissionsMode_Values(), false),
},
"tags": tftags.TagsSchema(),
"tags_all": tftags.TagsSchemaComputed(),
names.AttrTags: tftags.TagsSchema(),
names.AttrTagsAll: tftags.TagsSchemaComputed(),
},

CustomizeDiff: verify.SetTagsDiff,
Expand All @@ -81,15 +83,13 @@ func ResourceLedger() *schema.Resource {

func resourceLedgerCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
conn := meta.(*conns.AWSClient).QLDBConn()
defaultTagsConfig := meta.(*conns.AWSClient).DefaultTagsConfig
tags := defaultTagsConfig.MergeTags(tftags.New(ctx, d.Get("tags").(map[string]interface{})))

name := create.Name(d.Get("name").(string), "tf")
input := &qldb.CreateLedgerInput{
DeletionProtection: aws.Bool(d.Get("deletion_protection").(bool)),
Name: aws.String(name),
PermissionsMode: aws.String(d.Get("permissions_mode").(string)),
Tags: Tags(tags.IgnoreAWS()),
Tags: GetTagsIn(ctx),
}

if v, ok := d.GetOk("kms_key"); ok {
Expand All @@ -114,8 +114,6 @@ func resourceLedgerCreate(ctx context.Context, d *schema.ResourceData, meta inte

func resourceLedgerRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
conn := meta.(*conns.AWSClient).QLDBConn()
defaultTagsConfig := meta.(*conns.AWSClient).DefaultTagsConfig
ignoreTagsConfig := meta.(*conns.AWSClient).IgnoreTagsConfig

ledger, err := FindLedgerByName(ctx, conn, d.Id())

Expand All @@ -139,23 +137,6 @@ func resourceLedgerRead(ctx context.Context, d *schema.ResourceData, meta interf
d.Set("name", ledger.Name)
d.Set("permissions_mode", ledger.PermissionsMode)

tags, err := ListTags(ctx, conn, d.Get("arn").(string))

if err != nil {
return diag.Errorf("listing tags for QLDB Ledger (%s): %s", d.Id(), err)
}

tags = tags.IgnoreAWS().IgnoreConfig(ignoreTagsConfig)

//lintignore:AWSR002
if err := d.Set("tags", tags.RemoveDefaultConfig(defaultTagsConfig).Map()); err != nil {
return diag.Errorf("setting tags: %s", err)
}

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

return nil
}

Expand Down Expand Up @@ -190,14 +171,6 @@ func resourceLedgerUpdate(ctx context.Context, d *schema.ResourceData, meta inte
}
}

if d.HasChange("tags_all") {
o, n := d.GetChange("tags_all")

if err := UpdateTags(ctx, conn, d.Get("arn").(string), o, n); err != nil {
return diag.Errorf("updating tags: %s", err)
}
}

return resourceLedgerRead(ctx, d, meta)
}

Expand Down
8 changes: 8 additions & 0 deletions internal/service/qldb/service_package_gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

42 changes: 7 additions & 35 deletions internal/service/qldb/stream.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,11 @@ import (
tftags "github.com/hashicorp/terraform-provider-aws/internal/tags"
"github.com/hashicorp/terraform-provider-aws/internal/tfresource"
"github.com/hashicorp/terraform-provider-aws/internal/verify"
"github.com/hashicorp/terraform-provider-aws/names"
)

// @SDKResource("aws_qldb_stream")
// @SDKResource("aws_qldb_stream", name="Stream")
// @Tags(identifierAttribute="arn")
func ResourceStream() *schema.Resource {
return &schema.Resource{
CreateWithoutTimeout: resourceStreamCreate,
Expand Down Expand Up @@ -88,8 +90,8 @@ func ResourceStream() *schema.Resource {
validation.StringLenBetween(1, 32),
),
},
"tags": tftags.TagsSchema(),
"tags_all": tftags.TagsSchemaComputed(),
names.AttrTags: tftags.TagsSchema(),
names.AttrTagsAll: tftags.TagsSchemaComputed(),
},

CustomizeDiff: verify.SetTagsDiff,
Expand All @@ -98,16 +100,14 @@ func ResourceStream() *schema.Resource {

func resourceStreamCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
conn := meta.(*conns.AWSClient).QLDBConn()
defaultTagsConfig := meta.(*conns.AWSClient).DefaultTagsConfig
tags := defaultTagsConfig.MergeTags(tftags.New(ctx, d.Get("tags").(map[string]interface{})))

ledgerName := d.Get("ledger_name").(string)
name := d.Get("stream_name").(string)
input := &qldb.StreamJournalToKinesisInput{
LedgerName: aws.String(ledgerName),
RoleArn: aws.String(d.Get("role_arn").(string)),
StreamName: aws.String(name),
Tags: Tags(tags.IgnoreAWS()),
Tags: GetTagsIn(ctx),
}

if v, ok := d.GetOk("exclusive_end_time"); ok {
Expand Down Expand Up @@ -142,8 +142,6 @@ func resourceStreamCreate(ctx context.Context, d *schema.ResourceData, meta inte

func resourceStreamRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
conn := meta.(*conns.AWSClient).QLDBConn()
defaultTagsConfig := meta.(*conns.AWSClient).DefaultTagsConfig
ignoreTagsConfig := meta.(*conns.AWSClient).IgnoreTagsConfig

ledgerName := d.Get("ledger_name").(string)
stream, err := FindStream(ctx, conn, ledgerName, d.Id())
Expand Down Expand Up @@ -180,37 +178,11 @@ func resourceStreamRead(ctx context.Context, d *schema.ResourceData, meta interf
d.Set("role_arn", stream.RoleArn)
d.Set("stream_name", stream.StreamName)

tags, err := ListTags(ctx, conn, d.Get("arn").(string))

if err != nil {
return diag.Errorf("listing tags for QLDB Stream (%s): %s", d.Id(), err)
}

tags = tags.IgnoreAWS().IgnoreConfig(ignoreTagsConfig)

//lintignore:AWSR002
if err := d.Set("tags", tags.RemoveDefaultConfig(defaultTagsConfig).Map()); err != nil {
return diag.Errorf("setting tags: %s", err)
}

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

return nil
}

func resourceStreamUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
conn := meta.(*conns.AWSClient).QLDBConn()

if d.HasChange("tags") {
o, n := d.GetChange("tags")

if err := UpdateTags(ctx, conn, d.Get("arn").(string), o, n); err != nil {
return diag.Errorf("updating tags: %s", err)
}
}

// Tags only.
return resourceStreamRead(ctx, d, meta)
}

Expand Down
42 changes: 6 additions & 36 deletions internal/service/quicksight/data_set.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,11 @@ import (
"github.com/hashicorp/terraform-provider-aws/internal/flex"
tftags "github.com/hashicorp/terraform-provider-aws/internal/tags"
"github.com/hashicorp/terraform-provider-aws/internal/verify"
"github.com/hashicorp/terraform-provider-aws/names"
)

// @SDKResource("aws_quicksight_data_set")
// @SDKResource("aws_quicksight_data_set", name="Data Set")
// @Tags(identifierAttribute="arn")
func ResourceDataSet() *schema.Resource {
return &schema.Resource{
CreateWithoutTimeout: resourceDataSetCreate,
Expand Down Expand Up @@ -277,8 +279,8 @@ func ResourceDataSet() *schema.Resource {
},
},
},
"tags": tftags.TagsSchema(),
"tags_all": tftags.TagsSchemaComputed(),
names.AttrTags: tftags.TagsSchema(),
names.AttrTagsAll: tftags.TagsSchemaComputed(),
},
CustomizeDiff: verify.SetTagsDiff,
}
Expand Down Expand Up @@ -752,7 +754,6 @@ func physicalTableMapSchema() *schema.Resource {

func resourceDataSetCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
conn := meta.(*conns.AWSClient).QuickSightConn()
defaultTagsConfig := meta.(*conns.AWSClient).DefaultTagsConfig

awsAccountId := meta.(*conns.AWSClient).AccountID
if v, ok := d.GetOk("aws_account_id"); ok {
Expand All @@ -768,11 +769,7 @@ func resourceDataSetCreate(ctx context.Context, d *schema.ResourceData, meta int
ImportMode: aws.String(d.Get("import_mode").(string)),
PhysicalTableMap: expandDataSetPhysicalTableMap(d.Get("physical_table_map").(*schema.Set)),
Name: aws.String(d.Get("name").(string)),
}

tags := defaultTagsConfig.MergeTags(tftags.New(ctx, d.Get("tags").(map[string]interface{})))
if len(tags) > 0 {
input.Tags = Tags(tags.IgnoreAWS())
Tags: GetTagsIn(ctx),
}

if v, ok := d.GetOk("column_groups"); ok && len(v.([]interface{})) > 0 && v.([]interface{})[0] != nil {
Expand Down Expand Up @@ -817,8 +814,6 @@ func resourceDataSetCreate(ctx context.Context, d *schema.ResourceData, meta int

func resourceDataSetRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
conn := meta.(*conns.AWSClient).QuickSightConn()
defaultTagsConfig := meta.(*conns.AWSClient).DefaultTagsConfig
ignoreTagsConfig := meta.(*conns.AWSClient).IgnoreTagsConfig

awsAccountId, dataSetId, err := ParseDataSetID(d.Id())
if err != nil {
Expand Down Expand Up @@ -886,23 +881,6 @@ func resourceDataSetRead(ctx context.Context, d *schema.ResourceData, meta inter
return diag.Errorf("error setting row_level_permission_tag_configuration: %s", err)
}

tags, err := ListTags(ctx, conn, d.Get("arn").(string))

if err != nil {
return diag.Errorf("error listing tags for QuickSight Data Set (%s): %s", d.Id(), err)
}

tags = tags.IgnoreAWS().IgnoreConfig(ignoreTagsConfig)

//lintignore:AWSR002
if err := d.Set("tags", tags.RemoveDefaultConfig(defaultTagsConfig).Map()); err != nil {
return diag.Errorf("error setting tags: %s", err)
}

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

permsResp, err := conn.DescribeDataSetPermissionsWithContext(ctx, &quicksight.DescribeDataSetPermissionsInput{
AwsAccountId: aws.String(awsAccountId),
DataSetId: aws.String(dataSetId),
Expand Down Expand Up @@ -1001,14 +979,6 @@ func resourceDataSetUpdate(ctx context.Context, d *schema.ResourceData, meta int
}
}

if d.HasChange("tags_all") {
o, n := d.GetChange("tags_all")

if err := UpdateTags(ctx, conn, d.Get("arn").(string), o, n); err != nil {
return diag.Errorf("error updating QuickSight Data Source (%s) tags: %s", d.Id(), err)
}
}

return resourceDataSetRead(ctx, d, meta)
}

Expand Down
43 changes: 6 additions & 37 deletions internal/service/quicksight/data_source.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,11 @@ import (
"github.com/hashicorp/terraform-provider-aws/internal/conns"
tftags "github.com/hashicorp/terraform-provider-aws/internal/tags"
"github.com/hashicorp/terraform-provider-aws/internal/verify"
"github.com/hashicorp/terraform-provider-aws/names"
)

// @SDKResource("aws_quicksight_data_source")
// @SDKResource("aws_quicksight_data_source", name="Data Source")
// @Tags(identifierAttribute="arn")
func ResourceDataSource() *schema.Resource {
return &schema.Resource{
CreateWithoutTimeout: resourceDataSourceCreate,
Expand Down Expand Up @@ -572,9 +574,8 @@ func ResourceDataSource() *schema.Resource {
},
},

"tags": tftags.TagsSchema(),

"tags_all": tftags.TagsSchemaComputed(),
names.AttrTags: tftags.TagsSchema(),
names.AttrTagsAll: tftags.TagsSchemaComputed(),

"type": {
Type: schema.TypeString,
Expand Down Expand Up @@ -604,8 +605,6 @@ func ResourceDataSource() *schema.Resource {

func resourceDataSourceCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
conn := meta.(*conns.AWSClient).QuickSightConn()
defaultTagsConfig := meta.(*conns.AWSClient).DefaultTagsConfig
tags := defaultTagsConfig.MergeTags(tftags.New(ctx, d.Get("tags").(map[string]interface{})))

awsAccountId := meta.(*conns.AWSClient).AccountID
id := d.Get("data_source_id").(string)
Expand All @@ -619,13 +618,10 @@ func resourceDataSourceCreate(ctx context.Context, d *schema.ResourceData, meta
DataSourceId: aws.String(id),
DataSourceParameters: expandDataSourceParameters(d.Get("parameters").([]interface{})),
Name: aws.String(d.Get("name").(string)),
Tags: GetTagsIn(ctx),
Type: aws.String(d.Get("type").(string)),
}

if len(tags) > 0 {
params.Tags = Tags(tags.IgnoreAWS())
}

if v, ok := d.GetOk("credentials"); ok && len(v.([]interface{})) > 0 && v.([]interface{})[0] != nil {
params.Credentials = expandDataSourceCredentials(v.([]interface{}))
}
Expand Down Expand Up @@ -658,8 +654,6 @@ func resourceDataSourceCreate(ctx context.Context, d *schema.ResourceData, meta

func resourceDataSourceRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
conn := meta.(*conns.AWSClient).QuickSightConn()
defaultTagsConfig := meta.(*conns.AWSClient).DefaultTagsConfig
ignoreTagsConfig := meta.(*conns.AWSClient).IgnoreTagsConfig

awsAccountId, dataSourceId, err := ParseDataSourceID(d.Id())
if err != nil {
Expand Down Expand Up @@ -702,23 +696,6 @@ func resourceDataSourceRead(ctx context.Context, d *schema.ResourceData, meta in
return diag.Errorf("error setting ssl_properties: %s", err)
}

tags, err := ListTags(ctx, conn, d.Get("arn").(string))

if err != nil {
return diag.Errorf("error listing tags for QuickSight Data Source (%s): %s", d.Id(), err)
}

tags = tags.IgnoreAWS().IgnoreConfig(ignoreTagsConfig)

//lintignore:AWSR002
if err := d.Set("tags", tags.RemoveDefaultConfig(defaultTagsConfig).Map()); err != nil {
return diag.Errorf("error setting tags: %s", err)
}

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

d.Set("type", dataSource.Type)

if err := d.Set("vpc_connection_properties", flattenVPCConnectionProperties(dataSource.VpcConnectionProperties)); err != nil {
Expand Down Expand Up @@ -815,14 +792,6 @@ func resourceDataSourceUpdate(ctx context.Context, d *schema.ResourceData, meta
}
}

if d.HasChange("tags_all") {
o, n := d.GetChange("tags_all")

if err := UpdateTags(ctx, conn, d.Get("arn").(string), o, n); err != nil {
return diag.Errorf("error updating QuickSight Data Source (%s) tags: %s", d.Id(), err)
}
}

return resourceDataSourceRead(ctx, d, meta)
}

Expand Down
Loading

0 comments on commit 12d72d1

Please sign in to comment.