From ed85c200664a82bf84220990cb9453afbeeb01bf Mon Sep 17 00:00:00 2001 From: megubyte <939805+megubyte@users.noreply.github.com> Date: Mon, 6 Mar 2023 20:31:11 +0000 Subject: [PATCH 1/5] r/aws_amplify_domain_association: add enable_auto_sub_domain attribute --- .../service/amplify/domain_association.go | 30 ++++++++++++++----- .../amplify/domain_association_test.go | 25 +++++++++------- 2 files changed, 38 insertions(+), 17 deletions(-) diff --git a/internal/service/amplify/domain_association.go b/internal/service/amplify/domain_association.go index ed8f17882e02..7fc051f83e4e 100644 --- a/internal/service/amplify/domain_association.go +++ b/internal/service/amplify/domain_association.go @@ -50,6 +50,12 @@ func ResourceDomainAssociation() *schema.Resource { ValidateFunc: validation.StringLenBetween(1, 255), }, + "enable_auto_sub_domain": { + Type: schema.TypeBool, + Optional: true, + Default: false, + }, + "sub_domain": { Type: schema.TypeSet, Required: true, @@ -92,12 +98,14 @@ func resourceDomainAssociationCreate(ctx context.Context, d *schema.ResourceData appID := d.Get("app_id").(string) domainName := d.Get("domain_name").(string) + enableAutoSubDomain := d.Get("enable_auto_sub_domain").(bool) id := DomainAssociationCreateResourceID(appID, domainName) input := &lify.CreateDomainAssociationInput{ - AppId: aws.String(appID), - DomainName: aws.String(domainName), - SubDomainSettings: expandSubDomainSettings(d.Get("sub_domain").(*schema.Set).List()), + AppId: aws.String(appID), + DomainName: aws.String(domainName), + SubDomainSettings: expandSubDomainSettings(d.Get("sub_domain").(*schema.Set).List()), + EnableAutoSubDomain: aws.Bool(enableAutoSubDomain), } log.Printf("[DEBUG] Creating Amplify Domain Association: %s", input) @@ -148,6 +156,7 @@ func resourceDomainAssociationRead(ctx context.Context, d *schema.ResourceData, d.Set("arn", domainAssociation.DomainAssociationArn) d.Set("certificate_verification_dns_record", domainAssociation.CertificateVerificationDNSRecord) d.Set("domain_name", domainAssociation.DomainName) + d.Set("enable_auto_sub_domain", domainAssociation.EnableAutoSubDomain) if err := d.Set("sub_domain", flattenSubDomains(domainAssociation.SubDomains)); err != nil { return sdkdiag.AppendErrorf(diags, "setting sub_domain: %s", err) } @@ -165,11 +174,18 @@ func resourceDomainAssociationUpdate(ctx context.Context, d *schema.ResourceData return sdkdiag.AppendErrorf(diags, "parsing Amplify Domain Association ID: %s", err) } - if d.HasChange("sub_domain") { + if d.HasChanges("sub_domain", "enable_auto_sub_domain") { input := &lify.UpdateDomainAssociationInput{ - AppId: aws.String(appID), - DomainName: aws.String(domainName), - SubDomainSettings: expandSubDomainSettings(d.Get("sub_domain").(*schema.Set).List()), + AppId: aws.String(appID), + DomainName: aws.String(domainName), + } + + if d.HasChange("sub_domain") { + input.SubDomainSettings = expandSubDomainSettings(d.Get("sub_domain").(*schema.Set).List()) + } + + if d.HasChange("enable_auto_sub_domain") { + input.EnableAutoSubDomain = aws.Bool(d.Get("enable_auto_sub_domain").(bool)) } log.Printf("[DEBUG] Creating Amplify Domain Association: %s", input) diff --git a/internal/service/amplify/domain_association_test.go b/internal/service/amplify/domain_association_test.go index 13e0a1f40403..44a06f798193 100644 --- a/internal/service/amplify/domain_association_test.go +++ b/internal/service/amplify/domain_association_test.go @@ -36,7 +36,7 @@ func testAccDomainAssociation_basic(t *testing.T) { CheckDestroy: testAccCheckDomainAssociationDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccDomainAssociationConfig_basic(rName, domainName, false), + Config: testAccDomainAssociationConfig_basic(rName, domainName, false, false), Check: resource.ComposeTestCheckFunc( testAccCheckDomainAssociationExists(ctx, resourceName, &domain), acctest.MatchResourceAttrRegionalARN(resourceName, "arn", "amplify", regexp.MustCompile(`apps/.+/domains/.+`)), @@ -46,6 +46,7 @@ func testAccDomainAssociation_basic(t *testing.T) { "branch_name": rName, "prefix": "", }), + resource.TestCheckResourceAttr(resourceName, "enable_auto_sub_domain", "false"), resource.TestCheckResourceAttr(resourceName, "wait_for_verification", "false"), ), }, @@ -78,7 +79,7 @@ func testAccDomainAssociation_disappears(t *testing.T) { CheckDestroy: testAccCheckDomainAssociationDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccDomainAssociationConfig_basic(rName, domainName, false), + Config: testAccDomainAssociationConfig_basic(rName, domainName, false, false), Check: resource.ComposeTestCheckFunc( testAccCheckDomainAssociationExists(ctx, resourceName, &domain), acctest.CheckResourceDisappears(ctx, acctest.Provider, tfamplify.ResourceDomainAssociation(), resourceName), @@ -108,7 +109,7 @@ func testAccDomainAssociation_update(t *testing.T) { CheckDestroy: testAccCheckDomainAssociationDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccDomainAssociationConfig_basic(rName, domainName, true), + Config: testAccDomainAssociationConfig_basic(rName, domainName, false, true), Check: resource.ComposeTestCheckFunc( testAccCheckDomainAssociationExists(ctx, resourceName, &domain), acctest.MatchResourceAttrRegionalARN(resourceName, "arn", "amplify", regexp.MustCompile(`apps/.+/domains/.+`)), @@ -118,6 +119,7 @@ func testAccDomainAssociation_update(t *testing.T) { "branch_name": rName, "prefix": "", }), + resource.TestCheckResourceAttr(resourceName, "enable_auto_sub_domain", "false"), resource.TestCheckResourceAttr(resourceName, "wait_for_verification", "true"), ), }, @@ -128,7 +130,7 @@ func testAccDomainAssociation_update(t *testing.T) { ImportStateVerifyIgnore: []string{"wait_for_verification"}, }, { - Config: testAccDomainAssociationConfig_updated(rName, domainName, true), + Config: testAccDomainAssociationConfig_updated(rName, domainName, true, true), Check: resource.ComposeTestCheckFunc( testAccCheckDomainAssociationExists(ctx, resourceName, &domain), acctest.MatchResourceAttrRegionalARN(resourceName, "arn", "amplify", regexp.MustCompile(`apps/.+/domains/.+`)), @@ -142,6 +144,7 @@ func testAccDomainAssociation_update(t *testing.T) { "branch_name": fmt.Sprintf("%s-2", rName), "prefix": "www", }), + resource.TestCheckResourceAttr(resourceName, "enable_auto_sub_domain", "true"), resource.TestCheckResourceAttr(resourceName, "wait_for_verification", "true"), ), }, @@ -212,7 +215,7 @@ func testAccCheckDomainAssociationDestroy(ctx context.Context) resource.TestChec } } -func testAccDomainAssociationConfig_basic(rName, domainName string, waitForVerification bool) string { +func testAccDomainAssociationConfig_basic(rName, domainName string, enableAutoSubDomain bool, waitForVerification bool) string { return fmt.Sprintf(` resource "aws_amplify_app" "test" { name = %[1]q @@ -232,12 +235,13 @@ resource "aws_amplify_domain_association" "test" { prefix = "" } - wait_for_verification = %[3]t + enable_auto_sub_domain = %[3]t + wait_for_verification = %[4]t } -`, rName, domainName, waitForVerification) +`, rName, domainName, enableAutoSubDomain, waitForVerification) } -func testAccDomainAssociationConfig_updated(rName, domainName string, waitForVerification bool) string { +func testAccDomainAssociationConfig_updated(rName, domainName string, enableAutoSubDomain bool, waitForVerification bool) string { return fmt.Sprintf(` resource "aws_amplify_app" "test" { name = %[1]q @@ -267,7 +271,8 @@ resource "aws_amplify_domain_association" "test" { prefix = "www" } - wait_for_verification = %[3]t + enable_auto_sub_domain = %[3]t + wait_for_verification = %[4]t } -`, rName, domainName, waitForVerification) +`, rName, domainName, enableAutoSubDomain, waitForVerification) } From 0e0d058989bb1f8635a90dbec838643d726ec4e1 Mon Sep 17 00:00:00 2001 From: megubyte <939805+megubyte@users.noreply.github.com> Date: Mon, 6 Mar 2023 20:48:46 +0000 Subject: [PATCH 2/5] changelog --- .changelog/92814.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .changelog/92814.txt diff --git a/.changelog/92814.txt b/.changelog/92814.txt new file mode 100644 index 000000000000..92b8a45d9a01 --- /dev/null +++ b/.changelog/92814.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +resource/aws_amplify_domain_association: Add `enable_auto_sub_domain` argument +``` \ No newline at end of file From 730ce06e7d12a2482ac55d059b0f15a0c2b182c4 Mon Sep 17 00:00:00 2001 From: megubyte <939805+megubyte@users.noreply.github.com> Date: Mon, 6 Mar 2023 20:51:51 +0000 Subject: [PATCH 3/5] fmt --- internal/service/amplify/domain_association_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/service/amplify/domain_association_test.go b/internal/service/amplify/domain_association_test.go index 44a06f798193..c8663dad3f20 100644 --- a/internal/service/amplify/domain_association_test.go +++ b/internal/service/amplify/domain_association_test.go @@ -236,7 +236,7 @@ resource "aws_amplify_domain_association" "test" { } enable_auto_sub_domain = %[3]t - wait_for_verification = %[4]t + wait_for_verification = %[4]t } `, rName, domainName, enableAutoSubDomain, waitForVerification) } @@ -272,7 +272,7 @@ resource "aws_amplify_domain_association" "test" { } enable_auto_sub_domain = %[3]t - wait_for_verification = %[4]t + wait_for_verification = %[4]t } `, rName, domainName, enableAutoSubDomain, waitForVerification) } From f4e538b64774d2314526dd7c8942aaa01572162b Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Thu, 9 Mar 2023 08:38:03 -0500 Subject: [PATCH 4/5] r/aws_amplify_domain_association: Document 'enable_auto_sub_domain'. --- website/docs/r/amplify_domain_association.html.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/website/docs/r/amplify_domain_association.html.markdown b/website/docs/r/amplify_domain_association.html.markdown index 24057309b3e7..9a982a2419d4 100644 --- a/website/docs/r/amplify_domain_association.html.markdown +++ b/website/docs/r/amplify_domain_association.html.markdown @@ -53,6 +53,7 @@ The following arguments are supported: * `app_id` - (Required) Unique ID for an Amplify app. * `domain_name` - (Required) Domain name for the domain association. +* `enable_auto_sub_domain` - (Optional) Enables the automated creation of subdomains for branches. * `sub_domain` - (Required) Setting for the subdomain. Documented below. * `wait_for_verification` - (Optional) If enabled, the resource will wait for the domain association status to change to `PENDING_DEPLOYMENT` or `AVAILABLE`. Setting this to `false` will skip the process. Default: `true`. From 1239d97f0806885cd43d1ca3bc1d0d48fc2b4cf6 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Thu, 9 Mar 2023 08:43:13 -0500 Subject: [PATCH 5/5] r/aws_amplify_domain_association: Cosmetics. --- .../service/amplify/domain_association.go | 29 +++++++------------ .../amplify/domain_association_test.go | 6 ++-- 2 files changed, 13 insertions(+), 22 deletions(-) diff --git a/internal/service/amplify/domain_association.go b/internal/service/amplify/domain_association.go index 7fc051f83e4e..5a1636449e47 100644 --- a/internal/service/amplify/domain_association.go +++ b/internal/service/amplify/domain_association.go @@ -22,6 +22,7 @@ func ResourceDomainAssociation() *schema.Resource { ReadWithoutTimeout: resourceDomainAssociationRead, UpdateWithoutTimeout: resourceDomainAssociationUpdate, DeleteWithoutTimeout: resourceDomainAssociationDelete, + Importer: &schema.ResourceImporter{ StateContext: schema.ImportStatePassthroughContext, }, @@ -32,30 +33,25 @@ func ResourceDomainAssociation() *schema.Resource { Required: true, ForceNew: true, }, - "arn": { Type: schema.TypeString, Computed: true, }, - "certificate_verification_dns_record": { Type: schema.TypeString, Computed: true, }, - "domain_name": { Type: schema.TypeString, Required: true, ForceNew: true, ValidateFunc: validation.StringLenBetween(1, 255), }, - "enable_auto_sub_domain": { Type: schema.TypeBool, Optional: true, Default: false, }, - "sub_domain": { Type: schema.TypeSet, Required: true, @@ -82,7 +78,6 @@ func ResourceDomainAssociation() *schema.Resource { }, }, }, - "wait_for_verification": { Type: schema.TypeBool, Optional: true, @@ -98,17 +93,14 @@ func resourceDomainAssociationCreate(ctx context.Context, d *schema.ResourceData appID := d.Get("app_id").(string) domainName := d.Get("domain_name").(string) - enableAutoSubDomain := d.Get("enable_auto_sub_domain").(bool) id := DomainAssociationCreateResourceID(appID, domainName) - input := &lify.CreateDomainAssociationInput{ AppId: aws.String(appID), DomainName: aws.String(domainName), + EnableAutoSubDomain: aws.Bool(d.Get("enable_auto_sub_domain").(bool)), SubDomainSettings: expandSubDomainSettings(d.Get("sub_domain").(*schema.Set).List()), - EnableAutoSubDomain: aws.Bool(enableAutoSubDomain), } - log.Printf("[DEBUG] Creating Amplify Domain Association: %s", input) _, err := conn.CreateDomainAssociationWithContext(ctx, input) if err != nil { @@ -118,12 +110,12 @@ func resourceDomainAssociationCreate(ctx context.Context, d *schema.ResourceData d.SetId(id) if _, err := waitDomainAssociationCreated(ctx, conn, appID, domainName); err != nil { - return sdkdiag.AppendErrorf(diags, "waiting for Amplify Domain Association (%s) to create: %s", d.Id(), err) + return sdkdiag.AppendErrorf(diags, "waiting for Amplify Domain Association (%s) create: %s", d.Id(), err) } if d.Get("wait_for_verification").(bool) { if _, err := waitDomainAssociationVerified(ctx, conn, appID, domainName); err != nil { - return sdkdiag.AppendErrorf(diags, "waiting for Amplify Domain Association (%s) to verify: %s", d.Id(), err) + return sdkdiag.AppendErrorf(diags, "waiting for Amplify Domain Association (%s) verification: %s", d.Id(), err) } } @@ -174,21 +166,20 @@ func resourceDomainAssociationUpdate(ctx context.Context, d *schema.ResourceData return sdkdiag.AppendErrorf(diags, "parsing Amplify Domain Association ID: %s", err) } - if d.HasChanges("sub_domain", "enable_auto_sub_domain") { + if d.HasChanges("enable_auto_sub_domain", "sub_domain") { input := &lify.UpdateDomainAssociationInput{ AppId: aws.String(appID), DomainName: aws.String(domainName), } - if d.HasChange("sub_domain") { - input.SubDomainSettings = expandSubDomainSettings(d.Get("sub_domain").(*schema.Set).List()) - } - if d.HasChange("enable_auto_sub_domain") { input.EnableAutoSubDomain = aws.Bool(d.Get("enable_auto_sub_domain").(bool)) } - log.Printf("[DEBUG] Creating Amplify Domain Association: %s", input) + if d.HasChange("sub_domain") { + input.SubDomainSettings = expandSubDomainSettings(d.Get("sub_domain").(*schema.Set).List()) + } + _, err := conn.UpdateDomainAssociationWithContext(ctx, input) if err != nil { @@ -198,7 +189,7 @@ func resourceDomainAssociationUpdate(ctx context.Context, d *schema.ResourceData if d.Get("wait_for_verification").(bool) { if _, err := waitDomainAssociationVerified(ctx, conn, appID, domainName); err != nil { - return sdkdiag.AppendErrorf(diags, "waiting for Amplify Domain Association (%s) to verify: %s", d.Id(), err) + return sdkdiag.AppendErrorf(diags, "waiting for Amplify Domain Association (%s) verification: %s", d.Id(), err) } } diff --git a/internal/service/amplify/domain_association_test.go b/internal/service/amplify/domain_association_test.go index c8663dad3f20..cd37763f89c9 100644 --- a/internal/service/amplify/domain_association_test.go +++ b/internal/service/amplify/domain_association_test.go @@ -41,12 +41,12 @@ func testAccDomainAssociation_basic(t *testing.T) { testAccCheckDomainAssociationExists(ctx, resourceName, &domain), acctest.MatchResourceAttrRegionalARN(resourceName, "arn", "amplify", regexp.MustCompile(`apps/.+/domains/.+`)), resource.TestCheckResourceAttr(resourceName, "domain_name", domainName), + resource.TestCheckResourceAttr(resourceName, "enable_auto_sub_domain", "false"), resource.TestCheckResourceAttr(resourceName, "sub_domain.#", "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "sub_domain.*", map[string]string{ "branch_name": rName, "prefix": "", }), - resource.TestCheckResourceAttr(resourceName, "enable_auto_sub_domain", "false"), resource.TestCheckResourceAttr(resourceName, "wait_for_verification", "false"), ), }, @@ -114,12 +114,12 @@ func testAccDomainAssociation_update(t *testing.T) { testAccCheckDomainAssociationExists(ctx, resourceName, &domain), acctest.MatchResourceAttrRegionalARN(resourceName, "arn", "amplify", regexp.MustCompile(`apps/.+/domains/.+`)), resource.TestCheckResourceAttr(resourceName, "domain_name", domainName), + resource.TestCheckResourceAttr(resourceName, "enable_auto_sub_domain", "false"), resource.TestCheckResourceAttr(resourceName, "sub_domain.#", "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "sub_domain.*", map[string]string{ "branch_name": rName, "prefix": "", }), - resource.TestCheckResourceAttr(resourceName, "enable_auto_sub_domain", "false"), resource.TestCheckResourceAttr(resourceName, "wait_for_verification", "true"), ), }, @@ -135,6 +135,7 @@ func testAccDomainAssociation_update(t *testing.T) { testAccCheckDomainAssociationExists(ctx, resourceName, &domain), acctest.MatchResourceAttrRegionalARN(resourceName, "arn", "amplify", regexp.MustCompile(`apps/.+/domains/.+`)), resource.TestCheckResourceAttr(resourceName, "domain_name", domainName), + resource.TestCheckResourceAttr(resourceName, "enable_auto_sub_domain", "true"), resource.TestCheckResourceAttr(resourceName, "sub_domain.#", "2"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "sub_domain.*", map[string]string{ "branch_name": rName, @@ -144,7 +145,6 @@ func testAccDomainAssociation_update(t *testing.T) { "branch_name": fmt.Sprintf("%s-2", rName), "prefix": "www", }), - resource.TestCheckResourceAttr(resourceName, "enable_auto_sub_domain", "true"), resource.TestCheckResourceAttr(resourceName, "wait_for_verification", "true"), ), },