Skip to content

Commit 36eca54

Browse files
authored
Merge pull request #32171 from hashicorp/b-storagegateway_smb_file_share_update
aws_storagegateway_smb_file_share: Set `kms_key_arn` when `kms_encrypted` is `true`
2 parents 4680521 + 64dd57f commit 36eca54

File tree

3 files changed

+57
-0
lines changed

3 files changed

+57
-0
lines changed

.changelog/32171.txt

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:bug
2+
resource/aws_storagegateway_smb_file_share: Fix update error when `kms_encrypted` is `true` but `kms_key_arn` is not sent in the request
3+
```

internal/service/storagegateway/smb_file_share.go

+2
Original file line numberDiff line numberDiff line change
@@ -402,6 +402,8 @@ func resourceSMBFileShareUpdate(ctx context.Context, d *schema.ResourceData, met
402402
// This value can only be set when KMSEncrypted is true.
403403
if d.HasChange("kms_key_arn") && d.Get("kms_encrypted").(bool) {
404404
input.KMSKey = aws.String(d.Get("kms_key_arn").(string))
405+
} else if d.Get("kms_encrypted").(bool) && d.Get("kms_key_arn").(string) != "" {
406+
input.KMSKey = aws.String(d.Get("kms_key_arn").(string))
405407
}
406408

407409
if d.HasChange("notification_policy") {

internal/service/storagegateway/smb_file_share_test.go

+52
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,38 @@ func TestAccStorageGatewaySMBFileShare_defaultStorageClass(t *testing.T) {
237237
})
238238
}
239239

240+
func TestAccStorageGatewaySMBFileShare_encryptedUpdate(t *testing.T) {
241+
ctx := acctest.Context(t)
242+
var smbFileShare storagegateway.SMBFileShareInfo
243+
rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix)
244+
resourceName := "aws_storagegateway_smb_file_share.test"
245+
246+
resource.ParallelTest(t, resource.TestCase{
247+
PreCheck: func() { acctest.PreCheck(ctx, t) },
248+
ErrorCheck: acctest.ErrorCheck(t, storagegateway.EndpointsID),
249+
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories,
250+
CheckDestroy: testAccCheckSMBFileShareDestroy(ctx),
251+
Steps: []resource.TestStep{
252+
{
253+
Config: testAccSMBFileShareConfig_encryptedUpdate(rName, false),
254+
Check: resource.ComposeTestCheckFunc(
255+
testAccCheckSMBFileShareExists(ctx, resourceName, &smbFileShare),
256+
resource.TestCheckResourceAttr(resourceName, "read_only", "false"),
257+
resource.TestCheckResourceAttr(resourceName, "kms_encrypted", "true"),
258+
),
259+
},
260+
{
261+
Config: testAccSMBFileShareConfig_encryptedUpdate(rName, true),
262+
Check: resource.ComposeTestCheckFunc(
263+
testAccCheckSMBFileShareExists(ctx, resourceName, &smbFileShare),
264+
resource.TestCheckResourceAttr(resourceName, "read_only", "true"),
265+
resource.TestCheckResourceAttr(resourceName, "kms_encrypted", "true"),
266+
),
267+
},
268+
},
269+
})
270+
}
271+
240272
func TestAccStorageGatewaySMBFileShare_fileShareName(t *testing.T) {
241273
ctx := acctest.Context(t)
242274
var smbFileShare storagegateway.SMBFileShareInfo
@@ -1117,6 +1149,26 @@ resource "aws_storagegateway_smb_file_share" "test" {
11171149
`, defaultStorageClass))
11181150
}
11191151

1152+
func testAccSMBFileShareConfig_encryptedUpdate(rName string, readOnly bool) string {
1153+
return acctest.ConfigCompose(testAcc_SMBFileShare_GuestAccessBase(rName), fmt.Sprintf(`
1154+
resource "aws_kms_key" "test" {
1155+
deletion_window_in_days = 7
1156+
description = "Terraform Acceptance Testing"
1157+
}
1158+
1159+
resource "aws_storagegateway_smb_file_share" "test" {
1160+
# Use GuestAccess to simplify testing
1161+
authentication = "GuestAccess"
1162+
gateway_arn = aws_storagegateway_gateway.test.arn
1163+
kms_encrypted = true
1164+
kms_key_arn = aws_kms_key.test.arn
1165+
location_arn = aws_s3_bucket.test.arn
1166+
role_arn = aws_iam_role.test.arn
1167+
read_only = %[1]t
1168+
}
1169+
`, readOnly))
1170+
}
1171+
11201172
func testAccSMBFileShareConfig_name(rName, fileShareName string) string {
11211173
return acctest.ConfigCompose(testAcc_SMBFileShare_GuestAccessBase(rName), fmt.Sprintf(`
11221174
resource "aws_storagegateway_smb_file_share" "test" {

0 commit comments

Comments
 (0)