Skip to content

Commit

Permalink
Merge pull request #18727 from hashicorp/defaulttags/k
Browse files Browse the repository at this point in the history
provider: Support default tags (resources aws_k*)
  • Loading branch information
anGie44 authored Apr 24, 2021
2 parents c3aff42 + 675779f commit 4ea3740
Show file tree
Hide file tree
Showing 16 changed files with 168 additions and 56 deletions.
25 changes: 19 additions & 6 deletions aws/resource_aws_key_pair.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ func resourceAwsKeyPair() *schema.Resource {
State: schema.ImportStatePassthrough,
},

CustomizeDiff: SetTagsDiff,

SchemaVersion: 1,
MigrateState: resourceAwsKeyPairMigrateState,

Expand Down Expand Up @@ -65,7 +67,8 @@ func resourceAwsKeyPair() *schema.Resource {
Type: schema.TypeString,
Computed: true,
},
"tags": tagsSchema(),
"tags": tagsSchema(),
"tags_all": tagsSchemaComputed(),
"arn": {
Type: schema.TypeString,
Computed: true,
Expand All @@ -76,6 +79,8 @@ func resourceAwsKeyPair() *schema.Resource {

func resourceAwsKeyPairCreate(d *schema.ResourceData, meta interface{}) error {
conn := meta.(*AWSClient).ec2conn
defaultTagsConfig := meta.(*AWSClient).DefaultTagsConfig
tags := defaultTagsConfig.MergeTags(keyvaluetags.New(d.Get("tags").(map[string]interface{})))

var keyName string
if v, ok := d.GetOk("key_name"); ok {
Expand All @@ -92,7 +97,7 @@ func resourceAwsKeyPairCreate(d *schema.ResourceData, meta interface{}) error {
req := &ec2.ImportKeyPairInput{
KeyName: aws.String(keyName),
PublicKeyMaterial: []byte(publicKey),
TagSpecifications: ec2TagSpecificationsFromMap(d.Get("tags").(map[string]interface{}), ec2.ResourceTypeKeyPair),
TagSpecifications: ec2TagSpecificationsFromKeyValueTags(tags, ec2.ResourceTypeKeyPair),
}
resp, err := conn.ImportKeyPair(req)
if err != nil {
Expand All @@ -106,6 +111,7 @@ func resourceAwsKeyPairCreate(d *schema.ResourceData, meta interface{}) error {

func resourceAwsKeyPairRead(d *schema.ResourceData, meta interface{}) error {
conn := meta.(*AWSClient).ec2conn
defaultTagsConfig := meta.(*AWSClient).DefaultTagsConfig
ignoreTagsConfig := meta.(*AWSClient).IgnoreTagsConfig

req := &ec2.DescribeKeyPairsInput{
Expand Down Expand Up @@ -136,8 +142,15 @@ func resourceAwsKeyPairRead(d *schema.ResourceData, meta interface{}) error {
d.Set("key_name", kp.KeyName)
d.Set("fingerprint", kp.KeyFingerprint)
d.Set("key_pair_id", kp.KeyPairId)
if err := d.Set("tags", keyvaluetags.Ec2KeyValueTags(kp.Tags).IgnoreAws().IgnoreConfig(ignoreTagsConfig).Map()); err != nil {
return fmt.Errorf("error setting tags: %s", err)
tags := keyvaluetags.Ec2KeyValueTags(kp.Tags).IgnoreAws().IgnoreConfig(ignoreTagsConfig)

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

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

arn := arn.ARN{
Expand All @@ -156,8 +169,8 @@ func resourceAwsKeyPairRead(d *schema.ResourceData, meta interface{}) error {
func resourceAwsKeyPairUpdate(d *schema.ResourceData, meta interface{}) error {
conn := meta.(*AWSClient).ec2conn

if d.HasChange("tags") {
o, n := d.GetChange("tags")
if d.HasChange("tags_all") {
o, n := d.GetChange("tags_all")
if err := keyvaluetags.Ec2UpdateTags(conn, d.Get("key_pair_id").(string), o, n); err != nil {
return fmt.Errorf("error adding tags: %s", err)
}
Expand Down
23 changes: 18 additions & 5 deletions aws/resource_aws_kinesis_analytics_application.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ func resourceAwsKinesisAnalyticsApplication() *schema.Resource {
Delete: resourceAwsKinesisAnalyticsApplicationDelete,

CustomizeDiff: customdiff.Sequence(
SetTagsDiff,
customdiff.ForceNewIfChange("inputs", func(_ context.Context, old, new, meta interface{}) bool {
// An existing input configuration cannot be deleted.
return len(old.([]interface{})) == 1 && len(new.([]interface{})) == 0
Expand Down Expand Up @@ -603,6 +604,8 @@ func resourceAwsKinesisAnalyticsApplication() *schema.Resource {

"tags": tagsSchema(),

"tags_all": tagsSchemaComputed(),

"version": {
Type: schema.TypeInt,
Computed: true,
Expand All @@ -613,6 +616,8 @@ func resourceAwsKinesisAnalyticsApplication() *schema.Resource {

func resourceAwsKinesisAnalyticsApplicationCreate(d *schema.ResourceData, meta interface{}) error {
conn := meta.(*AWSClient).kinesisanalyticsconn
defaultTagsConfig := meta.(*AWSClient).DefaultTagsConfig
tags := defaultTagsConfig.MergeTags(keyvaluetags.New(d.Get("tags").(map[string]interface{})))
applicationName := d.Get("name").(string)

input := &kinesisanalytics.CreateApplicationInput{
Expand All @@ -624,8 +629,8 @@ func resourceAwsKinesisAnalyticsApplicationCreate(d *schema.ResourceData, meta i
Outputs: expandKinesisAnalyticsOutputs(d.Get("outputs").(*schema.Set).List()),
}

if v := d.Get("tags").(map[string]interface{}); len(v) > 0 {
input.Tags = keyvaluetags.New(v).IgnoreAws().KinesisanalyticsTags()
if len(tags) > 0 {
input.Tags = tags.IgnoreAws().KinesisanalyticsTags()
}

log.Printf("[DEBUG] Creating Kinesis Analytics Application: %s", input)
Expand Down Expand Up @@ -696,6 +701,7 @@ func resourceAwsKinesisAnalyticsApplicationCreate(d *schema.ResourceData, meta i

func resourceAwsKinesisAnalyticsApplicationRead(d *schema.ResourceData, meta interface{}) error {
conn := meta.(*AWSClient).kinesisanalyticsconn
defaultTagsConfig := meta.(*AWSClient).DefaultTagsConfig
ignoreTagsConfig := meta.(*AWSClient).IgnoreTagsConfig

application, err := finder.ApplicationDetailByName(conn, d.Get("name").(string))
Expand Down Expand Up @@ -742,10 +748,17 @@ func resourceAwsKinesisAnalyticsApplicationRead(d *schema.ResourceData, meta int
return fmt.Errorf("error listing tags for Kinesis Analytics Application (%s): %w", arn, err)
}

if err := d.Set("tags", tags.IgnoreAws().IgnoreConfig(ignoreTagsConfig).Map()); err != nil {
tags = tags.IgnoreAws().IgnoreConfig(ignoreTagsConfig)

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

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

return nil
}

Expand Down Expand Up @@ -1095,9 +1108,9 @@ func resourceAwsKinesisAnalyticsApplicationUpdate(d *schema.ResourceData, meta i
}
}

if d.HasChange("tags") {
if d.HasChange("tags_all") {
arn := d.Get("arn").(string)
o, n := d.GetChange("tags")
o, n := d.GetChange("tags_all")
if err := keyvaluetags.KinesisanalyticsUpdateTags(conn, arn, o, n); err != nil {
return fmt.Errorf("error updating Kinesis Analytics Application (%s) tags: %s", arn, err)
}
Expand Down
26 changes: 20 additions & 6 deletions aws/resource_aws_kinesis_firehose_delivery_stream.go
Original file line number Diff line number Diff line change
Expand Up @@ -813,6 +813,8 @@ func resourceAwsKinesisFirehoseDeliveryStream() *schema.Resource {
},
},

CustomizeDiff: SetTagsDiff,

SchemaVersion: 1,
MigrateState: resourceAwsKinesisFirehoseMigrateState,
Schema: map[string]*schema.Schema{
Expand All @@ -825,6 +827,8 @@ func resourceAwsKinesisFirehoseDeliveryStream() *schema.Resource {

"tags": tagsSchema(),

"tags_all": tagsSchemaComputed(),

"server_side_encryption": {
Type: schema.TypeList,
Optional: true,
Expand Down Expand Up @@ -2463,6 +2467,8 @@ func resourceAwsKinesisFirehoseDeliveryStreamCreate(d *schema.ResourceData, meta
}

conn := meta.(*AWSClient).firehoseconn
defaultTagsConfig := meta.(*AWSClient).DefaultTagsConfig
tags := defaultTagsConfig.MergeTags(keyvaluetags.New(d.Get("tags").(map[string]interface{})))

sn := d.Get("name").(string)

Expand Down Expand Up @@ -2513,8 +2519,8 @@ func resourceAwsKinesisFirehoseDeliveryStreamCreate(d *schema.ResourceData, meta
}
}

if v, ok := d.GetOk("tags"); ok {
createInput.Tags = keyvaluetags.New(v.(map[string]interface{})).IgnoreAws().FirehoseTags()
if len(tags) > 0 {
createInput.Tags = tags.IgnoreAws().FirehoseTags()
}

err := resource.Retry(iamwaiter.PropagationTimeout, func() *resource.RetryError {
Expand Down Expand Up @@ -2704,8 +2710,8 @@ func resourceAwsKinesisFirehoseDeliveryStreamUpdate(d *schema.ResourceData, meta
sn, err)
}

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

if err := keyvaluetags.FirehoseUpdateTags(conn, sn, o, n); err != nil {
return fmt.Errorf("error updating Kinesis Firehose Delivery Stream (%s) tags: %s", sn, err)
Expand Down Expand Up @@ -2750,6 +2756,7 @@ func resourceAwsKinesisFirehoseDeliveryStreamUpdate(d *schema.ResourceData, meta

func resourceAwsKinesisFirehoseDeliveryStreamRead(d *schema.ResourceData, meta interface{}) error {
conn := meta.(*AWSClient).firehoseconn
defaultTagsConfig := meta.(*AWSClient).DefaultTagsConfig
ignoreTagsConfig := meta.(*AWSClient).IgnoreTagsConfig

sn := d.Get("name").(string)
Expand Down Expand Up @@ -2778,8 +2785,15 @@ func resourceAwsKinesisFirehoseDeliveryStreamRead(d *schema.ResourceData, meta i
return fmt.Errorf("error listing tags for Kinesis Firehose Delivery Stream (%s): %s", sn, err)
}

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

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

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

return nil
Expand Down
21 changes: 16 additions & 5 deletions aws/resource_aws_kinesis_stream.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ func resourceAwsKinesisStream() *schema.Resource {
State: resourceAwsKinesisStreamImport,
},

CustomizeDiff: SetTagsDiff,

SchemaVersion: 1,
StateUpgraders: []schema.StateUpgrader{
{
Expand Down Expand Up @@ -99,7 +101,8 @@ func resourceAwsKinesisStream() *schema.Resource {
Optional: true,
Computed: true,
},
"tags": tagsSchema(),
"tags": tagsSchema(),
"tags_all": tagsSchemaComputed(),
},
}
}
Expand Down Expand Up @@ -152,8 +155,8 @@ func resourceAwsKinesisStreamUpdate(d *schema.ResourceData, meta interface{}) er
conn := meta.(*AWSClient).kinesisconn

sn := d.Get("name").(string)
if d.HasChange("tags") {
o, n := d.GetChange("tags")
if d.HasChange("tags_all") {
o, n := d.GetChange("tags_all")

if err := keyvaluetags.KinesisUpdateTags(conn, sn, o, n); err != nil {
return fmt.Errorf("error updating Kinesis Stream (%s) tags: %s", sn, err)
Expand All @@ -179,6 +182,7 @@ func resourceAwsKinesisStreamUpdate(d *schema.ResourceData, meta interface{}) er

func resourceAwsKinesisStreamRead(d *schema.ResourceData, meta interface{}) error {
conn := meta.(*AWSClient).kinesisconn
defaultTagsConfig := meta.(*AWSClient).DefaultTagsConfig
ignoreTagsConfig := meta.(*AWSClient).IgnoreTagsConfig

sn := d.Get("name").(string)
Expand Down Expand Up @@ -213,8 +217,15 @@ func resourceAwsKinesisStreamRead(d *schema.ResourceData, meta interface{}) erro
return fmt.Errorf("error listing tags for Kinesis Stream (%s): %s", sn, err)
}

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

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

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

return nil
Expand Down
26 changes: 20 additions & 6 deletions aws/resource_aws_kinesis_video_stream.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ func resourceAwsKinesisVideoStream() *schema.Resource {
State: schema.ImportStatePassthrough,
},

CustomizeDiff: SetTagsDiff,

Timeouts: &schema.ResourceTimeout{
Create: schema.DefaultTimeout(5 * time.Minute),
Update: schema.DefaultTimeout(120 * time.Minute),
Expand Down Expand Up @@ -81,12 +83,16 @@ func resourceAwsKinesisVideoStream() *schema.Resource {
},

"tags": tagsSchema(),

"tags_all": tagsSchemaComputed(),
},
}
}

func resourceAwsKinesisVideoStreamCreate(d *schema.ResourceData, meta interface{}) error {
conn := meta.(*AWSClient).kinesisvideoconn
defaultTagsConfig := meta.(*AWSClient).DefaultTagsConfig
tags := defaultTagsConfig.MergeTags(keyvaluetags.New(d.Get("tags").(map[string]interface{})))

createOpts := &kinesisvideo.CreateStreamInput{
StreamName: aws.String(d.Get("name").(string)),
Expand All @@ -105,8 +111,8 @@ func resourceAwsKinesisVideoStreamCreate(d *schema.ResourceData, meta interface{
createOpts.MediaType = aws.String(v.(string))
}

if v := d.Get("tags").(map[string]interface{}); len(v) > 0 {
createOpts.Tags = keyvaluetags.New(v).IgnoreAws().KinesisvideoTags()
if len(tags) > 0 {
createOpts.Tags = tags.IgnoreAws().KinesisvideoTags()
}

resp, err := conn.CreateStream(createOpts)
Expand Down Expand Up @@ -135,6 +141,7 @@ func resourceAwsKinesisVideoStreamCreate(d *schema.ResourceData, meta interface{

func resourceAwsKinesisVideoStreamRead(d *schema.ResourceData, meta interface{}) error {
conn := meta.(*AWSClient).kinesisvideoconn
defaultTagsConfig := meta.(*AWSClient).DefaultTagsConfig
ignoreTagsConfig := meta.(*AWSClient).IgnoreTagsConfig

descOpts := &kinesisvideo.DescribeStreamInput{
Expand Down Expand Up @@ -168,8 +175,15 @@ func resourceAwsKinesisVideoStreamRead(d *schema.ResourceData, meta interface{})
return fmt.Errorf("error listing tags for Kinesis Video Stream (%s): %s", d.Id(), err)
}

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

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

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

return nil
Expand Down Expand Up @@ -200,8 +214,8 @@ func resourceAwsKinesisVideoStreamUpdate(d *schema.ResourceData, meta interface{
return fmt.Errorf("Error updating Kinesis Video Stream (%s): %s", d.Id(), err)
}

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

if err := keyvaluetags.KinesisvideoUpdateTags(conn, d.Id(), o, n); err != nil {
return fmt.Errorf("error updating Kinesis Video Stream (%s) tags: %s", d.Id(), err)
Expand Down
Loading

0 comments on commit 4ea3740

Please sign in to comment.