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

provider: Support default tags (resources aws_w) #18741

Merged
merged 1 commit into from
Apr 21, 2021
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
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