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

Modernize aws_sns_topic_subscription #14923

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
c95e898
Update resource_aws_sns_topic_subscription.go
chammock Jan 27, 2021
88bf36b
Update resource_aws_sns_topic_subscription.go
chammock Jan 27, 2021
aa7c76b
Update resource_aws_sns_topic_subscription.go
chammock Jan 27, 2021
4633e6b
docs update
Jan 27, 2021
1443fda
Create 17307.txt
chammock Jan 28, 2021
2842c5d
acceptance tests
Jan 28, 2021
6989024
allow changes to subscription_role_arn
Jan 28, 2021
86aafae
merge conflict fix
chammock Feb 10, 2021
7ae70a4
Email support for sns subscription
nikhil-goenka Aug 31, 2020
3a860c0
Email support for sns subscription
nikhil-goenka Aug 31, 2020
a349c84
Update resource_aws_sns_topic_subscription.go
nikhil-goenka Aug 31, 2020
2c5af0d
Update resource_aws_sns_topic_subscription.go
nikhil-goenka Sep 1, 2020
8418902
resource/sns_topic_subscription: Rework with waiter, add attributes
YakDriver Feb 19, 2021
4e38e39
resource/sns_topic_subscription: Move obfuscation to test
YakDriver Feb 19, 2021
e451a51
resource/sns_topic_subscription: Lint
YakDriver Feb 19, 2021
dd51171
docs/r/sns_topic_subscription: Update documentation
YakDriver Feb 19, 2021
7355025
r/sns_topic_subscription: Add changelog, fix docs
YakDriver Feb 20, 2021
99f40ee
r/sns_topic_subscription: Remove unconfirmed subs from state
YakDriver Feb 20, 2021
0171179
docs/r/sns_topic_subscription: Add note to docs
YakDriver Feb 20, 2021
55cba22
r/sns_topic_subscription: Lint
YakDriver Feb 25, 2021
7eeb395
r/sns_topic_subscription: Fix merge conflicts
YakDriver Feb 25, 2021
149b10d
r/sns_topic_subscription: Add new arg to read
YakDriver Feb 25, 2021
474bcd3
r/sns_topic_subscription: Update changelog
YakDriver Feb 25, 2021
a3da892
r/sns_topic_subscription: Simplify firehose test
YakDriver Feb 25, 2021
3cee705
r/sns_topic_subscription: Add error check for firehose (govcloud)
YakDriver Feb 25, 2021
ab67aa8
r/sns_topic_subscription: Remove unneeded changelog
YakDriver Feb 25, 2021
5cc6fb4
docs/r/sns_topic_subscription: Fix docs
YakDriver Feb 25, 2021
14ce978
tests/r/sns_topic_subscription: Fix hardcoded suffixes
YakDriver Feb 25, 2021
0344547
r/sns_topic_subscription: Go-ize variable names
YakDriver Feb 25, 2021
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
3 changes: 3 additions & 0 deletions .changelog/14923.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
```release-note:enhancement
resource/aws_sns_topic_subscription: Add `email`, `email-json`, and `firehose` to protocol values. Add `subscription_role_arn` argument for Firehose support. Add `confirmation_was_authenticated`, `owner_id`, and `pending_confirmation` attributes.
```
30 changes: 30 additions & 0 deletions aws/internal/service/sns/waiter/status.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package waiter

import (
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/service/sns"
"github.com/hashicorp/aws-sdk-go-base/tfawserr"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
)

func SubscriptionPendingConfirmation(conn *sns.SNS, id string) resource.StateRefreshFunc {
return func() (interface{}, string, error) {
output, err := conn.GetSubscriptionAttributes(&sns.GetSubscriptionAttributesInput{
SubscriptionArn: aws.String(id),
})

if tfawserr.ErrCodeEquals(err, sns.ErrCodeResourceNotFoundException) {
return nil, "", nil
}

if err != nil {
return nil, "", err
}

if output == nil {
return nil, "", nil
}

return output, aws.StringValue(output.Attributes["PendingConfirmation"]), nil
}
}
28 changes: 28 additions & 0 deletions aws/internal/service/sns/waiter/waiter.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package waiter

import (
"time"

"github.com/aws/aws-sdk-go/service/sns"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
)

const (
SubscriptionPendingConfirmationTimeout = 2 * time.Minute
)

func SubscriptionConfirmed(conn *sns.SNS, id, expectedValue string, timeout time.Duration) (*sns.GetSubscriptionAttributesOutput, error) {
stateConf := &resource.StateChangeConf{
Target: []string{expectedValue},
Refresh: SubscriptionPendingConfirmation(conn, id),
Timeout: timeout,
}

outputRaw, err := stateConf.WaitForState()

if output, ok := outputRaw.(*sns.GetSubscriptionAttributesOutput); ok {
return output, err
}

return nil, err
}
Loading