Skip to content

Commit

Permalink
Merge pull request #18741 from hashicorp/f-default-tags-support-w-res…
Browse files Browse the repository at this point in the history
…ources

provider: Support default tags (resources aws_w)
  • Loading branch information
anGie44 authored Apr 21, 2021
2 parents 7ae23ce + 93bb2e4 commit 004d2ef
Show file tree
Hide file tree
Showing 30 changed files with 318 additions and 116 deletions.
27 changes: 20 additions & 7 deletions aws/resource_aws_waf_rate_based_rule.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,18 +66,22 @@ func resourceAwsWafRateBasedRule() *schema.Resource {
Required: true,
ValidateFunc: validation.IntAtLeast(100),
},
"tags": tagsSchema(),
"tags": tagsSchema(),
"tags_all": tagsSchemaComputed(),
"arn": {
Type: schema.TypeString,
Computed: true,
},
},

CustomizeDiff: SetTagsDiff,
}
}

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

wr := newWafRetryer(conn)
out, err := wr.RetryWithToken(func(token *string) (interface{}, error) {
Expand All @@ -90,7 +94,7 @@ func resourceAwsWafRateBasedRuleCreate(d *schema.ResourceData, meta interface{})
}

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

return conn.CreateRateBasedRule(params)
Expand All @@ -115,6 +119,7 @@ func resourceAwsWafRateBasedRuleCreate(d *schema.ResourceData, meta interface{})

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

params := &waf.GetRateBasedRuleInput{
Expand Down Expand Up @@ -155,8 +160,16 @@ func resourceAwsWafRateBasedRuleRead(d *schema.ResourceData, meta interface{}) e
if err != nil {
return fmt.Errorf("Failed to get WAF Rated Based Rule parameter tags for %s: %s", d.Get("name"), err)
}
if err := d.Set("tags", tagList.IgnoreAws().IgnoreConfig(ignoreTagsConfig).Map()); err != nil {
return fmt.Errorf("error setting tags: %s", err)

tags := tagList.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)
}

d.Set("predicates", predicates)
Expand All @@ -182,8 +195,8 @@ func resourceAwsWafRateBasedRuleUpdate(d *schema.ResourceData, meta interface{})
}
}

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

if err := keyvaluetags.WafUpdateTags(conn, d.Get("arn").(string), o, n); err != nil {
return fmt.Errorf("error updating tags: %s", err)
Expand Down
24 changes: 18 additions & 6 deletions aws/resource_aws_waf_rule.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,18 +65,22 @@ func resourceAwsWafRule() *schema.Resource {
},
},
},
"tags": tagsSchema(),
"tags": tagsSchema(),
"tags_all": tagsSchemaComputed(),
"arn": {
Type: schema.TypeString,
Computed: true,
},
},

CustomizeDiff: SetTagsDiff,
}
}

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

wr := newWafRetryer(conn)
out, err := wr.RetryWithToken(func(token *string) (interface{}, error) {
Expand All @@ -87,7 +91,7 @@ func resourceAwsWafRuleCreate(d *schema.ResourceData, meta interface{}) error {
}

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

return conn.CreateRule(params)
Expand All @@ -114,6 +118,7 @@ func resourceAwsWafRuleCreate(d *schema.ResourceData, meta interface{}) error {

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

params := &waf.GetRuleInput{
Expand Down Expand Up @@ -166,10 +171,17 @@ func resourceAwsWafRuleRead(d *schema.ResourceData, meta interface{}) error {
return fmt.Errorf("error listing tags for WAF Rule (%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)
}

d.Set("predicates", predicates)
d.Set("name", resp.Rule.Name)
d.Set("metric_name", resp.Rule.MetricName)
Expand All @@ -190,8 +202,8 @@ func resourceAwsWafRuleUpdate(d *schema.ResourceData, meta interface{}) error {
}
}

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

if err := keyvaluetags.WafUpdateTags(conn, d.Get("arn").(string), o, n); err != nil {
return fmt.Errorf("error updating WAF Rule (%s) tags: %w", d.Id(), err)
Expand Down
27 changes: 20 additions & 7 deletions aws/resource_aws_waf_rule_group.go
Original file line number Diff line number Diff line change
Expand Up @@ -67,18 +67,22 @@ func resourceAwsWafRuleGroup() *schema.Resource {
},
},
},
"tags": tagsSchema(),
"tags": tagsSchema(),
"tags_all": tagsSchemaComputed(),
"arn": {
Type: schema.TypeString,
Computed: true,
},
},

CustomizeDiff: SetTagsDiff,
}
}

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

wr := newWafRetryer(conn)
out, err := wr.RetryWithToken(func(token *string) (interface{}, error) {
Expand All @@ -89,7 +93,7 @@ func resourceAwsWafRuleGroupCreate(d *schema.ResourceData, meta interface{}) err
}

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

return conn.CreateRuleGroup(params)
Expand All @@ -115,6 +119,7 @@ func resourceAwsWafRuleGroupCreate(d *schema.ResourceData, meta interface{}) err

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

params := &waf.GetRuleGroupInput{
Expand Down Expand Up @@ -151,8 +156,16 @@ func resourceAwsWafRuleGroupRead(d *schema.ResourceData, meta interface{}) error
if err != nil {
return fmt.Errorf("error listing tags for WAF Rule Group (%s): %s", arn, 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)
}

d.Set("activated_rule", flattenWafActivatedRules(rResp.ActivatedRules))
Expand All @@ -175,8 +188,8 @@ func resourceAwsWafRuleGroupUpdate(d *schema.ResourceData, meta interface{}) err
}
}

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

if err := keyvaluetags.WafUpdateTags(conn, d.Get("arn").(string), o, n); err != nil {
return fmt.Errorf("error updating tags: %s", err)
Expand Down
25 changes: 19 additions & 6 deletions aws/resource_aws_waf_web_acl.go
Original file line number Diff line number Diff line change
Expand Up @@ -139,14 +139,18 @@ func resourceAwsWafWebAcl() *schema.Resource {
},
},
},
"tags": tagsSchema(),
"tags": tagsSchema(),
"tags_all": tagsSchemaComputed(),
},

CustomizeDiff: SetTagsDiff,
}
}

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

wr := newWafRetryer(conn)
out, err := wr.RetryWithToken(func(token *string) (interface{}, error) {
Expand All @@ -158,7 +162,7 @@ func resourceAwsWafWebAclCreate(d *schema.ResourceData, meta interface{}) error
}

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

return conn.CreateWebACL(params)
Expand Down Expand Up @@ -212,6 +216,7 @@ func resourceAwsWafWebAclCreate(d *schema.ResourceData, meta interface{}) error

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

params := &waf.GetWebACLInput{
Expand Down Expand Up @@ -252,10 +257,18 @@ func resourceAwsWafWebAclRead(d *schema.ResourceData, meta interface{}) error {
if err != nil {
return fmt.Errorf("error listing tags for WAF Web ACL (%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)
}

if err := d.Set("rules", flattenWafWebAclRules(resp.WebACL.Rules)); err != nil {
return fmt.Errorf("error setting rules: %w", err)
}
Expand Down Expand Up @@ -327,8 +340,8 @@ func resourceAwsWafWebAclUpdate(d *schema.ResourceData, meta interface{}) error

}

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

if err := keyvaluetags.WafUpdateTags(conn, d.Get("arn").(string), o, n); err != nil {
return fmt.Errorf("error updating WAF Web ACL (%s) tags: %w", d.Id(), err)
Expand Down
27 changes: 20 additions & 7 deletions aws/resource_aws_wafregional_rate_based_rule.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,19 +66,23 @@ func resourceAwsWafRegionalRateBasedRule() *schema.Resource {
Required: true,
ValidateFunc: validation.IntAtLeast(100),
},
"tags": tagsSchema(),
"tags": tagsSchema(),
"tags_all": tagsSchemaComputed(),
"arn": {
Type: schema.TypeString,
Computed: true,
},
},

CustomizeDiff: SetTagsDiff,
}
}

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

wr := newWafRegionalRetryer(conn, region)
out, err := wr.RetryWithToken(func(token *string) (interface{}, error) {
Expand All @@ -91,7 +95,7 @@ func resourceAwsWafRegionalRateBasedRuleCreate(d *schema.ResourceData, meta inte
}

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

return conn.CreateRateBasedRule(params)
Expand All @@ -116,6 +120,7 @@ func resourceAwsWafRegionalRateBasedRuleCreate(d *schema.ResourceData, meta inte

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

params := &waf.GetRateBasedRuleInput{
Expand Down Expand Up @@ -155,8 +160,16 @@ func resourceAwsWafRegionalRateBasedRuleRead(d *schema.ResourceData, meta interf
if err != nil {
return fmt.Errorf("Failed to get WAF Regional Rated Based Rule parameter tags for %s: %s", d.Get("name"), err)
}
if err := d.Set("tags", tagList.IgnoreAws().IgnoreConfig(ignoreTagsConfig).Map()); err != nil {
return fmt.Errorf("error setting tags: %s", err)

tags := tagList.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)
}

d.Set("predicate", predicates)
Expand Down Expand Up @@ -188,8 +201,8 @@ func resourceAwsWafRegionalRateBasedRuleUpdate(d *schema.ResourceData, meta inte
}
}

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

if err := keyvaluetags.WafregionalUpdateTags(conn, d.Get("arn").(string), o, n); err != nil {
return fmt.Errorf("error updating tags: %s", err)
Expand Down
Loading

0 comments on commit 004d2ef

Please sign in to comment.