Skip to content

Commit 402132b

Browse files
authored
resource/aws_workspaces_workspace: Fix Terminated Workspace Panic (#16692)
Output from acceptance testing: ``` --- PASS: TestFlattenWorkspaceProperties (0.00s) --- PASS: TestExpandWorkspaceProperties (0.00s) --- PASS: TestAccAwsWorkspacesWorkspace_validateRootVolumeSize (3.40s) --- PASS: TestAccAwsWorkspacesWorkspace_validateUserVolumeSize (3.96s) --- PASS: TestAccAwsWorkspacesWorkspace_workspaceProperties_runningModeAlwaysOn (1775.72s) --- PASS: TestAccAwsWorkspacesWorkspace_recreate (1836.44s) --- PASS: TestAccAwsWorkspacesWorkspace_timeout (1848.37s) --- PASS: TestAccAwsWorkspacesWorkspace_basic (1852.09s) --- PASS: TestAccAwsWorkspacesWorkspace_tags (1876.63s) --- PASS: TestAccAwsWorkspacesWorkspace_workspaceProperties (1899.23s) ```
1 parent 5a8571c commit 402132b

File tree

3 files changed

+74
-37
lines changed

3 files changed

+74
-37
lines changed

aws/internal/service/workspaces/waiter/status.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ func WorkspaceState(conn *workspaces.WorkSpaces, workspaceID string) resource.St
3434
}
3535

3636
if len(output.Workspaces) == 0 {
37-
return nil, "", nil
37+
return output, workspaces.WorkspaceStateTerminated, nil
3838
}
3939

4040
workspace := output.Workspaces[0]

aws/internal/service/workspaces/waiter/waiter.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ func WorkspaceTerminated(conn *workspaces.WorkSpaces, workspaceID string, timeou
109109
workspaces.WorkspaceStateTerminating,
110110
workspaces.WorkspaceStateError,
111111
},
112-
Target: []string{},
112+
Target: []string{workspaces.WorkspaceStateTerminated},
113113
Refresh: WorkspaceState(conn, workspaceID),
114114
Timeout: timeout,
115115
}

aws/resource_aws_workspaces_workspace_test.go

+72-35
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,8 @@ func TestAccAwsWorkspacesWorkspace_basic(t *testing.T) {
8989
resource.TestCheckResourceAttr(resourceName, "workspace_properties.0.running_mode", workspaces.RunningModeAlwaysOn),
9090
resource.TestCheckResourceAttr(resourceName, "workspace_properties.0.running_mode_auto_stop_timeout_in_minutes", "0"),
9191
resource.TestCheckResourceAttr(resourceName, "workspace_properties.0.user_volume_size_gib", "10"),
92-
resource.TestCheckResourceAttr(resourceName, "tags.%", "0"),
92+
resource.TestCheckResourceAttr(resourceName, "tags.%", "1"),
93+
resource.TestCheckResourceAttr(resourceName, "tags.Name", fmt.Sprintf("tf-testacc-workspaces-workspace-%[1]s", rName)),
9394
),
9495
},
9596
{
@@ -122,7 +123,7 @@ func TestAccAwsWorkspacesWorkspace_tags(t *testing.T) {
122123
Check: resource.ComposeAggregateTestCheckFunc(
123124
testAccCheckAwsWorkspacesWorkspaceExists(resourceName, &v1),
124125
resource.TestCheckResourceAttr(resourceName, "tags.%", "2"),
125-
resource.TestCheckResourceAttr(resourceName, "tags.TerraformProviderAwsTest", "true"),
126+
resource.TestCheckResourceAttr(resourceName, "tags.Name", fmt.Sprintf("tf-testacc-workspaces-workspace-%[1]s", rName)),
126127
resource.TestCheckResourceAttr(resourceName, "tags.Alpha", "1"),
127128
),
128129
},
@@ -136,7 +137,7 @@ func TestAccAwsWorkspacesWorkspace_tags(t *testing.T) {
136137
Check: resource.ComposeAggregateTestCheckFunc(
137138
testAccCheckAwsWorkspacesWorkspaceExists(resourceName, &v2),
138139
resource.TestCheckResourceAttr(resourceName, "tags.%", "2"),
139-
resource.TestCheckResourceAttr(resourceName, "tags.TerraformProviderAwsTest", "true"),
140+
resource.TestCheckResourceAttr(resourceName, "tags.Name", fmt.Sprintf("tf-testacc-workspaces-workspace-%[1]s", rName)),
140141
resource.TestCheckResourceAttr(resourceName, "tags.Beta", "2"),
141142
),
142143
},
@@ -145,7 +146,7 @@ func TestAccAwsWorkspacesWorkspace_tags(t *testing.T) {
145146
Check: resource.ComposeAggregateTestCheckFunc(
146147
testAccCheckAwsWorkspacesWorkspaceExists(resourceName, &v3),
147148
resource.TestCheckResourceAttr(resourceName, "tags.%", "1"),
148-
resource.TestCheckResourceAttr(resourceName, "tags.TerraformProviderAwsTest", "true"),
149+
resource.TestCheckResourceAttr(resourceName, "tags.Name", fmt.Sprintf("tf-testacc-workspaces-workspace-%[1]s", rName)),
149150
),
150151
},
151152
},
@@ -401,32 +402,44 @@ func testAccCheckAwsWorkspacesWorkspaceExists(n string, v *workspaces.Workspace)
401402
func testAccAwsWorkspacesWorkspaceConfig_Prerequisites(rName string) string {
402403
return composeConfig(
403404
testAccAwsWorkspacesDirectoryConfig_Prerequisites(rName),
404-
`
405+
fmt.Sprintf(`
405406
data "aws_workspaces_bundle" "test" {
406407
bundle_id = "wsb-bh8rsxt14" # Value with Windows 10 (English)
407408
}
408409
409410
resource "aws_workspaces_directory" "test" {
410411
directory_id = aws_directory_service_directory.main.id
412+
413+
tags = {
414+
Name = "tf-testacc-workspaces-directory-%[1]s"
415+
}
411416
}
412-
`)
417+
`, rName))
413418
}
414419

415420
func testAccWorkspacesWorkspaceConfig(rName string) string {
416-
return testAccAwsWorkspacesWorkspaceConfig_Prerequisites(rName) + `
421+
return composeConfig(
422+
testAccAwsWorkspacesWorkspaceConfig_Prerequisites(rName),
423+
fmt.Sprintf(`
417424
resource "aws_workspaces_workspace" "test" {
418425
bundle_id = data.aws_workspaces_bundle.test.id
419426
directory_id = aws_workspaces_directory.test.id
420427
421428
# NOTE: WorkSpaces API doesn't allow creating users in the directory.
422429
# However, "Administrator"" user is always present in a bare directory.
423430
user_name = "Administrator"
431+
432+
tags = {
433+
Name = "tf-testacc-workspaces-workspace-%[1]s"
434+
}
424435
}
425-
`
436+
`, rName))
426437
}
427438

428439
func testAccWorkspacesWorkspaceConfig_TagsA(rName string) string {
429-
return testAccAwsWorkspacesWorkspaceConfig_Prerequisites(rName) + `
440+
return composeConfig(
441+
testAccAwsWorkspacesWorkspaceConfig_Prerequisites(rName),
442+
fmt.Sprintf(`
430443
resource "aws_workspaces_workspace" "test" {
431444
bundle_id = data.aws_workspaces_bundle.test.id
432445
directory_id = aws_workspaces_directory.test.id
@@ -436,15 +449,17 @@ resource "aws_workspaces_workspace" "test" {
436449
user_name = "Administrator"
437450
438451
tags = {
439-
TerraformProviderAwsTest = true
440-
Alpha = 1
452+
Name = "tf-testacc-workspaces-workspace-%[1]s"
453+
Alpha = 1
441454
}
442455
}
443-
`
456+
`, rName))
444457
}
445458

446459
func testAccWorkspacesWorkspaceConfig_TagsB(rName string) string {
447-
return testAccAwsWorkspacesWorkspaceConfig_Prerequisites(rName) + `
460+
return composeConfig(
461+
testAccAwsWorkspacesWorkspaceConfig_Prerequisites(rName),
462+
fmt.Sprintf(`
448463
resource "aws_workspaces_workspace" "test" {
449464
bundle_id = data.aws_workspaces_bundle.test.id
450465
directory_id = aws_workspaces_directory.test.id
@@ -454,15 +469,17 @@ resource "aws_workspaces_workspace" "test" {
454469
user_name = "Administrator"
455470
456471
tags = {
457-
TerraformProviderAwsTest = true
458-
Beta = 2
472+
Name = "tf-testacc-workspaces-workspace-%[1]s"
473+
Beta = 2
459474
}
460475
}
461-
`
476+
`, rName))
462477
}
463478

464479
func testAccWorkspacesWorkspaceConfig_TagsC(rName string) string {
465-
return testAccAwsWorkspacesWorkspaceConfig_Prerequisites(rName) + `
480+
return composeConfig(
481+
testAccAwsWorkspacesWorkspaceConfig_Prerequisites(rName),
482+
fmt.Sprintf(`
466483
resource "aws_workspaces_workspace" "test" {
467484
bundle_id = data.aws_workspaces_bundle.test.id
468485
directory_id = aws_workspaces_directory.test.id
@@ -472,14 +489,16 @@ resource "aws_workspaces_workspace" "test" {
472489
user_name = "Administrator"
473490
474491
tags = {
475-
TerraformProviderAwsTest = true
492+
Name = "tf-testacc-workspaces-workspace-%[1]s"
476493
}
477494
}
478-
`
495+
`, rName))
479496
}
480497

481498
func testAccWorkspacesWorkspaceConfig_WorkspacePropertiesA(rName string) string {
482-
return testAccAwsWorkspacesWorkspaceConfig_Prerequisites(rName) + `
499+
return composeConfig(
500+
testAccAwsWorkspacesWorkspaceConfig_Prerequisites(rName),
501+
fmt.Sprintf(`
483502
resource "aws_workspaces_workspace" "test" {
484503
bundle_id = data.aws_workspaces_bundle.test.id
485504
directory_id = aws_workspaces_directory.test.id
@@ -495,14 +514,16 @@ resource "aws_workspaces_workspace" "test" {
495514
}
496515
497516
tags = {
498-
TerraformProviderAwsTest = true
517+
Name = "tf-testacc-workspaces-workspace-%[1]s"
499518
}
500519
}
501-
`
520+
`, rName))
502521
}
503522

504523
func testAccWorkspacesWorkspaceConfig_WorkspacePropertiesB(rName string) string {
505-
return testAccAwsWorkspacesWorkspaceConfig_Prerequisites(rName) + `
524+
return composeConfig(
525+
testAccAwsWorkspacesWorkspaceConfig_Prerequisites(rName),
526+
fmt.Sprintf(`
506527
resource "aws_workspaces_workspace" "test" {
507528
bundle_id = data.aws_workspaces_bundle.test.id
508529
directory_id = aws_workspaces_directory.test.id
@@ -517,14 +538,16 @@ resource "aws_workspaces_workspace" "test" {
517538
}
518539
519540
tags = {
520-
TerraformProviderAwsTest = true
541+
Name = "tf-testacc-workspaces-workspace-%[1]s"
521542
}
522543
}
523-
`
544+
`, rName))
524545
}
525546

526547
func testAccWorkspacesWorkspaceConfig_WorkspacePropertiesC(rName string) string {
527-
return testAccAwsWorkspacesWorkspaceConfig_Prerequisites(rName) + `
548+
return composeConfig(
549+
testAccAwsWorkspacesWorkspaceConfig_Prerequisites(rName),
550+
fmt.Sprintf(`
528551
resource "aws_workspaces_workspace" "test" {
529552
bundle_id = data.aws_workspaces_bundle.test.id
530553
directory_id = aws_workspaces_directory.test.id
@@ -535,12 +558,18 @@ resource "aws_workspaces_workspace" "test" {
535558
536559
workspace_properties {
537560
}
561+
562+
tags = {
563+
Name = "tf-testacc-workspaces-workspace-%[1]s"
564+
}
538565
}
539-
`
566+
`, rName))
540567
}
541568

542569
func testAccWorkspacesWorkspaceConfig_validateRootVolumeSize(rName string) string {
543-
return testAccAwsWorkspacesWorkspaceConfig_Prerequisites(rName) + `
570+
return composeConfig(
571+
testAccAwsWorkspacesWorkspaceConfig_Prerequisites(rName),
572+
fmt.Sprintf(`
544573
resource "aws_workspaces_workspace" "test" {
545574
bundle_id = data.aws_workspaces_bundle.test.id
546575
directory_id = aws_workspaces_directory.test.id
@@ -555,14 +584,16 @@ resource "aws_workspaces_workspace" "test" {
555584
}
556585
557586
tags = {
558-
TerraformProviderAwsTest = true
587+
Name = "tf-testacc-workspaces-workspace-%[1]s"
559588
}
560589
}
561-
`
590+
`, rName))
562591
}
563592

564593
func testAccWorkspacesWorkspaceConfig_validateUserVolumeSize(rName string) string {
565-
return testAccAwsWorkspacesWorkspaceConfig_Prerequisites(rName) + `
594+
return composeConfig(
595+
testAccAwsWorkspacesWorkspaceConfig_Prerequisites(rName),
596+
fmt.Sprintf(`
566597
resource "aws_workspaces_workspace" "test" {
567598
bundle_id = data.aws_workspaces_bundle.test.id
568599
directory_id = aws_workspaces_directory.test.id
@@ -577,14 +608,16 @@ resource "aws_workspaces_workspace" "test" {
577608
}
578609
579610
tags = {
580-
TerraformProviderAwsTest = true
611+
Name = "tf-testacc-workspaces-workspace-%[1]s"
581612
}
582613
}
583-
`
614+
`, rName))
584615
}
585616

586617
func testAccWorkspacesWorkspaceConfig_timeout(rName string) string {
587-
return testAccAwsWorkspacesWorkspaceConfig_Prerequisites(rName) + `
618+
return composeConfig(
619+
testAccAwsWorkspacesWorkspaceConfig_Prerequisites(rName),
620+
fmt.Sprintf(`
588621
resource "aws_workspaces_workspace" "test" {
589622
bundle_id = data.aws_workspaces_bundle.test.id
590623
directory_id = aws_workspaces_directory.test.id
@@ -598,8 +631,12 @@ resource "aws_workspaces_workspace" "test" {
598631
update = "30m"
599632
delete = "30m"
600633
}
634+
635+
tags = {
636+
Name = "tf-testacc-workspaces-workspace-%[1]s"
637+
}
601638
}
602-
`
639+
`, rName))
603640
}
604641

605642
func TestExpandWorkspaceProperties(t *testing.T) {

0 commit comments

Comments
 (0)