Skip to content

Commit c858e8f

Browse files
authored
azurerm_federated_identity_credential: rename parent_id to user_assigned_identity_id (#31921)
1 parent 98ba57d commit c858e8f

File tree

4 files changed

+97
-24
lines changed

4 files changed

+97
-24
lines changed

internal/services/managedidentity/federated_identity_credential_resource.go

Lines changed: 38 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,9 @@ type FederatedIdentityCredentialResourceSchema struct {
3434
// TODO: Remove this in V5.0
3535
ResourceGroupName string `tfschema:"resource_group_name,removedInNextMajorVersion"`
3636

37-
ResourceName string `tfschema:"parent_id"`
38-
Subject string `tfschema:"subject"`
37+
ParentId string `tfschema:"parent_id,removedInNextMajorVersion"`
38+
UserAssignedIdentityId string `tfschema:"user_assigned_identity_id"`
39+
Subject string `tfschema:"subject"`
3940
}
4041

4142
func (r FederatedIdentityCredentialResource) IDValidationFunc() pluginsdk.SchemaValidateFunc {
@@ -67,8 +68,7 @@ func (r FederatedIdentityCredentialResource) Arguments() map[string]*pluginsdk.S
6768
Required: true,
6869
Type: pluginsdk.TypeString,
6970
},
70-
"parent_id": {
71-
// TODO 5.0: this wants renaming to `user_assigned_identity_id`
71+
"user_assigned_identity_id": {
7272
Type: pluginsdk.TypeString,
7373
ForceNew: true,
7474
Required: true,
@@ -83,7 +83,26 @@ func (r FederatedIdentityCredentialResource) Arguments() map[string]*pluginsdk.S
8383

8484
if !features.FivePointOh() {
8585
schema["resource_group_name"] = commonschema.ResourceGroupNameDeprecatedComputed()
86+
87+
schema["parent_id"] = &pluginsdk.Schema{
88+
Type: pluginsdk.TypeString,
89+
ForceNew: true,
90+
Optional: true,
91+
Computed: true,
92+
Deprecated: "`parent_id` has been renamed to `user_assigned_identity_id` and will be removed in v5.0 of the AzureRM Provider",
93+
ExactlyOneOf: []string{"user_assigned_identity_id", "parent_id"},
94+
ValidateFunc: commonids.ValidateUserAssignedIdentityID,
95+
}
96+
schema["user_assigned_identity_id"] = &pluginsdk.Schema{
97+
Type: pluginsdk.TypeString,
98+
ForceNew: true,
99+
Optional: true,
100+
Computed: true,
101+
ExactlyOneOf: []string{"user_assigned_identity_id", "parent_id"},
102+
ValidateFunc: commonids.ValidateUserAssignedIdentityID,
103+
}
86104
}
105+
87106
return schema
88107
}
89108

@@ -103,7 +122,13 @@ func (r FederatedIdentityCredentialResource) Create() sdk.ResourceFunc {
103122
}
104123

105124
subscriptionId := metadata.Client.Account.SubscriptionId
106-
parentId, err := commonids.ParseUserAssignedIdentityID(config.ResourceName)
125+
126+
userAssignedIdentityId := config.UserAssignedIdentityId
127+
if !features.FivePointOh() && userAssignedIdentityId == "" {
128+
userAssignedIdentityId = config.ParentId
129+
}
130+
131+
parentId, err := commonids.ParseUserAssignedIdentityID(userAssignedIdentityId)
107132
if err != nil {
108133
return fmt.Errorf("parsing parent resource ID: %+v", err)
109134
}
@@ -160,11 +185,12 @@ func (r FederatedIdentityCredentialResource) Read() sdk.ResourceFunc {
160185
if model := resp.Model; model != nil {
161186
schema.Name = id.FederatedIdentityCredentialName
162187
parentId := commonids.NewUserAssignedIdentityID(id.SubscriptionId, id.ResourceGroupName, id.UserAssignedIdentityName)
163-
schema.ResourceName = parentId.ID()
188+
schema.UserAssignedIdentityId = parentId.ID()
164189

165190
r.mapFederatedIdentityCredentialToFederatedIdentityCredentialResourceSchema(*model, &schema)
166191

167192
if !features.FivePointOh() {
193+
schema.ParentId = parentId.ID()
168194
schema.ResourceGroupName = id.ResourceGroupName
169195
}
170196
}
@@ -189,7 +215,12 @@ func (r FederatedIdentityCredentialResource) Delete() sdk.ResourceFunc {
189215
return fmt.Errorf("decoding: %+v", err)
190216
}
191217

192-
parentId, err := commonids.ParseUserAssignedIdentityID(config.ResourceName)
218+
userAssignedIdentityId := config.UserAssignedIdentityId
219+
if !features.FivePointOh() && userAssignedIdentityId == "" {
220+
userAssignedIdentityId = config.ParentId
221+
}
222+
223+
parentId, err := commonids.ParseUserAssignedIdentityID(userAssignedIdentityId)
193224
if err != nil {
194225
return fmt.Errorf("parsing parent resource ID: %+v", err)
195226
}

internal/services/managedidentity/federated_identity_credential_resource_test.go

Lines changed: 49 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414
"github.com/hashicorp/terraform-provider-azurerm/internal/acceptance"
1515
"github.com/hashicorp/terraform-provider-azurerm/internal/acceptance/check"
1616
"github.com/hashicorp/terraform-provider-azurerm/internal/clients"
17+
"github.com/hashicorp/terraform-provider-azurerm/internal/features"
1718
"github.com/hashicorp/terraform-provider-azurerm/internal/tf/pluginsdk"
1819
)
1920

@@ -30,6 +31,10 @@ func TestAccFederatedIdentityCredential_basic(t *testing.T) {
3031
Config: r.basic(data),
3132
Check: acceptance.ComposeTestCheckFunc(
3233
check.That(data.ResourceName).ExistsInAzure(r),
34+
check.That(data.ResourceName).Key("user_assigned_identity_id").Exists(),
35+
check.That(data.ResourceName).Key("audience.0").HasValue("foo"),
36+
check.That(data.ResourceName).Key("issuer").HasValue("https://foo"),
37+
check.That(data.ResourceName).Key("subject").HasValue("foo"),
3338
),
3439
},
3540
data.ImportStep(),
@@ -45,6 +50,26 @@ func TestAccFederatedIdentityCredential_basic(t *testing.T) {
4550
})
4651
}
4752

53+
func TestAccFederatedIdentityCredential_deprecated(t *testing.T) {
54+
if features.FivePointOh() {
55+
t.Skip("this test is only valid in versions prior to 5.0")
56+
}
57+
58+
data := acceptance.BuildTestData(t, "azurerm_federated_identity_credential", "test")
59+
r := FederatedIdentityCredentialTestResource{}
60+
61+
data.ResourceTest(t, r, []acceptance.TestStep{
62+
{
63+
Config: r.deprecated(data),
64+
Check: acceptance.ComposeTestCheckFunc(
65+
check.That(data.ResourceName).ExistsInAzure(r),
66+
check.That(data.ResourceName).Key("parent_id").Exists(),
67+
),
68+
},
69+
data.ImportStep(),
70+
})
71+
}
72+
4873
func TestAccFederatedIdentityCredential_requiresImport(t *testing.T) {
4974
data := acceptance.BuildTestData(t, "azurerm_federated_identity_credential", "test")
5075
r := FederatedIdentityCredentialTestResource{}
@@ -78,11 +103,11 @@ func (r FederatedIdentityCredentialTestResource) basic(data acceptance.TestData)
78103
return fmt.Sprintf(`
79104
%s
80105
resource "azurerm_federated_identity_credential" "test" {
81-
audience = ["foo"]
82-
issuer = "https://foo"
83-
name = "acctest-${local.random_integer}"
84-
parent_id = azurerm_user_assigned_identity.test.id
85-
subject = "foo"
106+
audience = ["foo"]
107+
issuer = "https://foo"
108+
name = "acctest-${local.random_integer}"
109+
user_assigned_identity_id = azurerm_user_assigned_identity.test.id
110+
subject = "foo"
86111
}
87112
`, r.template(data))
88113
}
@@ -91,11 +116,11 @@ func (r FederatedIdentityCredentialTestResource) update(data acceptance.TestData
91116
return fmt.Sprintf(`
92117
%s
93118
resource "azurerm_federated_identity_credential" "test" {
94-
audience = ["foo-updated"]
95-
issuer = "https://foo-updated"
96-
name = "acctest-${local.random_integer}"
97-
parent_id = azurerm_user_assigned_identity.test.id
98-
subject = "foo-updated"
119+
audience = ["foo-updated"]
120+
issuer = "https://foo-updated"
121+
name = "acctest-${local.random_integer}"
122+
user_assigned_identity_id = azurerm_user_assigned_identity.test.id
123+
subject = "foo-updated"
99124
}
100125
`, r.template(data))
101126
}
@@ -104,13 +129,26 @@ func (r FederatedIdentityCredentialTestResource) requiresImport(data acceptance.
104129
return fmt.Sprintf(`
105130
%s
106131
resource "azurerm_federated_identity_credential" "import" {
132+
audience = ["foo"]
133+
issuer = "https://foo"
134+
name = "acctest-${local.random_integer}"
135+
user_assigned_identity_id = azurerm_user_assigned_identity.test.id
136+
subject = "foo"
137+
}
138+
`, r.basic(data))
139+
}
140+
141+
func (r FederatedIdentityCredentialTestResource) deprecated(data acceptance.TestData) string {
142+
return fmt.Sprintf(`
143+
%s
144+
resource "azurerm_federated_identity_credential" "test" {
107145
audience = ["foo"]
108146
issuer = "https://foo"
109147
name = "acctest-${local.random_integer}"
110148
parent_id = azurerm_user_assigned_identity.test.id
111149
subject = "foo"
112150
}
113-
`, r.basic(data))
151+
`, r.template(data))
114152
}
115153

116154
func (r FederatedIdentityCredentialTestResource) template(data acceptance.TestData) string {

website/docs/5.0-upgrade-guide.html.markdown

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -379,6 +379,10 @@ Please follow the format in the example below for listing breaking changes in re
379379
* The deprecated `private_link_fast_path_enabled` property has been removed as it is no longer supported by the resource.
380380
* The deprecated `enable_internet_security` property has been removed in favour of the `internet_security_enabled` property.
381381

382+
### `azurerm_federated_identity_credential`
383+
384+
* The deprecated `parent_id` property has been removed in favour of the `user_assigned_identity_id` property.
385+
382386
### `azurerm_key_vault`
383387

384388
* The deprecated `contact` property has been removed as it is no longer supported by the resource.

website/docs/r/federated_identity_credential.html.markdown

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,11 @@ resource "azurerm_user_assigned_identity" "example" {
2525
}
2626
2727
resource "azurerm_federated_identity_credential" "example" {
28-
name = "example"
29-
audience = ["foo"]
30-
issuer = "https://foo"
31-
parent_id = azurerm_user_assigned_identity.example.id
32-
subject = "foo"
28+
name = "example"
29+
audience = ["foo"]
30+
issuer = "https://foo"
31+
user_assigned_identity_id = azurerm_user_assigned_identity.example.id
32+
subject = "foo"
3333
}
3434
```
3535

@@ -39,7 +39,7 @@ The following arguments are supported:
3939

4040
* `name` - (Required) Specifies the name of this Federated Identity Credential. Changing this forces a new resource to be created.
4141

42-
* `parent_id` - (Required) Specifies parent ID of User Assigned Identity for this Federated Identity Credential. Changing this forces a new Federated Identity Credential to be created.
42+
* `user_assigned_identity_id` - (Required) Specifies the ID of the User Assigned Identity for this Federated Identity Credential. Changing this forces a new Federated Identity Credential to be created.
4343

4444
* `audience` - (Required) Specifies the audience for this Federated Identity Credential.
4545

0 commit comments

Comments
 (0)