diff --git a/.changelog/20819.txt b/.changelog/20819.txt new file mode 100644 index 000000000000..40b4e61e5d37 --- /dev/null +++ b/.changelog/20819.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +data-source/aws_directory_service_directory: Set `dns_ip_addresses` to the owner directory's DNS IP addresses for SharedMicrosoftAD directories +``` \ No newline at end of file diff --git a/internal/service/ds/directory_data_source.go b/internal/service/ds/directory_data_source.go index 303ff84cdc90..84a0f3975537 100644 --- a/internal/service/ds/directory_data_source.go +++ b/internal/service/ds/directory_data_source.go @@ -151,6 +151,8 @@ func dataSourceDirectoryRead(d *schema.ResourceData, meta interface{}) error { d.Set("description", dir.Description) if aws.StringValue(dir.Type) == directoryservice.DirectoryTypeAdconnector { d.Set("dns_ip_addresses", aws.StringValueSlice(dir.ConnectSettings.ConnectIps)) + } else if aws.StringValue(dir.Type) == directoryservice.DirectoryTypeSharedMicrosoftAd { + d.Set("dns_ip_addresses", aws.StringValueSlice(dir.OwnerDirectoryDescription.DnsIpAddrs)) } else { d.Set("dns_ip_addresses", aws.StringValueSlice(dir.DnsIpAddrs)) } @@ -159,8 +161,10 @@ func dataSourceDirectoryRead(d *schema.ResourceData, meta interface{}) error { d.Set("name", dir.Name) if aws.StringValue(dir.Type) == directoryservice.DirectoryTypeAdconnector { d.Set("security_group_id", dir.ConnectSettings.SecurityGroupId) - } else { + } else if dir.VpcSettings != nil { d.Set("security_group_id", dir.VpcSettings.SecurityGroupId) + } else { + d.Set("security_group_id", nil) } d.Set("short_name", dir.ShortName) d.Set("size", dir.Size) diff --git a/internal/service/ds/directory_data_source_test.go b/internal/service/ds/directory_data_source_test.go index 99e5875a924c..b5cb8319997e 100644 --- a/internal/service/ds/directory_data_source_test.go +++ b/internal/service/ds/directory_data_source_test.go @@ -133,6 +133,32 @@ func TestAccDSDirectoryDataSource_connector(t *testing.T) { }) } +func TestAccDSDirectoryDataSource_sharedMicrosoftAD(t *testing.T) { + resourceName := "aws_directory_service_directory.test" + dataSourceName := "data.aws_directory_service_directory.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + domainName := acctest.RandomDomainName() + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { + acctest.PreCheck(t) + acctest.PreCheckDirectoryService(t) + acctest.PreCheckAlternateAccount(t) + }, + ErrorCheck: acctest.ErrorCheck(t, directoryservice.EndpointsID), + ProtoV5ProviderFactories: acctest.ProtoV5FactoriesAlternate(t), + Steps: []resource.TestStep{ + { + Config: testAccDirectoryDataSourceConfig_sharedMicrosoftAD(rName, domainName), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttrPair(resourceName, "dns_ip_addresses.#", dataSourceName, "dns_ip_addresses.#"), + resource.TestCheckResourceAttr(dataSourceName, "type", "SharedMicrosoftAD"), + ), + }, + }, + }) +} + func testAccDirectoryDataSourceConfig_simpleAD(rName, alias, domain string) string { return acctest.ConfigCompose(acctest.ConfigVPCWithSubnets(rName, 2), fmt.Sprintf(` data "aws_directory_service_directory" "test" { @@ -215,3 +241,19 @@ resource "aws_directory_service_directory" "base" { } `, domain)) } + +func testAccDirectoryDataSourceConfig_sharedMicrosoftAD(rName, domain string) string { + return acctest.ConfigCompose(testAccSharedDirectoryConfig_basic(rName, domain), ` +resource "aws_directory_service_shared_directory_accepter" "test" { + provider = "awsalternate" + + shared_directory_id = aws_directory_service_shared_directory.test.shared_directory_id +} + +data "aws_directory_service_directory" "test" { + provider = "awsalternate" + + directory_id = aws_directory_service_shared_directory_accepter.test.shared_directory_id +} +`) +}