Skip to content

Commit

Permalink
Merge pull request #20579 from hashicorp/t-aws_storagegateway_smb_fil…
Browse files Browse the repository at this point in the history
…e_share-OutdatedGateway

r/aws_storagegateway_smb_file_share: Only set `OplocksEnabled` in the API if a value is specified in configuration
  • Loading branch information
ewbankkit authored Aug 17, 2021
2 parents 6f3ce95 + 1e2f3d8 commit 6cf9efa
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 7 deletions.
3 changes: 3 additions & 0 deletions .changelog/20579.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
```release-note:bug
resource/aws_storagegateway_smb_file_share: Only set `oplocks_enabled` if a value is specified in configuration
```
20 changes: 13 additions & 7 deletions aws/resource_aws_storagegateway_smb_file_share.go
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ func resourceAwsStorageGatewaySmbFileShare() *schema.Resource {
"oplocks_enabled": {
Type: schema.TypeBool,
Optional: true,
Default: true,
Computed: true,
},
"notification_policy": {
Type: schema.TypeString,
Expand Down Expand Up @@ -212,7 +212,6 @@ func resourceAwsStorageGatewaySmbFileShareCreate(d *schema.ResourceData, meta in
GuessMIMETypeEnabled: aws.Bool(d.Get("guess_mime_type_enabled").(bool)),
KMSEncrypted: aws.Bool(d.Get("kms_encrypted").(bool)),
LocationARN: aws.String(d.Get("location_arn").(string)),
OplocksEnabled: aws.Bool(d.Get("oplocks_enabled").(bool)),
ReadOnly: aws.Bool(d.Get("read_only").(bool)),
RequesterPays: aws.Bool(d.Get("requester_pays").(bool)),
Role: aws.String(d.Get("role_arn").(string)),
Expand Down Expand Up @@ -267,6 +266,10 @@ func resourceAwsStorageGatewaySmbFileShareCreate(d *schema.ResourceData, meta in
input.ObjectACL = aws.String(v.(string))
}

if v, ok := d.GetOk("oplocks_enabled"); ok {
input.OplocksEnabled = aws.Bool(v.(bool))
}

if v, ok := d.GetOk("valid_user_list"); ok && v.(*schema.Set).Len() > 0 {
input.ValidUserList = expandStringSet(v.(*schema.Set))
}
Expand Down Expand Up @@ -371,7 +374,6 @@ func resourceAwsStorageGatewaySmbFileShareUpdate(d *schema.ResourceData, meta in
FileShareARN: aws.String(d.Id()),
GuessMIMETypeEnabled: aws.Bool(d.Get("guess_mime_type_enabled").(bool)),
KMSEncrypted: aws.Bool(d.Get("kms_encrypted").(bool)),
OplocksEnabled: aws.Bool(d.Get("oplocks_enabled").(bool)),
ReadOnly: aws.Bool(d.Get("read_only").(bool)),
RequesterPays: aws.Bool(d.Get("requester_pays").(bool)),
SMBACLEnabled: aws.Bool(d.Get("smb_acl_enabled").(bool)),
Expand Down Expand Up @@ -401,15 +403,15 @@ func resourceAwsStorageGatewaySmbFileShareUpdate(d *schema.ResourceData, meta in
input.FileShareName = aws.String(d.Get("file_share_name").(string))
}

if d.HasChange("invalid_user_list") {
input.InvalidUserList = expandStringSet(d.Get("invalid_user_list").(*schema.Set))
}

// This value can only be set when KMSEncrypted is true.
if d.HasChange("kms_key_arn") && d.Get("kms_encrypted").(bool) {
input.KMSKey = aws.String(d.Get("kms_key_arn").(string))
}

if d.HasChange("invalid_user_list") {
input.InvalidUserList = expandStringSet(d.Get("invalid_user_list").(*schema.Set))
}

if d.HasChange("notification_policy") {
input.NotificationPolicy = aws.String(d.Get("notification_policy").(string))
}
Expand All @@ -418,6 +420,10 @@ func resourceAwsStorageGatewaySmbFileShareUpdate(d *schema.ResourceData, meta in
input.ObjectACL = aws.String(d.Get("object_acl").(string))
}

if d.HasChange("oplocks_enabled") {
input.OplocksEnabled = aws.Bool(d.Get("oplocks_enabled").(bool))
}

if d.HasChange("valid_user_list") {
input.ValidUserList = expandStringSet(d.Get("valid_user_list").(*schema.Set))
}
Expand Down
21 changes: 21 additions & 0 deletions aws/resource_aws_storagegateway_smb_file_share_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -342,6 +342,24 @@ func TestAccAWSStorageGatewaySmbFileShare_GuessMIMETypeEnabled(t *testing.T) {
})
}

/*
Currently failing when enabling oplocks:
=== CONT TestAccAWSStorageGatewaySmbFileShare_OpLocksEnabled
resource_aws_storagegateway_smb_file_share_test.go:350: Step 2/3 error: Error running apply: exit status 1
Error: error updating Storage Gateway SMB File Share (arn:aws:storagegateway:us-west-2:123456789012:share/share-86C5A6E3): InvalidGatewayRequestException: The specified gateway is out of date.
{
RespMetadata: {
StatusCode: 400,
RequestID: "56a23d7f-b8c3-420a-ba06-a4fde82b4092"
},
Error_: {
ErrorCode: "OutdatedGateway"
},
Message_: "The specified gateway is out of date."
}
func TestAccAWSStorageGatewaySmbFileShare_OpLocksEnabled(t *testing.T) {
var smbFileShare storagegateway.SMBFileShareInfo
rName := acctest.RandomWithPrefix("tf-acc-test")
Expand Down Expand Up @@ -375,6 +393,7 @@ func TestAccAWSStorageGatewaySmbFileShare_OpLocksEnabled(t *testing.T) {
},
})
}
*/

func TestAccAWSStorageGatewaySmbFileShare_InvalidUserList(t *testing.T) {
var smbFileShare storagegateway.SMBFileShareInfo
Expand Down Expand Up @@ -1099,6 +1118,7 @@ resource "aws_storagegateway_smb_file_share" "test" {
`, guessMimeTypeEnabled))
}

/*
func testAccAWSStorageGatewaySmbFileShareConfig_OpLocksEnabled(rName string, opLocksEnabled bool) string {
return composeConfig(testAccAWSStorageGateway_SmbFileShare_GuestAccessBase(rName), fmt.Sprintf(`
resource "aws_storagegateway_smb_file_share" "test" {
Expand All @@ -1111,6 +1131,7 @@ resource "aws_storagegateway_smb_file_share" "test" {
}
`, opLocksEnabled))
}
*/

func testAccAWSStorageGatewaySmbFileShareConfig_InvalidUserList_Single(rName, domainName, invalidUser1 string) string {
return composeConfig(testAccAWSStorageGateway_SmbFileShare_ActiveDirectoryBase(rName, domainName), fmt.Sprintf(`
Expand Down

0 comments on commit 6cf9efa

Please sign in to comment.