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

r/ses_receipt_rule_set - add arn attribute #17611

Merged
merged 4 commits into from
Feb 18, 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
7 changes: 7 additions & 0 deletions .changelog/17611.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
```release-note:enhancement
resource/ses_receipt_rule_set: Add `arn` attribute
```

```release-note:enhancement
resource/ses_receipt_rule_set: Add plan time validation to `name`
```
45 changes: 35 additions & 10 deletions aws/resource_aws_ses_receipt_rule_set.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,10 @@ import (
"log"

"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/arn"
"github.com/aws/aws-sdk-go/service/ses"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
)

func resourceAwsSesReceiptRuleSet() *schema.Resource {
Expand All @@ -19,10 +21,15 @@ func resourceAwsSesReceiptRuleSet() *schema.Resource {
},

Schema: map[string]*schema.Schema{
"rule_set_name": {
"arn": {
Type: schema.TypeString,
Required: true,
ForceNew: true,
Computed: true,
},
"rule_set_name": {
Type: schema.TypeString,
Required: true,
ForceNew: true,
ValidateFunc: validation.StringLenBetween(1, 64),
},
},
}
Expand All @@ -39,7 +46,7 @@ func resourceAwsSesReceiptRuleSetCreate(d *schema.ResourceData, meta interface{}

_, err := conn.CreateReceiptRuleSet(createOpts)
if err != nil {
return fmt.Errorf("Error creating SES rule set: %s", err)
return fmt.Errorf("error creating SES rule set: %w", err)
}

d.SetId(ruleSetName)
Expand All @@ -54,7 +61,7 @@ func resourceAwsSesReceiptRuleSetRead(d *schema.ResourceData, meta interface{})
RuleSetName: aws.String(d.Id()),
}

_, err := conn.DescribeReceiptRuleSet(input)
resp, err := conn.DescribeReceiptRuleSet(input)

if isAWSErr(err, ses.ErrCodeRuleSetDoesNotExistException, "") {
log.Printf("[WARN] SES Receipt Rule Set (%s) not found, removing from state", d.Id())
Expand All @@ -63,10 +70,25 @@ func resourceAwsSesReceiptRuleSetRead(d *schema.ResourceData, meta interface{})
}

if err != nil {
return fmt.Errorf("error describing SES Receipt Rule Set (%s): %s", d.Id(), err)
return fmt.Errorf("error describing SES Receipt Rule Set (%s): %w", d.Id(), err)
}

if resp.Metadata == nil {
log.Print("[WARN] No Receipt Rule Set found")
d.SetId("")
return nil
}

d.Set("rule_set_name", d.Id())
name := aws.StringValue(resp.Metadata.Name)
d.Set("rule_set_name", name)
arn := arn.ARN{
Partition: meta.(*AWSClient).partition,
Service: "ses",
Region: meta.(*AWSClient).region,
AccountID: meta.(*AWSClient).accountid,
Resource: fmt.Sprintf("receipt-rule-set/%s", name),
}.String()
d.Set("arn", arn)

return nil
}
Expand All @@ -75,9 +97,12 @@ func resourceAwsSesReceiptRuleSetDelete(d *schema.ResourceData, meta interface{}
conn := meta.(*AWSClient).sesconn

log.Printf("[DEBUG] SES Delete Receipt Rule Set: %s", d.Id())
_, err := conn.DeleteReceiptRuleSet(&ses.DeleteReceiptRuleSetInput{
input := &ses.DeleteReceiptRuleSetInput{
RuleSetName: aws.String(d.Id()),
})
}
if _, err := conn.DeleteReceiptRuleSet(input); err != nil {
return fmt.Errorf("error deleting SES Receipt Rule Set (%s): %w", d.Id(), err)
}

return err
return nil
}
1 change: 1 addition & 0 deletions aws/resource_aws_ses_receipt_rule_set_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ func TestAccAWSSESReceiptRuleSet_basic(t *testing.T) {
Check: resource.ComposeTestCheckFunc(
testAccCheckAwsSESReceiptRuleSetExists(resourceName),
resource.TestCheckResourceAttr(resourceName, "rule_set_name", rName),
testAccCheckResourceAttrRegionalARN(resourceName, "arn", "ses", fmt.Sprintf("receipt-rule-set/%s", rName)),
),
},
{
Expand Down
11 changes: 9 additions & 2 deletions website/docs/r/ses_receipt_rule_set.html.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ description: |-

# Resource: aws_ses_receipt_rule_set

Provides an SES receipt rule set resource
Provides an SES receipt rule set resource.

## Example Usage

Expand All @@ -22,7 +22,14 @@ resource "aws_ses_receipt_rule_set" "main" {

The following arguments are supported:

* `rule_set_name` - (Required) The name of the rule set
* `rule_set_name` - (Required) Name of the rule set.

## Attributes Reference

In addition to the arguments, which are exported, the following attributes are exported:

* `arn` - SES receipt rule set ARN.
* `id` - SES receipt rule set name.

## Import

Expand Down