From f10b15c2e6d836e1fc9470de80f849a28716fb32 Mon Sep 17 00:00:00 2001 From: Angie Pinilla Date: Mon, 6 Dec 2021 22:42:30 -0500 Subject: [PATCH 1/4] create image builder with ImageArn if configured --- internal/service/appstream/image_builder.go | 5 +++ .../service/appstream/image_builder_test.go | 42 +++++++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/internal/service/appstream/image_builder.go b/internal/service/appstream/image_builder.go index a0d713f065d..04704d2ce16 100644 --- a/internal/service/appstream/image_builder.go +++ b/internal/service/appstream/image_builder.go @@ -116,6 +116,7 @@ func ResourceImageBuilder() *schema.Resource { Computed: true, ForceNew: true, ExactlyOneOf: []string{"image_arn", "image_name"}, + ValidateFunc: verify.ValidARN, }, "image_name": { Type: schema.TypeString, @@ -204,6 +205,10 @@ func resourceImageBuilderCreate(ctx context.Context, d *schema.ResourceData, met input.EnableDefaultInternetAccess = aws.Bool(v.(bool)) } + if v, ok := d.GetOk("image_arn"); ok { + input.ImageArn = aws.String(v.(string)) + } + if v, ok := d.GetOk("image_name"); ok { input.ImageName = aws.String(v.(string)) } diff --git a/internal/service/appstream/image_builder_test.go b/internal/service/appstream/image_builder_test.go index 88716a3731e..a5002d3fe76 100644 --- a/internal/service/appstream/image_builder_test.go +++ b/internal/service/appstream/image_builder_test.go @@ -166,6 +166,36 @@ func TestAccAppStreamImageBuilder_tags(t *testing.T) { }) } +func TestAccAppStreamImageBuilder_imageARN(t *testing.T) { + resourceName := "aws_appstream_image_builder.test" + // imageName selected from the available AWS Managed AppStream 2.0 Base Images + // Reference: https://docs.aws.amazon.com/appstream2/latest/developerguide/base-image-version-history.html + imageName := "AppStream-WinServer2012R2-07-19-2021" + instanceType := "stream.standard.small" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(t) }, + ProviderFactories: acctest.ProviderFactories, + CheckDestroy: testAccCheckImageBuilderDestroy, + ErrorCheck: acctest.ErrorCheck(t, appstream.EndpointsID), + Steps: []resource.TestStep{ + { + Config: testAccImageBuilderByImageARNConfig(rName, imageName, instanceType), + Check: resource.ComposeTestCheckFunc( + testAccCheckImageBuilderExists(resourceName), + acctest.CheckResourceAttrRegionalARN(resourceName, "image_arn", "appstream", fmt.Sprintf("image/%s", imageName)), + ), + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + func testAccCheckImageBuilderExists(resourceName string) resource.TestCheckFunc { return func(s *terraform.State) error { rs, ok := s.RootModule().Resources[resourceName] @@ -280,3 +310,15 @@ resource "aws_appstream_image_builder" "test" { } `, instanceType, name, key1, value1, key2, value2) } + +func testAccImageBuilderByImageARNConfig(rName, imageName, instanceType string) string { + return fmt.Sprintf(` +data "aws_partition" "current" {} + +resource "aws_appstream_image_builder" "test" { + image_arn = "arn:${data.aws_partition.current.partition}:appstream:%[1]s::image/%[2]s" + instance_type = %[2]q + name = %[3]q +} +`, acctest.Region(), imageName, instanceType, rName) +} From 5475fa58677758e56b40bfc25fb149e72cd434ee Mon Sep 17 00:00:00 2001 From: Angie Pinilla Date: Mon, 6 Dec 2021 22:42:43 -0500 Subject: [PATCH 2/4] Update CHANGELOG for #22077 --- .changelog/22077.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .changelog/22077.txt diff --git a/.changelog/22077.txt b/.changelog/22077.txt new file mode 100644 index 00000000000..a0177ace1ae --- /dev/null +++ b/.changelog/22077.txt @@ -0,0 +1,3 @@ +```release-note:bug +resource/aws_appstream_image_builder: Correctly create resource with `image_arn` argument +``` \ No newline at end of file From 9b3ed3932d6583b1a40e93a7b2cc52aa5582c9da Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Tue, 7 Dec 2021 09:02:14 -0500 Subject: [PATCH 3/4] r/aws_appstream_image_builder: Correct argument numbers in 'testAccImageBuilderByImageARNConfig'. --- internal/service/appstream/image_builder_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/service/appstream/image_builder_test.go b/internal/service/appstream/image_builder_test.go index a5002d3fe76..6c9035880df 100644 --- a/internal/service/appstream/image_builder_test.go +++ b/internal/service/appstream/image_builder_test.go @@ -317,8 +317,8 @@ data "aws_partition" "current" {} resource "aws_appstream_image_builder" "test" { image_arn = "arn:${data.aws_partition.current.partition}:appstream:%[1]s::image/%[2]s" - instance_type = %[2]q - name = %[3]q + instance_type = %[3]q + name = %[4]q } `, acctest.Region(), imageName, instanceType, rName) } From 5c2e4ecc5430ee66e0e8d304ef04bae4c2886829 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Tue, 7 Dec 2021 09:03:56 -0500 Subject: [PATCH 4/4] Use 'acctest.CheckResourceAttrRegionalARNNoAccount' to validate 'image_arn'. --- internal/service/appstream/image_builder_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/service/appstream/image_builder_test.go b/internal/service/appstream/image_builder_test.go index 6c9035880df..7518ad8475b 100644 --- a/internal/service/appstream/image_builder_test.go +++ b/internal/service/appstream/image_builder_test.go @@ -184,7 +184,7 @@ func TestAccAppStreamImageBuilder_imageARN(t *testing.T) { Config: testAccImageBuilderByImageARNConfig(rName, imageName, instanceType), Check: resource.ComposeTestCheckFunc( testAccCheckImageBuilderExists(resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, "image_arn", "appstream", fmt.Sprintf("image/%s", imageName)), + acctest.CheckResourceAttrRegionalARNNoAccount(resourceName, "image_arn", "appstream", fmt.Sprintf("image/%s", imageName)), ), }, {