diff --git a/internal/resources/cloud/resource_cloud_stack_service_account_test.go b/internal/resources/cloud/resource_cloud_stack_service_account_test.go index 0ca8d46b2..d7d5b4849 100644 --- a/internal/resources/cloud/resource_cloud_stack_service_account_test.go +++ b/internal/resources/cloud/resource_cloud_stack_service_account_test.go @@ -74,7 +74,7 @@ func TestAccGrafanaServiceAccountFromCloud_MigrateFrom213(t *testing.T) { testAccGrafanaAuthCheckServiceAccounts(&stack, []string{"management-sa"}), resource.TestCheckResourceAttr("grafana_cloud_stack_service_account.management", "name", "management-sa"), resource.TestCheckResourceAttr("grafana_cloud_stack_service_account.management", "role", "Admin"), - resource.TestCheckResourceAttr("grafana_cloud_stack_service_account.management", "is_disabled", "true"), + resource.TestCheckResourceAttr("grafana_cloud_stack_service_account.management", "is_disabled", "false"), resource.TestCheckResourceAttr("grafana_cloud_stack_service_account_token.management_token", "name", "management-sa-token"), resource.TestCheckNoResourceAttr("grafana_cloud_stack_service_account_token.management_token", "expiration"), resource.TestCheckResourceAttrSet("grafana_cloud_stack_service_account_token.management_token", "key"), @@ -88,7 +88,7 @@ func TestAccGrafanaServiceAccountFromCloud_MigrateFrom213(t *testing.T) { Steps: []resource.TestStep{ // Apply with 2.13.0 provider { - Config: testAccGrafanaServiceAccountFromCloud(slug, slug, true), + Config: testAccGrafanaServiceAccountFromCloud(slug, slug, false), ExternalProviders: map[string]resource.ExternalProvider{ "grafana": { VersionConstraint: "=2.13.0", @@ -99,7 +99,7 @@ func TestAccGrafanaServiceAccountFromCloud_MigrateFrom213(t *testing.T) { }, // Apply with latest provider { - Config: testAccGrafanaServiceAccountFromCloud(slug, slug, true), + Config: testAccGrafanaServiceAccountFromCloud(slug, slug, false), Check: check, ProtoV5ProviderFactories: testutils.ProtoV5ProviderFactories, }, @@ -121,6 +121,17 @@ func testAccGrafanaServiceAccountFromCloud(name, slug string, disabled bool) str service_account_id = grafana_cloud_stack_service_account.management.id name = "management-sa-token" } + + provider "grafana" { + alias = "stack" + auth = grafana_cloud_stack_service_account_token.management_token.key + url = grafana_cloud_stack.test.url + } + + resource "grafana_folder" "test" { + provider = grafana.stack + title = "test" + } `, disabled) } diff --git a/internal/resources/cloud/resource_cloud_stack_service_account_token.go b/internal/resources/cloud/resource_cloud_stack_service_account_token.go index 4a914dd56..31b29bd90 100644 --- a/internal/resources/cloud/resource_cloud_stack_service_account_token.go +++ b/internal/resources/cloud/resource_cloud_stack_service_account_token.go @@ -48,6 +48,12 @@ Required access policy scopes: Type: schema.TypeString, Required: true, ForceNew: true, + DiffSuppressFunc: func(k, old, new string, d *schema.ResourceData) bool { + // The service account ID is now possibly a composite ID that includes the stack slug + oldID, _ := getStackServiceAccountID(old) + newID, _ := getStackServiceAccountID(new) + return oldID == newID && oldID != 0 && newID != 0 + }, }, "seconds_to_live": { Type: schema.TypeInt,