Skip to content

Commit d861ca8

Browse files
authored
dashboard / databasemigration / databoxedge / databricks / dataprotection / datashare - Add Terraform Resource Identity where possible (hashicorp#31513)
1 parent c7806eb commit d861ca8

File tree

69 files changed

+1556
-217
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

69 files changed

+1556
-217
lines changed

internal/services/dashboard/dashboard_grafana_managed_private_endpoint_resource.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
"github.com/hashicorp/go-azure-helpers/lang/response"
1414
"github.com/hashicorp/go-azure-helpers/resourcemanager/commonschema"
1515
"github.com/hashicorp/go-azure-helpers/resourcemanager/location"
16+
"github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids"
1617
"github.com/hashicorp/go-azure-sdk/resource-manager/dashboard/2025-08-01/managedgrafanas"
1718
"github.com/hashicorp/go-azure-sdk/resource-manager/dashboard/2025-08-01/managedprivateendpointmodels"
1819
"github.com/hashicorp/terraform-provider-azurerm/helpers/azure"
@@ -21,8 +22,19 @@ import (
2122
"github.com/hashicorp/terraform-provider-azurerm/internal/tf/validation"
2223
)
2324

25+
//go:generate go run ../../tools/generator-tests resourceidentity -resource-name dashboard_grafana_managed_private_endpoint -service-package-name dashboard -properties "name" -compare-values "resource_group_name:grafana_id,grafana_name:grafana_id" -known-values "subscription_id:data.Subscriptions.Primary"
26+
2427
type ManagedPrivateEndpointResource struct{}
2528

29+
var (
30+
_ sdk.Resource = ManagedPrivateEndpointResource{}
31+
_ sdk.ResourceWithIdentity = ManagedPrivateEndpointResource{}
32+
)
33+
34+
func (r ManagedPrivateEndpointResource) Identity() resourceids.ResourceId {
35+
return &managedprivateendpointmodels.ManagedPrivateEndpointId{}
36+
}
37+
2638
type ManagedPrivateEndpointModel struct {
2739
Name string `tfschema:"name"`
2840
Location string `tfschema:"location"`
@@ -165,6 +177,9 @@ func (r ManagedPrivateEndpointResource) Create() sdk.ResourceFunc {
165177
}
166178

167179
metadata.SetID(id)
180+
if err := pluginsdk.SetResourceIdentityData(metadata.ResourceData, &id); err != nil {
181+
return err
182+
}
168183

169184
return nil
170185
},
@@ -208,6 +223,10 @@ func (r ManagedPrivateEndpointResource) Read() sdk.ResourceFunc {
208223
}
209224
}
210225

226+
if err := pluginsdk.SetResourceIdentityData(metadata.ResourceData, id); err != nil {
227+
return err
228+
}
229+
211230
return metadata.Encode(&state)
212231
},
213232
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
// Copyright IBM Corp. 2014, 2025
2+
// SPDX-License-Identifier: MPL-2.0
3+
4+
package dashboard_test
5+
6+
import (
7+
"context"
8+
"testing"
9+
10+
"github.com/hashicorp/go-version"
11+
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
12+
"github.com/hashicorp/terraform-plugin-testing/knownvalue"
13+
"github.com/hashicorp/terraform-plugin-testing/statecheck"
14+
"github.com/hashicorp/terraform-plugin-testing/tfjsonpath"
15+
"github.com/hashicorp/terraform-plugin-testing/tfversion"
16+
"github.com/hashicorp/terraform-provider-azurerm/internal/acceptance"
17+
customstatecheck "github.com/hashicorp/terraform-provider-azurerm/internal/acceptance/statecheck"
18+
"github.com/hashicorp/terraform-provider-azurerm/internal/provider/framework"
19+
)
20+
21+
func TestAccDashboardGrafanaManagedPrivateEndpoint_resourceIdentity(t *testing.T) {
22+
data := acceptance.BuildTestData(t, "azurerm_dashboard_grafana_managed_private_endpoint", "test")
23+
r := DashboardGrafanaManagedPrivateEndpointResource{}
24+
25+
resource.ParallelTest(t, resource.TestCase{
26+
TerraformVersionChecks: []tfversion.TerraformVersionCheck{
27+
tfversion.SkipBelow(version.Must(version.NewVersion("1.12.0-rc2"))),
28+
},
29+
ProtoV5ProviderFactories: framework.ProtoV5ProviderFactoriesInit(context.Background(), "azurerm"),
30+
Steps: []resource.TestStep{
31+
{
32+
Config: r.basic(data),
33+
ConfigStateChecks: []statecheck.StateCheck{
34+
statecheck.ExpectIdentityValue("azurerm_dashboard_grafana_managed_private_endpoint.test", tfjsonpath.New("subscription_id"), knownvalue.StringExact(data.Subscriptions.Primary)),
35+
statecheck.ExpectIdentityValueMatchesStateAtPath("azurerm_dashboard_grafana_managed_private_endpoint.test", tfjsonpath.New("name"), tfjsonpath.New("name")),
36+
customstatecheck.ExpectStateContainsIdentityValueAtPath("azurerm_dashboard_grafana_managed_private_endpoint.test", tfjsonpath.New("grafana_name"), tfjsonpath.New("grafana_id")),
37+
customstatecheck.ExpectStateContainsIdentityValueAtPath("azurerm_dashboard_grafana_managed_private_endpoint.test", tfjsonpath.New("resource_group_name"), tfjsonpath.New("grafana_id")),
38+
},
39+
},
40+
data.ImportBlockWithResourceIdentityStep(false),
41+
data.ImportBlockWithIDStep(false),
42+
},
43+
})
44+
}

internal/services/dashboard/dashboard_grafana_managed_private_endpoint_resource_test.go

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@ import (
1616
"github.com/hashicorp/terraform-provider-azurerm/internal/tf/pluginsdk"
1717
)
1818

19-
type ManagedPrivateEndpointResource struct{}
19+
type DashboardGrafanaManagedPrivateEndpointResource struct{}
2020

2121
func TestAccDashboardGrafanaManagedPrivateEndpoint_basic(t *testing.T) {
2222
data := acceptance.BuildTestData(t, "azurerm_dashboard_grafana_managed_private_endpoint", "test")
23-
r := ManagedPrivateEndpointResource{}
23+
r := DashboardGrafanaManagedPrivateEndpointResource{}
2424
data.ResourceSequentialTest(t, r, []acceptance.TestStep{
2525
{
2626
Config: r.basic(data),
@@ -34,7 +34,7 @@ func TestAccDashboardGrafanaManagedPrivateEndpoint_basic(t *testing.T) {
3434

3535
func TestAccDashboardGrafanaManagedPrivateEndpoint_requiresImport(t *testing.T) {
3636
data := acceptance.BuildTestData(t, "azurerm_dashboard_grafana_managed_private_endpoint", "test")
37-
r := ManagedPrivateEndpointResource{}
37+
r := DashboardGrafanaManagedPrivateEndpointResource{}
3838
data.ResourceSequentialTest(t, r, []acceptance.TestStep{
3939
{
4040
Config: r.basic(data),
@@ -48,7 +48,7 @@ func TestAccDashboardGrafanaManagedPrivateEndpoint_requiresImport(t *testing.T)
4848

4949
func TestAccDashboardGrafanaManagedPrivateEndpoint_complete(t *testing.T) {
5050
data := acceptance.BuildTestData(t, "azurerm_dashboard_grafana_managed_private_endpoint", "test")
51-
r := ManagedPrivateEndpointResource{}
51+
r := DashboardGrafanaManagedPrivateEndpointResource{}
5252
data.ResourceSequentialTest(t, r, []acceptance.TestStep{
5353
{
5454
Config: r.complete(data),
@@ -61,7 +61,7 @@ func TestAccDashboardGrafanaManagedPrivateEndpoint_complete(t *testing.T) {
6161

6262
func TestAccDashboardGrafanaManagedPrivateEndpoint_update(t *testing.T) {
6363
data := acceptance.BuildTestData(t, "azurerm_dashboard_grafana_managed_private_endpoint", "test")
64-
r := ManagedPrivateEndpointResource{}
64+
r := DashboardGrafanaManagedPrivateEndpointResource{}
6565
data.ResourceSequentialTest(t, r, []acceptance.TestStep{
6666
{
6767
Config: r.complete(data),
@@ -78,7 +78,7 @@ func TestAccDashboardGrafanaManagedPrivateEndpoint_update(t *testing.T) {
7878
})
7979
}
8080

81-
func (r ManagedPrivateEndpointResource) Exists(ctx context.Context, clients *clients.Client, state *pluginsdk.InstanceState) (*bool, error) {
81+
func (r DashboardGrafanaManagedPrivateEndpointResource) Exists(ctx context.Context, clients *clients.Client, state *pluginsdk.InstanceState) (*bool, error) {
8282
id, err := managedprivateendpointmodels.ParseManagedPrivateEndpointID(state.ID)
8383
if err != nil {
8484
return nil, err
@@ -92,7 +92,7 @@ func (r ManagedPrivateEndpointResource) Exists(ctx context.Context, clients *cli
9292
return pointer.To(resp.Model != nil), nil
9393
}
9494

95-
func (r ManagedPrivateEndpointResource) template(data acceptance.TestData) string {
95+
func (r DashboardGrafanaManagedPrivateEndpointResource) template(data acceptance.TestData) string {
9696
return fmt.Sprintf(`
9797
provider "azurerm" {
9898
features {}
@@ -118,7 +118,7 @@ resource "azurerm_monitor_workspace" "test" {
118118
`, data.RandomInteger, data.Locations.Primary, data.RandomInteger, data.RandomInteger)
119119
}
120120

121-
func (r ManagedPrivateEndpointResource) basic(data acceptance.TestData) string {
121+
func (r DashboardGrafanaManagedPrivateEndpointResource) basic(data acceptance.TestData) string {
122122
template := r.template(data)
123123
return fmt.Sprintf(`
124124
%s
@@ -134,7 +134,7 @@ resource "azurerm_dashboard_grafana_managed_private_endpoint" "test" {
134134
`, template, data.RandomIntOfLength(8))
135135
}
136136

137-
func (r ManagedPrivateEndpointResource) requiresImport(data acceptance.TestData) string {
137+
func (r DashboardGrafanaManagedPrivateEndpointResource) requiresImport(data acceptance.TestData) string {
138138
config := r.basic(data)
139139
return fmt.Sprintf(`
140140
%s
@@ -148,7 +148,7 @@ resource "azurerm_dashboard_grafana_managed_private_endpoint" "import" {
148148
`, config)
149149
}
150150

151-
func (r ManagedPrivateEndpointResource) complete(data acceptance.TestData) string {
151+
func (r DashboardGrafanaManagedPrivateEndpointResource) complete(data acceptance.TestData) string {
152152
template := r.template(data)
153153
return fmt.Sprintf(`
154154
%s
@@ -172,7 +172,7 @@ resource "azurerm_dashboard_grafana_managed_private_endpoint" "test" {
172172
`, template, data.RandomIntOfLength(8))
173173
}
174174

175-
func (r ManagedPrivateEndpointResource) update(data acceptance.TestData) string {
175+
func (r DashboardGrafanaManagedPrivateEndpointResource) update(data acceptance.TestData) string {
176176
template := r.template(data)
177177
return fmt.Sprintf(`
178178
%s

internal/services/dashboard/dashboard_grafana_resource.go

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,16 @@ import (
1414
"github.com/hashicorp/go-azure-helpers/resourcemanager/commonschema"
1515
"github.com/hashicorp/go-azure-helpers/resourcemanager/identity"
1616
"github.com/hashicorp/go-azure-helpers/resourcemanager/location"
17+
"github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids"
1718
"github.com/hashicorp/go-azure-sdk/resource-manager/dashboard/2025-08-01/managedgrafanas"
1819
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1920
"github.com/hashicorp/terraform-provider-azurerm/internal/sdk"
2021
"github.com/hashicorp/terraform-provider-azurerm/internal/tf/pluginsdk"
2122
"github.com/hashicorp/terraform-provider-azurerm/internal/tf/validation"
2223
)
2324

25+
//go:generate go run ../../tools/generator-tests resourceidentity -resource-name dashboard_grafana -service-package-name dashboard -properties "name,resource_group_name" -known-values "subscription_id:data.Subscriptions.Primary"
26+
2427
type DashboardGrafanaModel struct {
2528
Name string `tfschema:"name"`
2629
ResourceGroupName string `tfschema:"resource_group_name"`
@@ -57,7 +60,14 @@ type SMTPConfigurationModel struct {
5760

5861
type DashboardGrafanaResource struct{}
5962

60-
var _ sdk.ResourceWithUpdate = DashboardGrafanaResource{}
63+
var (
64+
_ sdk.ResourceWithUpdate = DashboardGrafanaResource{}
65+
_ sdk.ResourceWithIdentity = DashboardGrafanaResource{}
66+
)
67+
68+
func (r DashboardGrafanaResource) Identity() resourceids.ResourceId {
69+
return &managedgrafanas.GrafanaId{}
70+
}
6171

6272
func (r DashboardGrafanaResource) ResourceType() string {
6373
return "azurerm_dashboard_grafana"
@@ -306,6 +316,9 @@ func (r DashboardGrafanaResource) Create() sdk.ResourceFunc {
306316
}
307317

308318
metadata.SetID(id)
319+
if err := pluginsdk.SetResourceIdentityData(metadata.ResourceData, &id); err != nil {
320+
return err
321+
}
309322
return nil
310323
},
311324
}
@@ -500,6 +513,10 @@ func (r DashboardGrafanaResource) Read() sdk.ResourceFunc {
500513
state.Tags = *model.Tags
501514
}
502515

516+
if err := pluginsdk.SetResourceIdentityData(metadata.ResourceData, id); err != nil {
517+
return err
518+
}
519+
503520
return metadata.Encode(&state)
504521
},
505522
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
// Copyright IBM Corp. 2014, 2025
2+
// SPDX-License-Identifier: MPL-2.0
3+
4+
package dashboard_test
5+
6+
import (
7+
"context"
8+
"testing"
9+
10+
"github.com/hashicorp/go-version"
11+
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
12+
"github.com/hashicorp/terraform-plugin-testing/knownvalue"
13+
"github.com/hashicorp/terraform-plugin-testing/statecheck"
14+
"github.com/hashicorp/terraform-plugin-testing/tfjsonpath"
15+
"github.com/hashicorp/terraform-plugin-testing/tfversion"
16+
"github.com/hashicorp/terraform-provider-azurerm/internal/acceptance"
17+
"github.com/hashicorp/terraform-provider-azurerm/internal/provider/framework"
18+
)
19+
20+
func TestAccDashboardGrafana_resourceIdentity(t *testing.T) {
21+
data := acceptance.BuildTestData(t, "azurerm_dashboard_grafana", "test")
22+
r := DashboardGrafanaResource{}
23+
24+
resource.ParallelTest(t, resource.TestCase{
25+
TerraformVersionChecks: []tfversion.TerraformVersionCheck{
26+
tfversion.SkipBelow(version.Must(version.NewVersion("1.12.0-rc2"))),
27+
},
28+
ProtoV5ProviderFactories: framework.ProtoV5ProviderFactoriesInit(context.Background(), "azurerm"),
29+
Steps: []resource.TestStep{
30+
{
31+
Config: r.basic(data),
32+
ConfigStateChecks: []statecheck.StateCheck{
33+
statecheck.ExpectIdentityValue("azurerm_dashboard_grafana.test", tfjsonpath.New("subscription_id"), knownvalue.StringExact(data.Subscriptions.Primary)),
34+
statecheck.ExpectIdentityValueMatchesStateAtPath("azurerm_dashboard_grafana.test", tfjsonpath.New("name"), tfjsonpath.New("name")),
35+
statecheck.ExpectIdentityValueMatchesStateAtPath("azurerm_dashboard_grafana.test", tfjsonpath.New("resource_group_name"), tfjsonpath.New("resource_group_name")),
36+
},
37+
},
38+
data.ImportBlockWithResourceIdentityStep(false),
39+
data.ImportBlockWithIDStep(false),
40+
},
41+
})
42+
}

internal/services/databasemigration/database_migration_project_resource.go

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414
"github.com/hashicorp/go-azure-helpers/resourcemanager/location"
1515
"github.com/hashicorp/go-azure-helpers/resourcemanager/tags"
1616
"github.com/hashicorp/go-azure-sdk/resource-manager/datamigration/2021-06-30/projectresource"
17+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1718
"github.com/hashicorp/terraform-provider-azurerm/helpers/tf"
1819
"github.com/hashicorp/terraform-provider-azurerm/internal/clients"
1920
"github.com/hashicorp/terraform-provider-azurerm/internal/services/databasemigration/validate"
@@ -22,17 +23,19 @@ import (
2223
"github.com/hashicorp/terraform-provider-azurerm/internal/timeouts"
2324
)
2425

26+
//go:generate go run ../../tools/generator-tests resourceidentity -resource-name database_migration_project -service-package-name databasemigration -properties "name,resource_group_name,service_name" -known-values "subscription_id:data.Subscriptions.Primary" -test-name basicForResourceIdentity
27+
2528
func resourceDatabaseMigrationProject() *pluginsdk.Resource {
2629
return &pluginsdk.Resource{
2730
Create: resourceDatabaseMigrationProjectCreateUpdate,
2831
Read: resourceDatabaseMigrationProjectRead,
2932
Update: resourceDatabaseMigrationProjectCreateUpdate,
3033
Delete: resourceDatabaseMigrationProjectDelete,
3134

32-
Importer: pluginsdk.ImporterValidatingResourceId(func(id string) error {
33-
_, err := projectresource.ParseProjectID(id)
34-
return err
35-
}),
35+
Importer: pluginsdk.ImporterValidatingIdentity(&projectresource.ProjectId{}),
36+
Identity: &schema.ResourceIdentity{
37+
SchemaFunc: pluginsdk.GenerateIdentitySchema(&projectresource.ProjectId{}),
38+
},
3639

3740
Timeouts: &pluginsdk.ResourceTimeout{
3841
Create: pluginsdk.DefaultTimeout(30 * time.Minute),
@@ -130,6 +133,9 @@ func resourceDatabaseMigrationProjectCreateUpdate(d *pluginsdk.ResourceData, met
130133
}
131134

132135
d.SetId(id.ID())
136+
if err := pluginsdk.SetResourceIdentityData(d, &id); err != nil {
137+
return err
138+
}
133139
return resourceDatabaseMigrationProjectRead(d, meta)
134140
}
135141

@@ -167,7 +173,7 @@ func resourceDatabaseMigrationProjectRead(d *pluginsdk.ResourceData, meta interf
167173
return err
168174
}
169175
}
170-
return nil
176+
return pluginsdk.SetResourceIdentityData(d, id)
171177
}
172178

173179
func resourceDatabaseMigrationProjectDelete(d *pluginsdk.ResourceData, meta interface{}) error {
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
// Copyright IBM Corp. 2014, 2025
2+
// SPDX-License-Identifier: MPL-2.0
3+
4+
package databasemigration_test
5+
6+
import (
7+
"context"
8+
"testing"
9+
10+
"github.com/hashicorp/go-version"
11+
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
12+
"github.com/hashicorp/terraform-plugin-testing/knownvalue"
13+
"github.com/hashicorp/terraform-plugin-testing/statecheck"
14+
"github.com/hashicorp/terraform-plugin-testing/tfjsonpath"
15+
"github.com/hashicorp/terraform-plugin-testing/tfversion"
16+
"github.com/hashicorp/terraform-provider-azurerm/internal/acceptance"
17+
"github.com/hashicorp/terraform-provider-azurerm/internal/provider/framework"
18+
)
19+
20+
func TestAccDatabaseMigrationProject_resourceIdentity(t *testing.T) {
21+
data := acceptance.BuildTestData(t, "azurerm_database_migration_project", "test")
22+
r := DatabaseMigrationProjectResource{}
23+
24+
resource.ParallelTest(t, resource.TestCase{
25+
TerraformVersionChecks: []tfversion.TerraformVersionCheck{
26+
tfversion.SkipBelow(version.Must(version.NewVersion("1.12.0-rc2"))),
27+
},
28+
ProtoV5ProviderFactories: framework.ProtoV5ProviderFactoriesInit(context.Background(), "azurerm"),
29+
Steps: []resource.TestStep{
30+
{
31+
Config: r.basicForResourceIdentity(data),
32+
ConfigStateChecks: []statecheck.StateCheck{
33+
statecheck.ExpectIdentityValue("azurerm_database_migration_project.test", tfjsonpath.New("subscription_id"), knownvalue.StringExact(data.Subscriptions.Primary)),
34+
statecheck.ExpectIdentityValueMatchesStateAtPath("azurerm_database_migration_project.test", tfjsonpath.New("name"), tfjsonpath.New("name")),
35+
statecheck.ExpectIdentityValueMatchesStateAtPath("azurerm_database_migration_project.test", tfjsonpath.New("resource_group_name"), tfjsonpath.New("resource_group_name")),
36+
statecheck.ExpectIdentityValueMatchesStateAtPath("azurerm_database_migration_project.test", tfjsonpath.New("service_name"), tfjsonpath.New("service_name")),
37+
},
38+
},
39+
data.ImportBlockWithResourceIdentityStep(false),
40+
data.ImportBlockWithIDStep(false),
41+
},
42+
})
43+
}

internal/services/databasemigration/database_migration_project_resource_test.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,10 @@ resource "azurerm_database_migration_project" "test" {
171171
`, DatabaseMigrationServiceResource{}.basic(data), data.RandomInteger, sourcePlatform, targetPlatform)
172172
}
173173

174+
func (DatabaseMigrationProjectResource) basicForResourceIdentity(data acceptance.TestData) string {
175+
return DatabaseMigrationProjectResource{}.basic(data, "SQL", "SQLDB")
176+
}
177+
174178
func (DatabaseMigrationProjectResource) complete(data acceptance.TestData) string {
175179
return fmt.Sprintf(`
176180
%s

0 commit comments

Comments
 (0)