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

resource/aws_ssm_activation: Prevent crash with expiration_date #3597

Merged
merged 2 commits into from
Mar 2, 2018

Conversation

bflad
Copy link
Contributor

@bflad bflad commented Mar 2, 2018

Fixes #3594

Previously (new test, no code changes):

make testacc TEST=./aws TESTARGS='-run=TestAccAWSSSMActivation_expirationDate'
==> Checking that code complies with gofmt requirements...
TF_ACC=1 go test ./aws -v -run=TestAccAWSSSMActivation_expirationDate -timeout 120m
=== RUN   TestAccAWSSSMActivation_expirationDate
panic: interface conversion: interface {} is string, not time.Time

goroutine 313 [running]:
github.com/terraform-providers/terraform-provider-aws/aws.resourceAwsSsmActivationCreate(0xc4204d33b0, 0x3457ce0, 0xc420218500, 0xc4204d33b0, 0x0)
	/Users/bflad/go/src/github.com/terraform-providers/terraform-provider-aws/aws/resource_aws_ssm_activation.go:81 +0x89a
...
FAIL	github.com/terraform-providers/terraform-provider-aws/aws	5.728s
make: *** [testacc] Error 1

Now passes:

make testacc TEST=./aws TESTARGS='-run=TestAccAWSSSMActivation_expirationDate'
==> Checking that code complies with gofmt requirements...
TF_ACC=1 go test ./aws -v -run=TestAccAWSSSMActivation_expirationDate -timeout 120m
=== RUN   TestAccAWSSSMActivation_expirationDate
--- PASS: TestAccAWSSSMActivation_expirationDate (31.05s)
PASS
ok  	github.com/terraform-providers/terraform-provider-aws/aws	31.094s

@ghost ghost added the size/M Managed by automation to categorize the size of a PR. label Mar 2, 2018
@bflad bflad added bug Addresses a defect in current functionality. crash Results from or addresses a Terraform crash or kernel panic. service/ssm Issues and PRs that pertain to the ssm service. labels Mar 2, 2018
@bflad bflad added this to the v1.11.0 milestone Mar 2, 2018
@bflad bflad requested a review from a team March 2, 2018 04:29
Copy link
Contributor

@Ninir Ninir left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! 👍

Just nitpicked the use of the inline ValidateFunc.

Tests are passing:

$ make testacc TEST=./aws TESTARGS='-run=TestAccAWSSSMActivation_expirationDate'
==> Checking that code complies with gofmt requirements...
TF_ACC=1 go test ./aws -v -run=TestAccAWSSSMActivation_expirationDate -timeout 120m
=== RUN   TestAccAWSSSMActivation_expirationDate
--- PASS: TestAccAWSSSMActivation_expirationDate (28.45s)
PASS
ok  	github.com/terraform-providers/terraform-provider-aws/aws	28.490s

@@ -37,6 +37,14 @@ func resourceAwsSsmActivation() *schema.Resource {
Type: schema.TypeString,
Optional: true,
ForceNew: true,
// When released, replace with upstream validation function:
// https://github.com/hashicorp/terraform/pull/17484
ValidateFunc: func(v interface{}, k string) (ws []string, errors []error) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What do you think of extracting it to its own function in order to be able to test it at some point?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I submitted an upstream PR hashicorp/terraform#17484 with tests to get it included where it ideally belongs. I'll move this to its own function in this repository with the same testing for now.

func testAccAWSSSMActivationConfig_expirationDate(rName, expirationDate string) string {
return fmt.Sprintf(`
resource "aws_iam_role" "test_role" {
name = "test_role-%[1]s"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❤️ the use of %[1]s, 👍

@ghost ghost added size/L Managed by automation to categorize the size of a PR. and removed size/M Managed by automation to categorize the size of a PR. labels Mar 2, 2018
@bflad bflad merged commit 0cd8e5a into master Mar 2, 2018
@bflad bflad deleted the b-aws_ssm_activation-expiration-date-crash branch March 2, 2018 14:35
bflad added a commit that referenced this pull request Mar 2, 2018
@bflad
Copy link
Contributor Author

bflad commented Mar 9, 2018

This has been released in version 1.11.0 of the AWS provider. Please see the Terraform documentation on provider versioning or reach out if you need any assistance upgrading.

@ghost
Copy link

ghost commented Apr 7, 2020

I'm going to lock this issue because it has been closed for 30 days ⏳. This helps our maintainers find and focus on the active issues.

If you feel this issue should be reopened, we encourage creating a new issue linking back to this one for added context. Thanks!

@ghost ghost locked and limited conversation to collaborators Apr 7, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
bug Addresses a defect in current functionality. crash Results from or addresses a Terraform crash or kernel panic. service/ssm Issues and PRs that pertain to the ssm service. size/L Managed by automation to categorize the size of a PR.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

terraform apply crashes when creating aws_ssm_activation with an expiration_date
2 participants