Skip to content

Commit

Permalink
appstream: Migrate to AWS SDK v2
Browse files Browse the repository at this point in the history
  • Loading branch information
mattburgess committed Mar 25, 2024
1 parent 19f5239 commit 6f2ed40
Show file tree
Hide file tree
Showing 28 changed files with 510 additions and 527 deletions.
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ require (
github.com/aws/aws-sdk-go-v2/service/appfabric v1.7.3
github.com/aws/aws-sdk-go-v2/service/appflow v1.41.3
github.com/aws/aws-sdk-go-v2/service/apprunner v1.28.3
github.com/aws/aws-sdk-go-v2/service/appstream v1.34.3
github.com/aws/aws-sdk-go-v2/service/athena v1.40.3
github.com/aws/aws-sdk-go-v2/service/auditmanager v1.32.3
github.com/aws/aws-sdk-go-v2/service/batch v1.35.1
Expand Down
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,8 @@ github.com/aws/aws-sdk-go-v2/service/appflow v1.41.3 h1:tK9duUSGFRz/8nshXYyddbw2
github.com/aws/aws-sdk-go-v2/service/appflow v1.41.3/go.mod h1:D08dEVi5M9I0qAIl1IyMydjFQPcjQqCp2Mw3WqhCDbQ=
github.com/aws/aws-sdk-go-v2/service/apprunner v1.28.3 h1:nby4wV20qfVF2yswXCFKL7lTkddNvYUj2P9+k/UbYQc=
github.com/aws/aws-sdk-go-v2/service/apprunner v1.28.3/go.mod h1:ECUaiPa9O5LwqgVNeBduNwayctvWkc5nb8NdBLmLJ00=
github.com/aws/aws-sdk-go-v2/service/appstream v1.34.3 h1:YT1ehKTbyBd+ohzIdyHazuPXqmA7ShWugDxc+0IwmPM=
github.com/aws/aws-sdk-go-v2/service/appstream v1.34.3/go.mod h1:1QriwjVVSPeHKMgUioJigusztofBe096LqQ1i8pGI1A=
github.com/aws/aws-sdk-go-v2/service/athena v1.40.3 h1:Q54tyTwpoEyJNmP4WqwT9hdPHpbpNahvcW9so6lItQw=
github.com/aws/aws-sdk-go-v2/service/athena v1.40.3/go.mod h1:HP/WmaAcHBNMHa6EwxTMPdqCIbV0uCnWR8WNTp2AG5c=
github.com/aws/aws-sdk-go-v2/service/auditmanager v1.32.3 h1:Y9Tqv+Pb93GGLpxYoKYdz9ZdwpnT5HP6AFazR3moNlM=
Expand Down
6 changes: 3 additions & 3 deletions internal/conns/awsclient_gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

45 changes: 23 additions & 22 deletions internal/service/appstream/directory_config.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,14 @@ import (
"log"
"time"

"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/service/appstream"
"github.com/hashicorp/aws-sdk-go-base/v2/awsv1shim/v2/tfawserr"
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/service/appstream"
awstypes "github.com/aws/aws-sdk-go-v2/service/appstream/types"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
"github.com/hashicorp/terraform-provider-aws/internal/conns"
"github.com/hashicorp/terraform-provider-aws/internal/errs"
"github.com/hashicorp/terraform-provider-aws/internal/errs/sdkdiag"
"github.com/hashicorp/terraform-provider-aws/internal/flex"
)
Expand Down Expand Up @@ -73,16 +74,16 @@ func ResourceDirectoryConfig() *schema.Resource {
func resourceDirectoryConfigCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
var diags diag.Diagnostics

conn := meta.(*conns.AWSClient).AppStreamConn(ctx)
conn := meta.(*conns.AWSClient).AppStreamClient(ctx)

directoryName := d.Get("directory_name").(string)
input := &appstream.CreateDirectoryConfigInput{
DirectoryName: aws.String(directoryName),
OrganizationalUnitDistinguishedNames: flex.ExpandStringSet(d.Get("organizational_unit_distinguished_names").(*schema.Set)),
OrganizationalUnitDistinguishedNames: flex.ExpandStringValueSet(d.Get("organizational_unit_distinguished_names").(*schema.Set)),
ServiceAccountCredentials: expandServiceAccountCredentials(d.Get("service_account_credentials").([]interface{})),
}

output, err := conn.CreateDirectoryConfigWithContext(ctx, input)
output, err := conn.CreateDirectoryConfig(ctx, input)
if err != nil {
return sdkdiag.AppendErrorf(diags, "creating AppStream Directory Config (%s): %s", directoryName, err)
}
Expand All @@ -91,19 +92,19 @@ func resourceDirectoryConfigCreate(ctx context.Context, d *schema.ResourceData,
return sdkdiag.AppendErrorf(diags, "creating AppStream Directory Config (%s): empty response", directoryName)
}

d.SetId(aws.StringValue(output.DirectoryConfig.DirectoryName))
d.SetId(aws.ToString(output.DirectoryConfig.DirectoryName))

return append(diags, resourceDirectoryConfigRead(ctx, d, meta)...)
}

func resourceDirectoryConfigRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
var diags diag.Diagnostics

conn := meta.(*conns.AWSClient).AppStreamConn(ctx)
conn := meta.(*conns.AWSClient).AppStreamClient(ctx)

resp, err := conn.DescribeDirectoryConfigsWithContext(ctx, &appstream.DescribeDirectoryConfigsInput{DirectoryNames: []*string{aws.String(d.Id())}})
resp, err := conn.DescribeDirectoryConfigs(ctx, &appstream.DescribeDirectoryConfigsInput{DirectoryNames: []string{d.Id()}})

if !d.IsNewResource() && tfawserr.ErrCodeEquals(err, appstream.ErrCodeResourceNotFoundException) {
if !d.IsNewResource() && errs.IsA[*awstypes.ResourceNotFoundException](err) {
log.Printf("[WARN] AppStream Directory Config (%s) not found, removing from state", d.Id())
d.SetId("")
return diags
Expand All @@ -123,9 +124,9 @@ func resourceDirectoryConfigRead(ctx context.Context, d *schema.ResourceData, me

directoryConfig := resp.DirectoryConfigs[0]

d.Set("created_time", aws.TimeValue(directoryConfig.CreatedTime).Format(time.RFC3339))
d.Set("created_time", aws.ToTime(directoryConfig.CreatedTime).Format(time.RFC3339))
d.Set("directory_name", directoryConfig.DirectoryName)
d.Set("organizational_unit_distinguished_names", flex.FlattenStringSet(directoryConfig.OrganizationalUnitDistinguishedNames))
d.Set("organizational_unit_distinguished_names", flex.FlattenStringValueSet(directoryConfig.OrganizationalUnitDistinguishedNames))

if err = d.Set("service_account_credentials", flattenServiceAccountCredentials(directoryConfig.ServiceAccountCredentials, d)); err != nil {
return sdkdiag.AppendErrorf(diags, "setting `%s` for AppStream Directory Config (%s): %s", "service_account_credentials", d.Id(), err)
Expand All @@ -137,20 +138,20 @@ func resourceDirectoryConfigRead(ctx context.Context, d *schema.ResourceData, me
func resourceDirectoryConfigUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
var diags diag.Diagnostics

conn := meta.(*conns.AWSClient).AppStreamConn(ctx)
conn := meta.(*conns.AWSClient).AppStreamClient(ctx)
input := &appstream.UpdateDirectoryConfigInput{
DirectoryName: aws.String(d.Id()),
}

if d.HasChange("organizational_unit_distinguished_names") {
input.OrganizationalUnitDistinguishedNames = flex.ExpandStringSet(d.Get("organizational_unit_distinguished_names").(*schema.Set))
input.OrganizationalUnitDistinguishedNames = flex.ExpandStringValueSet(d.Get("organizational_unit_distinguished_names").(*schema.Set))
}

if d.HasChange("service_account_credentials") {
input.ServiceAccountCredentials = expandServiceAccountCredentials(d.Get("service_account_credentials").([]interface{}))
}

_, err := conn.UpdateDirectoryConfigWithContext(ctx, input)
_, err := conn.UpdateDirectoryConfig(ctx, input)
if err != nil {
return sdkdiag.AppendErrorf(diags, "updating AppStream Directory Config (%s): %s", d.Id(), err)
}
Expand All @@ -161,14 +162,14 @@ func resourceDirectoryConfigUpdate(ctx context.Context, d *schema.ResourceData,
func resourceDirectoryConfigDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
var diags diag.Diagnostics

conn := meta.(*conns.AWSClient).AppStreamConn(ctx)
conn := meta.(*conns.AWSClient).AppStreamClient(ctx)

log.Printf("[DEBUG] Deleting AppStream Directory Config: (%s)", d.Id())
_, err := conn.DeleteDirectoryConfigWithContext(ctx, &appstream.DeleteDirectoryConfigInput{
_, err := conn.DeleteDirectoryConfig(ctx, &appstream.DeleteDirectoryConfigInput{
DirectoryName: aws.String(d.Id()),
})

if tfawserr.ErrCodeEquals(err, appstream.ErrCodeResourceNotFoundException) {
if errs.IsA[*awstypes.ResourceNotFoundException](err) {
return diags
}

Expand All @@ -179,28 +180,28 @@ func resourceDirectoryConfigDelete(ctx context.Context, d *schema.ResourceData,
return diags
}

func expandServiceAccountCredentials(tfList []interface{}) *appstream.ServiceAccountCredentials {
func expandServiceAccountCredentials(tfList []interface{}) *awstypes.ServiceAccountCredentials {
if len(tfList) == 0 {
return nil
}

attr := tfList[0].(map[string]interface{})

apiObject := &appstream.ServiceAccountCredentials{
apiObject := &awstypes.ServiceAccountCredentials{
AccountName: aws.String(attr["account_name"].(string)),
AccountPassword: aws.String(attr["account_password"].(string)),
}

return apiObject
}

func flattenServiceAccountCredentials(apiObject *appstream.ServiceAccountCredentials, d *schema.ResourceData) []interface{} {
func flattenServiceAccountCredentials(apiObject *awstypes.ServiceAccountCredentials, d *schema.ResourceData) []interface{} {
if apiObject == nil {
return nil
}

tfList := map[string]interface{}{}
tfList["account_name"] = aws.StringValue(apiObject.AccountName)
tfList["account_name"] = aws.ToString(apiObject.AccountName)
tfList["account_password"] = d.Get("service_account_credentials.0.account_password").(string)

return []interface{}{tfList}
Expand Down
31 changes: 16 additions & 15 deletions internal/service/appstream/directory_config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,21 +9,22 @@ import (
"strings"
"testing"

"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/service/appstream"
"github.com/hashicorp/aws-sdk-go-base/v2/awsv1shim/v2/tfawserr"
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/service/appstream"
awstypes "github.com/aws/aws-sdk-go-v2/service/appstream/types"
sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest"
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
"github.com/hashicorp/terraform-plugin-testing/terraform"
"github.com/hashicorp/terraform-provider-aws/internal/acctest"
"github.com/hashicorp/terraform-provider-aws/internal/conns"
"github.com/hashicorp/terraform-provider-aws/internal/errs"
tfappstream "github.com/hashicorp/terraform-provider-aws/internal/service/appstream"
"github.com/hashicorp/terraform-provider-aws/names"
)

func TestAccAppStreamDirectoryConfig_basic(t *testing.T) {
ctx := acctest.Context(t)
var v1, v2 appstream.DirectoryConfig
var v1, v2 awstypes.DirectoryConfig
resourceName := "aws_appstream_directory_config.test"
rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix)
domain := acctest.RandomDomainName()
Expand Down Expand Up @@ -78,7 +79,7 @@ func TestAccAppStreamDirectoryConfig_basic(t *testing.T) {

func TestAccAppStreamDirectoryConfig_disappears(t *testing.T) {
ctx := acctest.Context(t)
var v appstream.DirectoryConfig
var v awstypes.DirectoryConfig
resourceName := "aws_appstream_directory_config.test"
rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix)
domain := acctest.RandomDomainName()
Expand Down Expand Up @@ -106,7 +107,7 @@ func TestAccAppStreamDirectoryConfig_disappears(t *testing.T) {

func TestAccAppStreamDirectoryConfig_OrganizationalUnitDistinguishedNames(t *testing.T) {
ctx := acctest.Context(t)
var v1, v2, v3 appstream.DirectoryConfig
var v1, v2, v3 awstypes.DirectoryConfig
resourceName := "aws_appstream_directory_config.test"
rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix)
domain := acctest.RandomDomainName()
Expand Down Expand Up @@ -153,15 +154,15 @@ func TestAccAppStreamDirectoryConfig_OrganizationalUnitDistinguishedNames(t *tes
})
}

func testAccCheckDirectoryConfigExists(ctx context.Context, resourceName string, appStreamDirectoryConfig *appstream.DirectoryConfig) resource.TestCheckFunc {
func testAccCheckDirectoryConfigExists(ctx context.Context, resourceName string, appStreamDirectoryConfig *awstypes.DirectoryConfig) resource.TestCheckFunc {
return func(s *terraform.State) error {
rs, ok := s.RootModule().Resources[resourceName]
if !ok {
return fmt.Errorf("not found: %s", resourceName)
}

conn := acctest.Provider.Meta().(*conns.AWSClient).AppStreamConn(ctx)
resp, err := conn.DescribeDirectoryConfigsWithContext(ctx, &appstream.DescribeDirectoryConfigsInput{DirectoryNames: []*string{aws.String(rs.Primary.ID)}})
conn := acctest.Provider.Meta().(*conns.AWSClient).AppStreamClient(ctx)
resp, err := conn.DescribeDirectoryConfigs(ctx, &appstream.DescribeDirectoryConfigsInput{DirectoryNames: []string{rs.Primary.ID}})

if err != nil {
return err
Expand All @@ -171,24 +172,24 @@ func testAccCheckDirectoryConfigExists(ctx context.Context, resourceName string,
return fmt.Errorf("AppStream Directory Config %q does not exist", rs.Primary.ID)
}

*appStreamDirectoryConfig = *resp.DirectoryConfigs[0]
*appStreamDirectoryConfig = resp.DirectoryConfigs[0]

return nil
}
}

func testAccCheckDirectoryConfigDestroy(ctx context.Context) resource.TestCheckFunc {
return func(s *terraform.State) error {
conn := acctest.Provider.Meta().(*conns.AWSClient).AppStreamConn(ctx)
conn := acctest.Provider.Meta().(*conns.AWSClient).AppStreamClient(ctx)

for _, rs := range s.RootModule().Resources {
if rs.Type != "aws_appstream_directory_config" {
continue
}

resp, err := conn.DescribeDirectoryConfigsWithContext(ctx, &appstream.DescribeDirectoryConfigsInput{DirectoryNames: []*string{aws.String(rs.Primary.ID)}})
resp, err := conn.DescribeDirectoryConfigs(ctx, &appstream.DescribeDirectoryConfigsInput{DirectoryNames: []string{rs.Primary.ID}})

if tfawserr.ErrCodeEquals(err, appstream.ErrCodeResourceNotFoundException) {
if errs.IsA[*awstypes.ResourceNotFoundException](err) {
continue
}

Expand All @@ -205,9 +206,9 @@ func testAccCheckDirectoryConfigDestroy(ctx context.Context) resource.TestCheckF
}
}

func testAccCheckDirectoryConfigNotRecreated(i, j *appstream.DirectoryConfig) resource.TestCheckFunc {
func testAccCheckDirectoryConfigNotRecreated(i, j *awstypes.DirectoryConfig) resource.TestCheckFunc {
return func(s *terraform.State) error {
if !aws.TimeValue(i.CreatedTime).Equal(aws.TimeValue(j.CreatedTime)) {
if !aws.ToTime(i.CreatedTime).Equal(aws.ToTime(j.CreatedTime)) {
return fmt.Errorf("AppStream Directory Config recreated")
}

Expand Down
Loading

0 comments on commit 6f2ed40

Please sign in to comment.