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

merge #6

Merged
merged 86 commits into from
Oct 30, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
86 commits
Select commit Hold shift + click to select a range
cb8453f
Add support for glue version on aws_glue_job
NSjogren Sep 25, 2019
f875f4c
Update resource aws_glue_job documentation
NSjogren Sep 25, 2019
1385ecf
Fixes #9939: Add support for KMS Key Id for at rest encryption
GerrySly Oct 3, 2019
e78f27b
Handle missing dx_gateway_association_id attribute.
ewbankkit May 24, 2019
dee0d54
Add r/aws_dx_gateway_association state migration acceptance test.
ewbankkit May 27, 2019
72492be
Terraform Plugin SDK migration.
ewbankkit Oct 4, 2019
bac6b23
Import test refactor for elasticache resources
ryndaniels Sep 19, 2019
69ccb66
remove aws default region handling from elasticache tests
ryndaniels Oct 16, 2019
3773ed5
Put the region back for tests that need it
ryndaniels Oct 18, 2019
f34fbf5
Import test refactor for DX resources
ryndaniels Oct 21, 2019
431b6cd
Import test refactor for directory service directory
ryndaniels Oct 21, 2019
f9c1b64
Import test refactor for db resources
ryndaniels Oct 21, 2019
a6183b7
Import test refactor for dax resources
ryndaniels Oct 22, 2019
7c41317
Import test refactor for customer gateway
ryndaniels Oct 22, 2019
ebb35bb
Import test refactor for cognito resources
ryndaniels Oct 22, 2019
b7eb7e1
Import test refactor for codepipeline
ryndaniels Oct 22, 2019
afc71de
Import test refactor for codecommit
ryndaniels Oct 23, 2019
82ce5a6
Import test refactor for codebuild project
ryndaniels Oct 23, 2019
2053742
Import test refactor for cloudwatch resources
ryndaniels Oct 23, 2019
7f5c687
Import test refactor for cloudy resources
ryndaniels Oct 23, 2019
89c6dc7
Import test refactor for athena named queries
ryndaniels Oct 23, 2019
18415ee
import test lintignores for ACM cert tests
ryndaniels Oct 23, 2019
25b3e8f
import test lintignores for API gateway resources
ryndaniels Oct 24, 2019
19cac87
add tag support for storage gateway smb file share resource
DrFaust92 Oct 24, 2019
f566b7b
add docs
DrFaust92 Oct 24, 2019
1585c67
Update resource_aws_storagegateway_smb_file_share.go
DrFaust92 Oct 24, 2019
8023ea7
r/aws_backup_plan: Intermediate commit after acceptance test tidy and…
ewbankkit Oct 25, 2019
3f49482
r/aws_backup_plan: Add 'recovery_point_tags' acceptance test.
ewbankkit Oct 25, 2019
1e9ca65
r/aws_backup_plan: Don't update rules that don't have a name.
ewbankkit Oct 25, 2019
ac55cc1
r/aws_backup_plan: Use 'keyvaluetags'.
ewbankkit Oct 25, 2019
e74a8fd
Import test refactor for launch resources
ryndaniels Oct 28, 2019
c21afb3
Import test refactor for EC2 instances
ryndaniels Oct 25, 2019
b3d53ff
import test lintignores for lightsail key pairs
ryndaniels Oct 28, 2019
9f1aa26
Import test refactor for SNS topic
ryndaniels Oct 28, 2019
454864b
Update module golangci/golangci-lint to v1.21.0
renovate-bot Oct 28, 2019
9e70755
provider: Add missing go.sum entries from renovate update of github.c…
bflad Oct 28, 2019
cf87d39
Merge branch 'renovate/jackfan.us.kg-golangci-golangci-lint-1.x'
bflad Oct 28, 2019
9214aeb
S3: support MethodNotAllowed for Object Lock Configuration
Oct 28, 2019
29c9b5e
Use StateUpgraders instead of MigrateState for Terraform 0.12 compata…
Oct 28, 2019
713d54a
Merge branch 'issue-8773' of https://github.com/ewbankkit/terraform-p…
bflad Oct 28, 2019
8696000
Update module aws/aws-sdk-go to v1.25.21
renovate-bot Oct 28, 2019
6d98ab2
docs: fix cidr_block reference
qlikcoe Oct 29, 2019
3dc7d3c
resource/aws_dx_gateway_association: Handle nil dx_gateway_associatio…
bflad Oct 29, 2019
4594f9f
Merge branch 'ewbankkit-issue-8773'
bflad Oct 29, 2019
175a544
Update CHANGELOG for #8776
bflad Oct 29, 2019
0b14ec8
Merge pull request #10641 from ewbankkit/issue-8431
bflad Oct 29, 2019
93d023f
Update CHANGELOG for #10641
bflad Oct 29, 2019
afc38e4
Import test refactor for opsworks resources
ryndaniels Oct 29, 2019
56ffd3c
use resourceName everywhere
ryndaniels Oct 29, 2019
208f4d9
Merge pull request #10571 from terraform-providers/rfd-at002-dx
ryndaniels Oct 29, 2019
41518bc
Merge pull request #10574 from terraform-providers/rfd-at002-directory
ryndaniels Oct 29, 2019
2d59ddd
Merge pull request #10582 from terraform-providers/rfd-at002-db
ryndaniels Oct 29, 2019
3420e77
Merge pull request #10596 from terraform-providers/rfd-at002-dax
ryndaniels Oct 29, 2019
6bf99d7
Merge pull request #10597 from terraform-providers/rfd-at002-custgw
ryndaniels Oct 29, 2019
6bd6476
Merge pull request #10599 from terraform-providers/rfd-at002-cognito
ryndaniels Oct 29, 2019
c9edbd8
Merge pull request #10601 from terraform-providers/rfd-at002-codepipe…
ryndaniels Oct 29, 2019
7b96d4f
Merge pull request #10604 from terraform-providers/rfd-at002-codecommit
ryndaniels Oct 29, 2019
aede278
Merge pull request #10605 from terraform-providers/rfd-at002-codebuild
ryndaniels Oct 29, 2019
3fd3726
Merge pull request #10606 from terraform-providers/rfd-at002-cloudwatch
ryndaniels Oct 29, 2019
65529d2
Merge pull request #10607 from terraform-providers/rfd-at002-clouds
ryndaniels Oct 29, 2019
f25ba8e
Merge pull request #10609 from terraform-providers/rfd-at002-athena
ryndaniels Oct 29, 2019
88855a5
Merge pull request #10610 from terraform-providers/rfd-at002-acm
ryndaniels Oct 29, 2019
1c3d76f
Merge pull request #10618 from terraform-providers/rfd-at002-apigw
ryndaniels Oct 29, 2019
7e563ed
Merge pull request #10645 from terraform-providers/rfd-at002-launch
ryndaniels Oct 29, 2019
4102754
Merge pull request #10650 from terraform-providers/rfd-at002-sns
ryndaniels Oct 29, 2019
f52d0cb
Merge pull request #10160 from terraform-providers/rfd-at002-elasticache
ryndaniels Oct 29, 2019
a91e20a
rename a test to avoid a lintignore
ryndaniels Oct 29, 2019
bfad019
put the comment back
ryndaniels Oct 29, 2019
66c1b29
Merge pull request #10648 from terraform-providers/rfd-at002-lightsail
ryndaniels Oct 29, 2019
20b34f8
Merge pull request #10476 from terraform-providers/renovate/github.co…
bflad Oct 29, 2019
843ffd8
provider: Add missing github.com/aws/[email protected] checksum fro…
bflad Oct 29, 2019
d7b0cee
Update module aws/aws-sdk-go to v1.25.22
renovate-bot Oct 29, 2019
988a6af
docs: Clean up data source list syntax (#10223)
Oct 29, 2019
6034496
Merge pull request #10657 from algorithmiaio/s3_obj_lock_not_supported
bflad Oct 29, 2019
c64f19e
Update CHANGELOG for #10657
bflad Oct 29, 2019
357eded
Merge pull request #10667 from terraform-providers/renovate/github.co…
bflad Oct 30, 2019
1bb2d5b
Merge branch 'f-aws_glue_job-glue_version' of https://github.com/NSjo…
bflad Oct 30, 2019
8631489
resource/aws_glue_job: Address PR #10237 feedback
bflad Oct 30, 2019
f990653
Merge branch 'NSjogren-f-aws_glue_job-glue_version'
bflad Oct 30, 2019
a90ca3f
Update CHANGELOG for #10237
bflad Oct 30, 2019
bc20013
Merge pull request #10662 from terraform-providers/rfd-at002-opsworks
ryndaniels Oct 30, 2019
93df472
Merge pull request #10649 from terraform-providers/rfd-at002-instance
ryndaniels Oct 30, 2019
ea9edf5
Merge pull request #10620 from DrFaust92/storage-gateway-smb-tags
bflad Oct 30, 2019
f1a57ec
Update CHANGELOG for #10620
bflad Oct 30, 2019
8776b5a
Merge pull request #10380 from GerrySly/r-elasticache-kmskeyid
bflad Oct 30, 2019
7699f5e
Update CHANGELOG for #10380
bflad Oct 30, 2019
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,19 @@
## 2.34.0 (Unreleased)

ENHANCEMENTS:

* resource/aws_elasticache_replication_group: Add `kms_key_id` argument (support KMS encryption) [GH-10380]
* resource/aws_glue_job: Add `glue_version` argument [GH-10237]
* resource/aws_storagegateway_smb_file_share: Add `tags` argument [GH-10620]

BUG FIXES:

* resource/aws_backup_plan: Correctly handle changes to `recovery_point_tags` arguments [GH-10641]
* resource/aws_backup_plan: Prevent `diffs didn't match` errors with `rule` configuration blocks [GH-10641]
* resource/aws_cloudhsm_v2_cluster: Ensure multiple tag configurations are applied correctly [GH-10309]
* resource/aws_cloudhsm_v2_cluster: Perform drift detection with tags [GH-10309]
* resource/aws_dx_gateway_association: Fix backwards compatibility issue with missing `dx_gateway_association_id` attribute [GH-8776]
* resource/aws_s3_bucket: Bypass `MethodNotAllowed` errors for Object Lock Configuration on read (support AWS C2S) [GH-10657]

## 2.33.0 (October 17, 2019)

Expand Down
5 changes: 3 additions & 2 deletions aws/resource_aws_acm_certificate_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -525,6 +525,7 @@ func TestAccAWSAcmCertificate_tags(t *testing.T) {
})
}

//lintignore:AT002
func TestAccAWSAcmCertificate_imported_DomainName(t *testing.T) {
resourceName := "aws_acm_certificate.test"

Expand Down Expand Up @@ -558,8 +559,8 @@ func TestAccAWSAcmCertificate_imported_DomainName(t *testing.T) {
})
}

// Reference: https://github.com/terraform-providers/terraform-provider-aws/issues/7103
func TestAccAWSAcmCertificate_imported_IpAddress(t *testing.T) {
//lintignore:AT002
func TestAccAWSAcmCertificate_imported_IpAddress(t *testing.T) { // Reference: https://github.com/terraform-providers/terraform-provider-aws/issues/7103
resourceName := "aws_acm_certificate.test"

resource.ParallelTest(t, resource.TestCase{
Expand Down
39 changes: 12 additions & 27 deletions aws/resource_aws_api_gateway_account_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,34 +11,13 @@ import (
"github.com/hashicorp/terraform-plugin-sdk/terraform"
)

func TestAccAWSAPIGatewayAccount_importBasic(t *testing.T) {
resourceName := "aws_api_gateway_account.test"

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckAWSAPIGatewayAccountDestroy,
Steps: []resource.TestStep{
{
Config: testAccAWSAPIGatewayAccountConfig_empty,
},

{
ResourceName: resourceName,
ImportState: true,
ImportStateVerify: true,
},
},
})
}

func TestAccAWSAPIGatewayAccount_basic(t *testing.T) {
var conf apigateway.Account

rInt := acctest.RandInt()
firstName := fmt.Sprintf("tf_acc_api_gateway_cloudwatch_%d", rInt)
secondName := fmt.Sprintf("tf_acc_api_gateway_cloudwatch_modified_%d", rInt)

resourceName := "aws_api_gateway_account.test"
expectedRoleArn_first := regexp.MustCompile(":role/" + firstName + "$")
expectedRoleArn_second := regexp.MustCompile(":role/" + secondName + "$")

Expand All @@ -50,23 +29,29 @@ func TestAccAWSAPIGatewayAccount_basic(t *testing.T) {
{
Config: testAccAWSAPIGatewayAccountConfig_updated(firstName),
Check: resource.ComposeTestCheckFunc(
testAccCheckAWSAPIGatewayAccountExists("aws_api_gateway_account.test", &conf),
testAccCheckAWSAPIGatewayAccountExists(resourceName, &conf),
testAccCheckAWSAPIGatewayAccountCloudwatchRoleArn(&conf, expectedRoleArn_first),
resource.TestMatchResourceAttr("aws_api_gateway_account.test", "cloudwatch_role_arn", expectedRoleArn_first),
resource.TestMatchResourceAttr(resourceName, "cloudwatch_role_arn", expectedRoleArn_first),
),
},
{
ResourceName: resourceName,
ImportState: true,
ImportStateVerify: true,
ImportStateVerifyIgnore: []string{"cloudwatch_role_arn"},
},
{
Config: testAccAWSAPIGatewayAccountConfig_updated2(secondName),
Check: resource.ComposeTestCheckFunc(
testAccCheckAWSAPIGatewayAccountExists("aws_api_gateway_account.test", &conf),
testAccCheckAWSAPIGatewayAccountExists(resourceName, &conf),
testAccCheckAWSAPIGatewayAccountCloudwatchRoleArn(&conf, expectedRoleArn_second),
resource.TestMatchResourceAttr("aws_api_gateway_account.test", "cloudwatch_role_arn", expectedRoleArn_second),
resource.TestMatchResourceAttr(resourceName, "cloudwatch_role_arn", expectedRoleArn_second),
),
},
{
Config: testAccAWSAPIGatewayAccountConfig_empty,
Check: resource.ComposeTestCheckFunc(
testAccCheckAWSAPIGatewayAccountExists("aws_api_gateway_account.test", &conf),
testAccCheckAWSAPIGatewayAccountExists(resourceName, &conf),
testAccCheckAWSAPIGatewayAccountCloudwatchRoleArn(&conf, expectedRoleArn_second),
),
},
Expand Down
39 changes: 12 additions & 27 deletions aws/resource_aws_api_gateway_client_certificate_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import (

func TestAccAWSAPIGatewayClientCertificate_basic(t *testing.T) {
var conf apigateway.ClientCertificate
resourceName := "aws_api_gateway_client_certificate.test"

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Expand All @@ -22,38 +23,22 @@ func TestAccAWSAPIGatewayClientCertificate_basic(t *testing.T) {
{
Config: testAccAWSAPIGatewayClientCertificateConfig_basic,
Check: resource.ComposeTestCheckFunc(
testAccCheckAWSAPIGatewayClientCertificateExists("aws_api_gateway_client_certificate.cow", &conf),
resource.TestCheckResourceAttr("aws_api_gateway_client_certificate.cow", "description", "Hello from TF acceptance test"),
testAccCheckAWSAPIGatewayClientCertificateExists(resourceName, &conf),
resource.TestCheckResourceAttr(resourceName, "description", "Hello from TF acceptance test"),
),
},
{
Config: testAccAWSAPIGatewayClientCertificateConfig_basic_updated,
Check: resource.ComposeTestCheckFunc(
testAccCheckAWSAPIGatewayClientCertificateExists("aws_api_gateway_client_certificate.cow", &conf),
resource.TestCheckResourceAttr("aws_api_gateway_client_certificate.cow", "description", "Hello from TF acceptance test - updated"),
),
},
},
})
}

func TestAccAWSAPIGatewayClientCertificate_importBasic(t *testing.T) {
resourceName := "aws_api_gateway_client_certificate.cow"

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckAWSAPIGatewayClientCertificateDestroy,
Steps: []resource.TestStep{
{
Config: testAccAWSAPIGatewayClientCertificateConfig_basic,
},

{
ResourceName: resourceName,
ImportState: true,
ImportStateVerify: true,
},
{
Config: testAccAWSAPIGatewayClientCertificateConfig_basic_updated,
Check: resource.ComposeTestCheckFunc(
testAccCheckAWSAPIGatewayClientCertificateExists(resourceName, &conf),
resource.TestCheckResourceAttr(resourceName, "description", "Hello from TF acceptance test - updated"),
),
},
},
})
}
Expand Down Expand Up @@ -116,13 +101,13 @@ func testAccCheckAWSAPIGatewayClientCertificateDestroy(s *terraform.State) error
}

const testAccAWSAPIGatewayClientCertificateConfig_basic = `
resource "aws_api_gateway_client_certificate" "cow" {
resource "aws_api_gateway_client_certificate" "test" {
description = "Hello from TF acceptance test"
}
`

const testAccAWSAPIGatewayClientCertificateConfig_basic_updated = `
resource "aws_api_gateway_client_certificate" "cow" {
resource "aws_api_gateway_client_certificate" "test" {
description = "Hello from TF acceptance test - updated"
}
`
48 changes: 15 additions & 33 deletions aws/resource_aws_api_gateway_documentation_part_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,11 @@ func TestAccAWSAPIGatewayDocumentationPart_basic(t *testing.T) {
resource.TestCheckResourceAttrSet(resourceName, "rest_api_id"),
),
},
{
ResourceName: resourceName,
ImportState: true,
ImportStateVerify: true,
},
{
Config: testAccAWSAPIGatewayDocumentationPartConfig(apiName, strconv.Quote(uProperties)),
Check: resource.ComposeTestCheckFunc(
Expand Down Expand Up @@ -78,6 +83,11 @@ func TestAccAWSAPIGatewayDocumentationPart_method(t *testing.T) {
resource.TestCheckResourceAttrSet(resourceName, "rest_api_id"),
),
},
{
ResourceName: resourceName,
ImportState: true,
ImportStateVerify: true,
},
{
Config: testAccAWSAPIGatewayDocumentationPartMethodConfig(apiName, strconv.Quote(uProperties)),
Check: resource.ComposeTestCheckFunc(
Expand Down Expand Up @@ -123,6 +133,11 @@ func TestAccAWSAPIGatewayDocumentationPart_responseHeader(t *testing.T) {
resource.TestCheckResourceAttrSet(resourceName, "rest_api_id"),
),
},
{
ResourceName: resourceName,
ImportState: true,
ImportStateVerify: true,
},
{
Config: testAccAWSAPIGatewayDocumentationPartResponseHeaderConfig(apiName, strconv.Quote(uProperties)),
Check: resource.ComposeTestCheckFunc(
Expand All @@ -141,39 +156,6 @@ func TestAccAWSAPIGatewayDocumentationPart_responseHeader(t *testing.T) {
})
}

func TestAccAWSAPIGatewayDocumentationPart_importBasic(t *testing.T) {
var conf apigateway.DocumentationPart

rString := acctest.RandString(8)
apiName := fmt.Sprintf("tf_acc_api_doc_part_import_%s", rString)
properties := `{"description":"Terraform Acceptance Test"}`

resourceName := "aws_api_gateway_documentation_part.test"

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckAWSAPIGatewayDocumentationPartDestroy,
Steps: []resource.TestStep{
{
Config: testAccAWSAPIGatewayDocumentationPartConfig(apiName, strconv.Quote(properties)),
Check: resource.ComposeTestCheckFunc(
testAccCheckAWSAPIGatewayDocumentationPartExists(resourceName, &conf),
resource.TestCheckResourceAttr(resourceName, "location.#", "1"),
resource.TestCheckResourceAttr(resourceName, "location.0.type", "API"),
resource.TestCheckResourceAttr(resourceName, "properties", properties),
resource.TestCheckResourceAttrSet(resourceName, "rest_api_id"),
),
},
{
ResourceName: resourceName,
ImportState: true,
ImportStateVerify: true,
},
},
})
}

func testAccCheckAWSAPIGatewayDocumentationPartExists(n string, res *apigateway.DocumentationPart) resource.TestCheckFunc {
return func(s *terraform.State) error {
rs, ok := s.RootModule().Resources[n]
Expand Down
60 changes: 10 additions & 50 deletions aws/resource_aws_api_gateway_documentation_version_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,11 @@ func TestAccAWSAPIGatewayDocumentationVersion_basic(t *testing.T) {
resource.TestCheckResourceAttrSet(resourceName, "rest_api_id"),
),
},
{
ResourceName: resourceName,
ImportState: true,
ImportStateVerify: true,
},
},
})
}
Expand Down Expand Up @@ -63,6 +68,11 @@ func TestAccAWSAPIGatewayDocumentationVersion_allFields(t *testing.T) {
resource.TestCheckResourceAttrSet(resourceName, "rest_api_id"),
),
},
{
ResourceName: resourceName,
ImportState: true,
ImportStateVerify: true,
},
{
Config: testAccAWSAPIGatewayDocumentationVersionAllFieldsConfig(version, apiName, stageName, uDescription),
Check: resource.ComposeTestCheckFunc(
Expand All @@ -76,56 +86,6 @@ func TestAccAWSAPIGatewayDocumentationVersion_allFields(t *testing.T) {
})
}

func TestAccAWSAPIGatewayDocumentationVersion_importBasic(t *testing.T) {
rString := acctest.RandString(8)
version := fmt.Sprintf("tf_acc_version_import_%s", rString)
apiName := fmt.Sprintf("tf_acc_api_doc_version_import_%s", rString)

resourceName := "aws_api_gateway_documentation_version.test"

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckAWSAPIGatewayDocumentationVersionDestroy,
Steps: []resource.TestStep{
{
Config: testAccAWSAPIGatewayDocumentationVersionBasicConfig(version, apiName),
},
{
ResourceName: resourceName,
ImportState: true,
ImportStateVerify: true,
},
},
})
}

func TestAccAWSAPIGatewayDocumentationVersion_importAllFields(t *testing.T) {
rString := acctest.RandString(8)
version := fmt.Sprintf("tf_acc_version_import_af_%s", rString)
apiName := fmt.Sprintf("tf_acc_api_doc_version_import_af_%s", rString)
stageName := fmt.Sprintf("tf_acc_stage_%s", rString)
description := fmt.Sprintf("Tf Acc Test description %s", rString)

resourceName := "aws_api_gateway_documentation_version.test"

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckAWSAPIGatewayDocumentationVersionDestroy,
Steps: []resource.TestStep{
{
Config: testAccAWSAPIGatewayDocumentationVersionAllFieldsConfig(version, apiName, stageName, description),
},
{
ResourceName: resourceName,
ImportState: true,
ImportStateVerify: true,
},
},
})
}

func testAccCheckAWSAPIGatewayDocumentationVersionExists(n string, res *apigateway.DocumentationVersion) resource.TestCheckFunc {
return func(s *terraform.State) error {
rs, ok := s.RootModule().Resources[n]
Expand Down
Loading