diff --git a/.changelog/32342.txt b/.changelog/32342.txt new file mode 100644 index 000000000000..efb4e943c6ec --- /dev/null +++ b/.changelog/32342.txt @@ -0,0 +1,7 @@ +```release-note:enhancement +resource/aws_service_discovery_private_dns_namespace: Allow `description` to be updated in-place +``` + +```release-note:enhancement +resource/aws_service_discovery_public_dns_namespace: Allow `description` to be updated in-place +``` \ No newline at end of file diff --git a/internal/service/servicediscovery/private_dns_namespace.go b/internal/service/servicediscovery/private_dns_namespace.go index be42dab26eda..3b047e6d9071 100644 --- a/internal/service/servicediscovery/private_dns_namespace.go +++ b/internal/service/servicediscovery/private_dns_namespace.go @@ -47,7 +47,6 @@ func ResourcePrivateDNSNamespace() *schema.Resource { "description": { Type: schema.TypeString, Optional: true, - ForceNew: true, }, "hosted_zone": { Type: schema.TypeString, @@ -87,7 +86,6 @@ func resourcePrivateDNSNamespaceCreate(ctx context.Context, d *schema.ResourceDa input.Description = aws.String(v.(string)) } - log.Printf("[DEBUG] Creating Service Discovery Private DNS Namespace: %s", input) output, err := conn.CreatePrivateDnsNamespaceWithContext(ctx, input) if err != nil { @@ -140,7 +138,30 @@ func resourcePrivateDNSNamespaceRead(ctx context.Context, d *schema.ResourceData } func resourcePrivateDNSNamespaceUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - // Tags only. + conn := meta.(*conns.AWSClient).ServiceDiscoveryConn(ctx) + + if d.HasChange("description") { + input := &servicediscovery.UpdatePrivateDnsNamespaceInput{ + Id: aws.String(d.Id()), + Namespace: &servicediscovery.PrivateDnsNamespaceChange{ + Description: aws.String(d.Get("description").(string)), + }, + UpdaterRequestId: aws.String(id.UniqueId()), + } + + output, err := conn.UpdatePrivateDnsNamespaceWithContext(ctx, input) + + if err != nil { + return diag.Errorf("updating Service Discovery Private DNS Namespace (%s): %s", d.Id(), err) + } + + if output != nil && output.OperationId != nil { + if _, err := WaitOperationSuccess(ctx, conn, aws.StringValue(output.OperationId)); err != nil { + return diag.Errorf("waiting for Service Discovery Private DNS Namespace (%s) update: %s", d.Id(), err) + } + } + } + return resourcePrivateDNSNamespaceRead(ctx, d, meta) } diff --git a/internal/service/servicediscovery/private_dns_namespace_test.go b/internal/service/servicediscovery/private_dns_namespace_test.go index 0363a200c71f..7e5a83ea9c50 100644 --- a/internal/service/servicediscovery/private_dns_namespace_test.go +++ b/internal/service/servicediscovery/private_dns_namespace_test.go @@ -94,10 +94,17 @@ func TestAccServiceDiscoveryPrivateDNSNamespace_description(t *testing.T) { CheckDestroy: testAccCheckPrivateDNSNamespaceDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccPrivateDNSNamespaceConfig_description(rName, "test"), + Config: testAccPrivateDNSNamespaceConfig_description(rName, "desc1"), Check: resource.ComposeTestCheckFunc( testAccCheckPrivateDNSNamespaceExists(ctx, resourceName), - resource.TestCheckResourceAttr(resourceName, "description", "test"), + resource.TestCheckResourceAttr(resourceName, "description", "desc1"), + ), + }, + { + Config: testAccPrivateDNSNamespaceConfig_description(rName, "desc2"), + Check: resource.ComposeTestCheckFunc( + testAccCheckPrivateDNSNamespaceExists(ctx, resourceName), + resource.TestCheckResourceAttr(resourceName, "description", "desc2"), ), }, }, diff --git a/internal/service/servicediscovery/public_dns_namespace.go b/internal/service/servicediscovery/public_dns_namespace.go index d7ae35bcc8d3..82b5e19a28cf 100644 --- a/internal/service/servicediscovery/public_dns_namespace.go +++ b/internal/service/servicediscovery/public_dns_namespace.go @@ -37,7 +37,6 @@ func ResourcePublicDNSNamespace() *schema.Resource { "description": { Type: schema.TypeString, Optional: true, - ForceNew: true, }, "hosted_zone": { Type: schema.TypeString, @@ -71,7 +70,6 @@ func resourcePublicDNSNamespaceCreate(ctx context.Context, d *schema.ResourceDat input.Description = aws.String(v.(string)) } - log.Printf("[DEBUG] Creating Service Discovery Public DNS Namespace: %s", input) output, err := conn.CreatePublicDnsNamespaceWithContext(ctx, input) if err != nil { @@ -124,7 +122,30 @@ func resourcePublicDNSNamespaceRead(ctx context.Context, d *schema.ResourceData, } func resourcePublicDNSNamespaceUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - // Tags only. + conn := meta.(*conns.AWSClient).ServiceDiscoveryConn(ctx) + + if d.HasChange("description") { + input := &servicediscovery.UpdatePublicDnsNamespaceInput{ + Id: aws.String(d.Id()), + Namespace: &servicediscovery.PublicDnsNamespaceChange{ + Description: aws.String(d.Get("description").(string)), + }, + UpdaterRequestId: aws.String(id.UniqueId()), + } + + output, err := conn.UpdatePublicDnsNamespaceWithContext(ctx, input) + + if err != nil { + return diag.Errorf("updating Service Discovery Public DNS Namespace (%s): %s", d.Id(), err) + } + + if output != nil && output.OperationId != nil { + if _, err := WaitOperationSuccess(ctx, conn, aws.StringValue(output.OperationId)); err != nil { + return diag.Errorf("waiting for Service Discovery Public DNS Namespace (%s) update: %s", d.Id(), err) + } + } + } + return resourcePublicDNSNamespaceRead(ctx, d, meta) } diff --git a/internal/service/servicediscovery/public_dns_namespace_test.go b/internal/service/servicediscovery/public_dns_namespace_test.go index ad34259131f6..b37d9aad5e6e 100644 --- a/internal/service/servicediscovery/public_dns_namespace_test.go +++ b/internal/service/servicediscovery/public_dns_namespace_test.go @@ -93,10 +93,17 @@ func TestAccServiceDiscoveryPublicDNSNamespace_description(t *testing.T) { CheckDestroy: testAccCheckPublicDNSNamespaceDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccPublicDNSNamespaceConfig_description(rName, "test"), + Config: testAccPublicDNSNamespaceConfig_description(rName, "desc1"), Check: resource.ComposeTestCheckFunc( testAccCheckPublicDNSNamespaceExists(ctx, resourceName), - resource.TestCheckResourceAttr(resourceName, "description", "test"), + resource.TestCheckResourceAttr(resourceName, "description", "desc1"), + ), + }, + { + Config: testAccPublicDNSNamespaceConfig_description(rName, "desc2"), + Check: resource.ComposeTestCheckFunc( + testAccCheckPublicDNSNamespaceExists(ctx, resourceName), + resource.TestCheckResourceAttr(resourceName, "description", "desc2"), ), }, },