diff --git a/.github/workflows/terraform_provider_pr.yml b/.github/workflows/terraform_provider_pr.yml index 365d908f..02952ed3 100644 --- a/.github/workflows/terraform_provider_pr.yml +++ b/.github/workflows/terraform_provider_pr.yml @@ -171,6 +171,17 @@ jobs: go-version-file: go.mod - run: EXECUTE_TESTS=true make testacc TESTARGS='-run="TestAccResourceRedisCloudProDatabase_Upgrade"' + go_test_privatelink: + name: go test smoke privatelink + needs: [ go_build ] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0 + with: + go-version-file: go.mod + - run: EXECUTE_TESTS=true make testacc TESTARGS='-run="TestAccResourceRedisCloudPrivateLink_CRUDI"' + tfproviderlint: name: tfproviderlint diff --git a/go.mod b/go.mod index d37976b4..99425538 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.24.0 toolchain go1.24.1 require ( - github.com/RedisLabs/rediscloud-go-api v0.36.4 + github.com/RedisLabs/rediscloud-go-api v0.36.5 github.com/bflad/tfproviderlint v0.31.0 github.com/hashicorp/go-cty v1.5.0 github.com/hashicorp/terraform-plugin-sdk/v2 v2.37.0 diff --git a/go.sum b/go.sum index c9cf4727..d5bae15f 100644 --- a/go.sum +++ b/go.sum @@ -4,8 +4,8 @@ github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERo github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/ProtonMail/go-crypto v1.1.6 h1:ZcV+Ropw6Qn0AX9brlQLAUXfqLBc7Bl+f/DmNxpLfdw= github.com/ProtonMail/go-crypto v1.1.6/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE= -github.com/RedisLabs/rediscloud-go-api v0.36.4 h1:EBoyJ3SyvfX4MjTB5MNs5s+hhYTVSVzjdhNtPJDcfMw= -github.com/RedisLabs/rediscloud-go-api v0.36.4/go.mod h1:Hkh3i/EsHnyfgV0ijednbofz/EmZC3sFnSNNruF3G6I= +github.com/RedisLabs/rediscloud-go-api v0.36.5 h1:zZ5C2+QHdfdlGqZDw3o2GMM7Wz5BhLUUW8U3yGFl1ck= +github.com/RedisLabs/rediscloud-go-api v0.36.5/go.mod h1:Hkh3i/EsHnyfgV0ijednbofz/EmZC3sFnSNNruF3G6I= github.com/agext/levenshtein v1.2.2 h1:0S/Yg6LYmFJ5stwQeRp6EeOcCbj7xiqQSdNelsXvaqE= github.com/agext/levenshtein v1.2.2/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJEynmyUenKwP++x/+DdGV/Ec= diff --git a/provider/privatelink/resource_rediscloud_active_active_private_link.go b/provider/privatelink/resource_rediscloud_active_active_private_link.go index 58c1b0ef..a8ab1156 100644 --- a/provider/privatelink/resource_rediscloud_active_active_private_link.go +++ b/provider/privatelink/resource_rediscloud_active_active_private_link.go @@ -5,6 +5,7 @@ import ( "errors" "regexp" "strconv" + "strings" "time" "github.com/RedisLabs/rediscloud-go-api/redis" @@ -65,7 +66,7 @@ func ResourceRedisCloudActiveActivePrivateLink() *schema.Resource { }, "principal_type": { Type: schema.TypeString, - ValidateDiagFunc: validation.ToDiagFunc(validation.StringMatch(regexp.MustCompile("^(aws_account|organization|organization_unit|iam_role|iam_user|service_principal)$"), "Must be an allowed Principal Type. ('aws_account', 'organization', 'organization_unit', 'iam_role', 'iam_user')'")), + ValidateDiagFunc: validation.ToDiagFunc(validation.StringMatch(regexp.MustCompile("^(aws_account|organization|organization_unit|iam_role|iam_user|service_principal)$"), "Must be an allowed Principal Type. ('aws_account', 'organization', 'organization_unit', 'iam_role', 'iam_user', 'service_principal')'")), Required: true, }, "principal_alias": { @@ -180,8 +181,6 @@ func resourceRedisCloudActiveActivePrivateLinkCreate(ctx context.Context, d *sch return diag.FromErr(err) } - d.SetId(strconv.Itoa(subId)) - err = waitForActiveActivePrivateLinkToBeActive(ctx, api, subId, regionId) if err != nil { @@ -212,13 +211,30 @@ func resourceRedisCloudActiveActivePrivateLinkRead(ctx context.Context, d *schem var diags diag.Diagnostics api := meta.(*client.ApiClient) - subId, err := strconv.Atoi(d.Get("subscription_id").(string)) + parts := strings.Split(d.Id(), "/") + if len(parts) != 2 { + return diag.Errorf("unexpected format of ID (%q), expected /", d.Id()) + } + subId, err := strconv.Atoi(parts[0]) + if err != nil { + return diag.FromErr(err) + } + regionId, err := strconv.Atoi(parts[1]) if err != nil { return diag.FromErr(err) } + err = d.Set("subscription_id", strconv.Itoa(subId)) - regionId := d.Get("region_id").(int) + if err != nil { + return diag.FromErr(err) + } + + err = d.Set("region_id", regionId) + + if err != nil { + return diag.FromErr(err) + } privateLinkId := makeActiveActivePrivateLinkId(subId, regionId) d.SetId(privateLinkId) @@ -233,8 +249,6 @@ func resourceRedisCloudActiveActivePrivateLinkRead(ctx context.Context, d *schem return diag.FromErr(err) } - d.SetId(strconv.Itoa(subId)) - err = d.Set("share_name", privateLink.ShareName) if err != nil { return diag.FromErr(err) diff --git a/provider/privatelink/resource_rediscloud_private_link.go b/provider/privatelink/resource_rediscloud_private_link.go index b3679775..be194c5f 100644 --- a/provider/privatelink/resource_rediscloud_private_link.go +++ b/provider/privatelink/resource_rediscloud_private_link.go @@ -59,7 +59,7 @@ func ResourceRedisCloudPrivateLink() *schema.Resource { }, "principal_type": { Type: schema.TypeString, - ValidateDiagFunc: validation.ToDiagFunc(validation.StringMatch(regexp.MustCompile("^(aws_account|organization|organization_unit|iam_role|iam_user|service_principal)$"), "must be 'credit-card' or 'marketplace'")), + ValidateDiagFunc: validation.ToDiagFunc(validation.StringMatch(regexp.MustCompile("^(aws_account|organization|organization_unit|iam_role|iam_user|service_principal)$"), "must be one of 'aws_account', 'organization', 'organization_unit', 'iam_role', 'iam_user', 'service_principal'")), Required: true, }, "principal_alias": { @@ -202,7 +202,10 @@ func resourceRedisCloudPrivateLinkRead(ctx context.Context, d *schema.ResourceDa var diags diag.Diagnostics api := meta.(*client.ApiClient) - subId, err := strconv.Atoi(d.Get("subscription_id").(string)) + subId, err := strconv.Atoi(d.Id()) + if err != nil { + return diag.FromErr(err) + } privateLink, err := api.Client.PrivateLink.GetPrivateLink(ctx, subId) @@ -217,6 +220,11 @@ func resourceRedisCloudPrivateLinkRead(ctx context.Context, d *schema.ResourceDa d.SetId(strconv.Itoa(subId)) + err = d.Set("subscription_id", strconv.Itoa(subId)) + if err != nil { + return diag.FromErr(err) + } + err = d.Set("share_name", privateLink.ShareName) if err != nil { return diag.FromErr(err) @@ -256,7 +264,7 @@ func resourceRedisCloudPrivateLinkUpdate(ctx context.Context, d *schema.Resource var diags diag.Diagnostics api := meta.(*client.ApiClient) - if d.HasChange("principals") { + if d.HasChange("principal") { subId, err := strconv.Atoi(d.Get("subscription_id").(string)) @@ -279,7 +287,7 @@ func resourceRedisCloudPrivateLinkUpdate(ctx context.Context, d *schema.Resource } apiPrincipals := privateLink.Principals - tfPrincipals := principalsFromSet(d.Get("principals").(*schema.Set)) + tfPrincipals := principalsFromSet(d.Get("principal").(*schema.Set)) principalsToCreate := findPrincipalsToCreate(apiPrincipals, tfPrincipals) err = createPrincipals(ctx, api, subId, principalsToCreate) @@ -337,7 +345,7 @@ func resourceRedisCloudPrivateLinkDelete(ctx context.Context, d *schema.Resource return diag.FromErr(err) } - return resourceRedisCloudPrivateLinkDelete(ctx, d, meta) + return diags } func createOtherPrincipals(ctx context.Context, api *client.ApiClient, subId int, otherPrincipals []pl.PrivateLinkPrincipal) error { diff --git a/provider/privatelink/testdata/testActiveActivePrivateLink.tf b/provider/privatelink/testdata/testActiveActivePrivateLink.tf index bc7ea7bc..056b09e0 100644 --- a/provider/privatelink/testdata/testActiveActivePrivateLink.tf +++ b/provider/privatelink/testdata/testActiveActivePrivateLink.tf @@ -3,8 +3,6 @@ locals { rediscloud_cloud_account = "%s" rediscloud_private_link_share_name = "%s" rediscloud_database_password = "%s" - rediscloud_principal_1 = "%s" - rediscloud_principal_2 = "%s" } data "rediscloud_payment_method" "card" { @@ -12,69 +10,80 @@ data "rediscloud_payment_method" "card" { last_four_numbers = "5556" } -data "rediscloud_cloud_account" "account" { - exclude_internal_account = true - provider_type = "AWS" - name = local.rediscloud_cloud_account -} -resource "rediscloud_active_active_subscription" "subscription" { +resource "rediscloud_active_active_subscription" "aa_subscription" { name = local.rediscloud_subscription_name + payment_method = "credit-card" payment_method_id = data.rediscloud_payment_method.card.id + cloud_provider = "AWS" - cloud_provider { - provider = data.rediscloud_cloud_account.account.provider_type - cloud_account_id = data.rediscloud_cloud_account.account.id + creation_plan { + memory_limit_in_gb = 1 + quantity = 1 region { - region = "eu-west-1" - networking_deployment_cidr = "10.0.0.0/24" - preferred_availability_zones = ["eu-west-1a"] + region = "eu-west-1" + networking_deployment_cidr = "192.168.0.0/24" + write_operations_per_second = 1000 + read_operations_per_second = 1000 + } + region { + region = "eu-west-2" + networking_deployment_cidr = "10.0.1.0/24" + write_operations_per_second = 1000 + read_operations_per_second = 1000 } - } - - creation_plan { - dataset_size_in_gb = 15 - quantity = 1 - replication = true - throughput_measurement_by = "operations-per-second" - throughput_measurement_value = 20000 } } -resource "rediscloud_active_active_subscription_database" "database_resource" { - subscription_id = rediscloud_active_active_subscription.subscription.id +resource "rediscloud_active_active_subscription_database" "aa_database" { + subscription_id = rediscloud_active_active_subscription.aa_subscription.id name = "db" memory_limit_in_gb = 1 global_data_persistence = "aof-every-1-second" global_password = local.rediscloud_database_password } -data "rediscloud_active_active_subscription_regions" "regions_info" { - subscription_name = rediscloud_active_active_subscription.subscription.name - depends_on = [rediscloud_active_active_subscription_database.database_resource] +data "rediscloud_active_active_subscription_regions" "aa_regions_info" { + subscription_name = rediscloud_active_active_subscription.aa_subscription.name + depends_on = [rediscloud_active_active_subscription_database.aa_database] } -resource "rediscloud_active_active_private_link" "private_link" { - subscription_id = rediscloud_active_active_subscription.subscription.id - share_name = local.rediscloud_private_link_share_name - region_id = data.rediscloud_active_active_subscription_regions.regions_info.regions[0].region_id + +resource "rediscloud_active_active_private_link" "aa_private_link" { + subscription_id = rediscloud_active_active_subscription.aa_subscription.id + region_id = data.rediscloud_active_active_subscription_regions.aa_regions_info.regions[0].region_id + share_name = "private_link testing" principal { - principal = local.rediscloud_principal_1 - principal_type = "aws_account" + principal = "123456789012" + principal_type = "aws_account" principal_alias = "terraform test aws account" } - principal { - principal = local.rediscloud_principal_2 - principal_type = "aws_account" + principal = "688576139039" + principal_type = "aws_account" principal_alias = "terraform test aws account 2" } } -data "rediscloud_active_active_private_link" "private_link" { - subscription_id = rediscloud_active_active_private_link.private_link.subscription_id - region_id = 1 +data "rediscloud_active_active_private_link" "aa_private_link" { + subscription_id = rediscloud_active_active_private_link.aa_private_link.subscription_id + region_id = data.rediscloud_active_active_subscription_regions.aa_regions_info.regions[0].region_id } +# data "rediscloud_private_link_endpoint_script" "endpoint_script" { +# subscription_id = rediscloud_private_link.private_link.subscription_id +# } + + +output "resource_aa_private_link" { + value = rediscloud_active_active_private_link.aa_private_link +} + +output "data_aa_private_link" { + value = data.rediscloud_active_active_private_link.aa_private_link +} +# output "endpoint_script" { +# value = data.rediscloud_private_link_endpoint_script.endpoint_script.endpoint_script +# } diff --git a/provider/privatelink/testdata/testPrivateLink.tf b/provider/privatelink/testdata/testPrivateLink.tf index 66729836..14b28e3d 100644 --- a/provider/privatelink/testdata/testPrivateLink.tf +++ b/provider/privatelink/testdata/testPrivateLink.tf @@ -1,70 +1,71 @@ -# locals { -# rediscloud_subscription_name = "%s" -# rediscloud_cloud_account = "%s" -# rediscloud_private_link_share_name = "%s" -# rediscloud_principal_1 = "%s" -# rediscloud_principal_2 = "%s" -# } -# -# data "rediscloud_payment_method" "card" { -# card_type = "Visa" -# last_four_numbers = "5556" -# } -# -# data "rediscloud_cloud_account" "account" { -# exclude_internal_account = true -# provider_type = "AWS" -# name = local.rediscloud_cloud_account -# } -# -# resource "rediscloud_subscription" "subscription" { -# name = local.rediscloud_subscription_name -# payment_method_id = data.rediscloud_payment_method.card.id -# -# cloud_provider { -# provider = data.rediscloud_cloud_account.account.provider_type -# cloud_account_id = data.rediscloud_cloud_account.account.id -# region { -# region = "eu-west-1" -# networking_deployment_cidr = "10.0.0.0/24" -# preferred_availability_zones = ["eu-west-1a"] -# } -# } -# -# creation_plan { -# dataset_size_in_gb = 15 -# quantity = 1 -# replication = true -# throughput_measurement_by = "operations-per-second" -# throughput_measurement_value = 20000 -# } -# } -# -# resource "rediscloud_private_link" "private_link" { -# subscription_id = rediscloud_subscription.subscription.id -# share_name = local.rediscloud_private_link_share_name -# -# principal { -# principal = local.rediscloud_principal_1 -# principal_type = "aws_account" -# principal_alias = "terraform test aws account" -# } -# -# principal { -# principal = local.rediscloud_principal_2 -# principal_type = "aws_account" -# principal_alias = "terraform test aws account 2" -# } -# } -# -# data "rediscloud_private_link" "private_link" { +locals { + rediscloud_subscription_name = "%s" + rediscloud_cloud_account = "%s" + rediscloud_private_link_share_name = "%s" +} + +data "rediscloud_payment_method" "card" { + card_type = "Visa" + last_four_numbers = "5556" +} + +data "rediscloud_cloud_account" "account" { + exclude_internal_account = true + provider_type = "AWS" + name = local.rediscloud_cloud_account +} + +resource "rediscloud_subscription" "pro_subscription" { + name = local.rediscloud_subscription_name + payment_method_id = data.rediscloud_payment_method.card.id + + cloud_provider { + provider = data.rediscloud_cloud_account.account.provider_type + cloud_account_id = data.rediscloud_cloud_account.account.id + region { + region = "eu-west-1" + networking_deployment_cidr = "10.0.0.0/24" + preferred_availability_zones = ["eu-west-1a"] + } + } + + creation_plan { + dataset_size_in_gb = 15 + quantity = 1 + replication = true + throughput_measurement_by = "operations-per-second" + throughput_measurement_value = 20000 + } +} + +resource "rediscloud_private_link" "pro_private_link" { + subscription_id = rediscloud_subscription.pro_subscription.id + share_name = local.rediscloud_private_link_share_name + + principal { + principal = "123456789012" + principal_type = "aws_account" + principal_alias = "principal 1" + } + + principal { + principal = "234567890123" + principal_type = "aws_account" + principal_alias = "principal 2" + } +} + +data "rediscloud_private_link" "pro_private_link" { + subscription_id = rediscloud_private_link.pro_private_link.subscription_id +} + +# not working yet +# data "rediscloud_private_link_endpoint_script" "endpoint_script" { # subscription_id = rediscloud_private_link.private_link.subscription_id # } # -# data "rediscloud_private_link_endpoint_script" "endpoint_script" { -# subscription_id = rediscloud_private_link.private_link.subscription_id +# output "endpoint_script" { +# value = data.rediscloud_private_link_endpoint_script.endpoint_script # } -data "rediscloud_private_link" "pro_private_link" { - subscription_id = "122401" -} + diff --git a/provider/privatelink/utils.go b/provider/privatelink/utils.go index c4876990..74e69788 100644 --- a/provider/privatelink/utils.go +++ b/provider/privatelink/utils.go @@ -158,9 +158,9 @@ func flattenConnections(connections []*pl.PrivateLinkConnection) []map[string]in for _, connection := range connections { tf := map[string]interface{}{ "association_id": redis.StringValue(connection.AssociationId), - "connection_id": redis.IntValue(connection.ConnectionId), + "connection_id": redis.StringValue(connection.ConnectionId), "type": redis.StringValue(connection.Type), - "owner_id": redis.IntValue(connection.OwnerId), + "owner_id": redis.StringValue(connection.OwnerId), "association_date": redis.StringValue(connection.AssociationDate), } tfs = append(tfs, tf) diff --git a/provider/rediscloud_active_active_private_link_test.go b/provider/rediscloud_active_active_private_link_test.go index 91a42940..f1629515 100644 --- a/provider/rediscloud_active_active_private_link_test.go +++ b/provider/rediscloud_active_active_private_link_test.go @@ -17,13 +17,10 @@ func TestAccResourceRedisCloudActiveActivePrivateLink_CRUDI(t *testing.T) { password := acctest.RandString(20) - principal1 := "123456789012" - principal2 := "234567890123" - const resourceName = "rediscloud_private_link.private_link" const datasourceName = "data.rediscloud_private_link.private_link" shareName := acctest.RandomWithPrefix(testResourcePrefix) + "privatelink-active-active_test-share" - terraformConfig := getRedisActiveActivePrivateLinkConfig(t, testActiveActivePrivateLinkConfigFile, shareName, password, principal1, principal2) + terraformConfig := getRedisActiveActivePrivateLinkConfig(t, testActiveActivePrivateLinkConfigFile, shareName, password) resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, @@ -35,23 +32,25 @@ func TestAccResourceRedisCloudActiveActivePrivateLink_CRUDI(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttrSet(resourceName, "id"), resource.TestCheckResourceAttrSet(resourceName, "subscription_id"), - resource.TestCheckResourceAttr(resourceName, "share_name", shareName), - resource.TestCheckResourceAttrSet(resourceName, "principal"), + resource.TestCheckResourceAttrSet(resourceName, "share_name"), + resource.TestCheckResourceAttrSet(resourceName, "region_id"), + resource.TestCheckResourceAttr(resourceName, "principal.#", "2"), resource.TestCheckResourceAttrSet(resourceName, "resource_configuration_id"), resource.TestCheckResourceAttrSet(resourceName, "resource_configuration_arn"), resource.TestCheckResourceAttrSet(resourceName, "share_arn"), - resource.TestCheckResourceAttrSet(resourceName, "connections"), - resource.TestCheckResourceAttrSet(resourceName, "databases"), + resource.TestCheckResourceAttr(resourceName, "connections.#", "0"), + resource.TestCheckResourceAttr(resourceName, "databases.#", "1"), resource.TestCheckResourceAttrSet(datasourceName, "id"), resource.TestCheckResourceAttrSet(datasourceName, "subscription_id"), - resource.TestCheckResourceAttr(datasourceName, "share_name", shareName), - resource.TestCheckResourceAttrSet(datasourceName, "principal"), + resource.TestCheckResourceAttrSet(datasourceName, "region_id"), + resource.TestCheckResourceAttr(datasourceName, "principals.#", "2"), + resource.TestCheckResourceAttrSet(datasourceName, "resource_configuration_id"), resource.TestCheckResourceAttrSet(datasourceName, "resource_configuration_arn"), resource.TestCheckResourceAttrSet(datasourceName, "share_arn"), - resource.TestCheckResourceAttrSet(datasourceName, "connections"), - resource.TestCheckResourceAttrSet(datasourceName, "databases"), + resource.TestCheckResourceAttr(datasourceName, "connections.#", "0"), + resource.TestCheckResourceAttr(datasourceName, "databases.#", "1"), ), }, { @@ -63,7 +62,7 @@ func TestAccResourceRedisCloudActiveActivePrivateLink_CRUDI(t *testing.T) { }) } -func getRedisActiveActivePrivateLinkConfig(t *testing.T, testFile, shareName, password, principal1, principal2 string) string { +func getRedisActiveActivePrivateLinkConfig(t *testing.T, testFile, shareName, password string) string { subName := acctest.RandomWithPrefix(testResourcePrefix) + "-aa-private-link" exampleCloudAccountName := os.Getenv("AWS_TEST_CLOUD_ACCOUNT_NAME") @@ -72,5 +71,5 @@ func getRedisActiveActivePrivateLinkConfig(t *testing.T, testFile, shareName, pa t.Fatalf("failed to read file: %v", err) } - return fmt.Sprintf(string(content), subName, exampleCloudAccountName, shareName, password, principal1, principal2) + return fmt.Sprintf(string(content), subName, exampleCloudAccountName, shareName, password) } diff --git a/provider/rediscloud_private_link_test.go b/provider/rediscloud_private_link_test.go index 977d3d23..91c2cf60 100644 --- a/provider/rediscloud_private_link_test.go +++ b/provider/rediscloud_private_link_test.go @@ -2,10 +2,10 @@ package provider import ( "fmt" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest" "os" "testing" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -32,24 +32,25 @@ func TestAccResourceRedisCloudPrivateLink_CRUDI(t *testing.T) { { Config: terraformConfig, Check: resource.ComposeAggregateTestCheckFunc( - //resource.TestCheckResourceAttrSet(resourceName, "id"), - //resource.TestCheckResourceAttrSet(resourceName, "subscription_id"), - //resource.TestCheckResourceAttrSet(resourceName, "share_name"), - //resource.TestCheckResourceAttrSet(resourceName, "principal"), - //resource.TestCheckResourceAttrSet(resourceName, "resource_configuration_id"), - //resource.TestCheckResourceAttrSet(resourceName, "resource_configuration_arn"), - //resource.TestCheckResourceAttrSet(resourceName, "share_arn"), - //resource.TestCheckResourceAttrSet(resourceName, "connections"), - //resource.TestCheckResourceAttrSet(resourceName, "databases"), + resource.TestCheckResourceAttrSet(resourceName, "id"), + resource.TestCheckResourceAttrSet(resourceName, "subscription_id"), + resource.TestCheckResourceAttrSet(resourceName, "share_name"), + resource.TestCheckResourceAttr(resourceName, "principal.#", "2"), + resource.TestCheckResourceAttrSet(resourceName, "resource_configuration_id"), + resource.TestCheckResourceAttrSet(resourceName, "resource_configuration_arn"), + resource.TestCheckResourceAttrSet(resourceName, "share_arn"), + resource.TestCheckResourceAttr(resourceName, "connections.#", "0"), + resource.TestCheckResourceAttr(resourceName, "databases.#", "0"), resource.TestCheckResourceAttrSet(datasourceName, "id"), resource.TestCheckResourceAttrSet(datasourceName, "subscription_id"), - resource.TestCheckResourceAttrSet(datasourceName, "principal"), + resource.TestCheckResourceAttr(datasourceName, "principals.#", "2"), + resource.TestCheckResourceAttrSet(datasourceName, "resource_configuration_id"), resource.TestCheckResourceAttrSet(datasourceName, "resource_configuration_arn"), resource.TestCheckResourceAttrSet(datasourceName, "share_arn"), - resource.TestCheckResourceAttrSet(datasourceName, "connections"), - resource.TestCheckResourceAttrSet(datasourceName, "databases"), + resource.TestCheckResourceAttr(datasourceName, "connections.#", "0"), + resource.TestCheckResourceAttr(datasourceName, "databases.#", "0"), //resource.TestCheckResourceAttrSet(datasourceScriptName, "id"), //resource.TestCheckResourceAttrSet(datasourceScriptName, "subscription_id"), @@ -69,9 +70,6 @@ func getRedisPrivateLinkConfig(t *testing.T, shareName string) string { subName := acctest.RandomWithPrefix(testResourcePrefix) + "-pro-private-link" exampleCloudAccountName := os.Getenv("AWS_TEST_CLOUD_ACCOUNT_NAME") - principal1 := "123456789012" - principal2 := "234567890123" - content := getTestConfig(t, testPrivateLinkConfigFile) - return fmt.Sprintf(content, subName, exampleCloudAccountName, shareName, principal1, principal2) + return fmt.Sprintf(content, subName, exampleCloudAccountName, shareName) }