Skip to content

Commit eb271d8

Browse files
viparekBethanyZhou
andauthored
[SQL] Bug fix for UMI (#15338)
* [SQL] Bug fix for UMI * Add changelog * UMI fixes for support SMI,UMI * Add fix for Get-AzSqlInstance * Added fix for SMI,UMI IdentityType * Fix for backward compat * modified help Co-authored-by: Beisi Zhou <[email protected]>
1 parent 5b60152 commit eb271d8

12 files changed

+27
-30
lines changed

src/Sql/Sql/Auditing/Services/AuditingEndpointsCommunicator.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,7 @@ public DiagnosticSettingsResource UpdateDiagnosticSettings(DiagnosticSettingsRes
226226
if (server.Identity == null ||
227227
server.Identity.Type != ResourceIdentityType.SystemAssigned.ToString())
228228
{
229-
server.Identity = ResourceIdentityHelper.GetIdentityObjectFromType(true, "SystemAssigned", null, null);
229+
server.Identity = ResourceIdentityHelper.GetIdentityObjectFromType(true, ResourceIdentityType.SystemAssigned.ToString(), null, null);
230230
server = GetCurrentSqlClient().Servers.CreateOrUpdate(resourceGroupName, serverName, server);
231231
}
232232

src/Sql/Sql/ChangeLog.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
`Get-AzSqlServerOutboundFirewallRule`
2626
`New-AzSqlServerOutboundFirewallRule`
2727
`Remove-AzSqlServerOutboundFirewallRule`
28+
* Fixed the identity logic for SystemAssigned,UserAssigned identities for New-AzSqlServer, New-AzSqlInstance
2829
* Updated cmdlets for getting and updating SQL database's differential backup frequency
2930
`Get-AzSqlDatabaseBackupShortTermRetentionPolicy`
3031
`Set-AzSqlDatabaseBackupShortTermRetentionPolicy`

src/Sql/Sql/Common/ResourceIdentityHelper.cs

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public class ResourceIdentityHelper
3333
public static Management.Sql.Models.ResourceIdentity GetIdentityObjectFromType(bool assignIdentityIsPresent, string resourceIdentityType, List<string> userAssignedIdentities, Management.Sql.Models.ResourceIdentity existingResourceIdentity)
3434
{
3535
Management.Sql.Models.ResourceIdentity identityResult = null;
36-
36+
3737
// If the user passes in IdentityType as None, then irrespective of previous config, we set the IdentityType to be None.
3838
//
3939
if (resourceIdentityType != null && resourceIdentityType.Equals(ResourceIdentityType.None.ToString()))
@@ -46,13 +46,14 @@ public static Management.Sql.Models.ResourceIdentity GetIdentityObjectFromType(b
4646
return identityResult;
4747
}
4848

49-
if (resourceIdentityType != null && assignIdentityIsPresent && resourceIdentityType.Equals(ResourceIdentityType.SystemAssignedUserAssigned.ToString()))
49+
if (resourceIdentityType != null && assignIdentityIsPresent &&
50+
(resourceIdentityType.Equals("SystemAssigned,UserAssigned") || resourceIdentityType.Equals(ResourceIdentityType.SystemAssignedUserAssigned.ToString())))
5051
{
5152
Dictionary<string, UserIdentity> umiDict = new Dictionary<string, UserIdentity>();
5253

5354
if (userAssignedIdentities == null)
5455
{
55-
throw new PSArgumentNullException("The list of user assigned identity ids needs to be passed if the IdentityType is UserAssigned or SystemAssignedUserAssigned");
56+
throw new PSArgumentNullException("The list of user assigned identity ids needs to be passed if the IdentityType is UserAssigned or SystemAssigned,UserAssigned");
5657
}
5758

5859
if (existingResourceIdentity != null && userAssignedIdentities.Any()
@@ -65,7 +66,7 @@ public static Management.Sql.Models.ResourceIdentity GetIdentityObjectFromType(b
6566

6667
identityResult = new Management.Sql.Models.ResourceIdentity()
6768
{
68-
Type = ResourceIdentityType.SystemAssignedUserAssigned.ToString()
69+
Type = "SystemAssigned,UserAssigned"
6970
};
7071
}
7172
else if (userAssignedIdentities.Any())
@@ -77,7 +78,7 @@ public static Management.Sql.Models.ResourceIdentity GetIdentityObjectFromType(b
7778

7879
identityResult = new Management.Sql.Models.ResourceIdentity()
7980
{
80-
Type = ResourceIdentityType.SystemAssignedUserAssigned.ToString(),
81+
Type = "SystemAssigned,UserAssigned",
8182
UserAssignedIdentities = umiDict
8283
};
8384
}
@@ -88,7 +89,7 @@ public static Management.Sql.Models.ResourceIdentity GetIdentityObjectFromType(b
8889

8990
if (userAssignedIdentities == null)
9091
{
91-
throw new PSArgumentNullException("The list of user assigned identity ids needs to be passed if the IdentityType is UserAssigned or SystemAssignedUserAssigned");
92+
throw new PSArgumentNullException("The list of user assigned identity ids needs to be passed if the IdentityType is UserAssigned or SystemAssigned,UserAssigned");
9293
}
9394

9495
if (existingResourceIdentity != null && userAssignedIdentities.Any()
@@ -120,18 +121,10 @@ public static Management.Sql.Models.ResourceIdentity GetIdentityObjectFromType(b
120121
}
121122
else if (assignIdentityIsPresent)
122123
{
123-
if (existingResourceIdentity != null)
124-
{
125-
identityResult = existingResourceIdentity;
126-
identityResult.Type = ResourceIdentityType.SystemAssigned.ToString();
127-
}
128-
else
124+
identityResult = new Management.Sql.Models.ResourceIdentity()
129125
{
130-
identityResult = new Management.Sql.Models.ResourceIdentity()
131-
{
132-
Type = ResourceIdentityType.SystemAssigned.ToString()
133-
};
134-
}
126+
Type = ResourceIdentityType.SystemAssigned.ToString()
127+
};
135128
}
136129

137130
if (!assignIdentityIsPresent && existingResourceIdentity != null && existingResourceIdentity.PrincipalId != null)

src/Sql/Sql/ManagedInstance/Cmdlet/NewAzureSqlManagedInstance.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -348,8 +348,8 @@ public class NewAzureSqlManagedInstance : ManagedInstanceCmdletBase
348348
/// Type of identity to be assigned to the server..
349349
/// </summary>
350350
[Parameter(Mandatory = false,
351-
HelpMessage = "Type of Identity to be used. Possible values are SystemAsssigned, UserAssigned, SystemAssignedUserAssigned and None.")]
352-
[PSArgumentCompleter("SystemAssigned", "UserAssigned", "SystemAssignedUserAssigned", "None")]
351+
HelpMessage = "Type of Identity to be used. Possible values are SystemAssigned, UserAssigned, 'SystemAssigned,UserAssigned' and None.")]
352+
[PSArgumentCompleter("SystemAssigned", "UserAssigned", "\"SystemAssigned,UserAssigned\"", "None")]
353353
public string IdentityType { get; set; }
354354

355355
/// <summary>

src/Sql/Sql/ManagedInstance/Cmdlet/SetAzureSqlManagedInstance.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -229,8 +229,8 @@ public class SetAzureSqlManagedInstance : ManagedInstanceCmdletBase
229229
/// List of user assigned identities.
230230
/// </summary>
231231
[Parameter(Mandatory = false,
232-
HelpMessage = "Type of Identity to be used. Possible values are SystemAsssigned, UserAssigned, SystemAssignedUserAssigned and None.")]
233-
[PSArgumentCompleter("SystemAssigned", "UserAssigned", "SystemAssignedUserAssigned", "None")]
232+
HelpMessage = "Type of Identity to be used. Possible values are SystemAssigned, UserAssigned, 'SystemAssigned,UserAssigned' and None.")]
233+
[PSArgumentCompleter("SystemAssigned", "UserAssigned", "\"SystemAssigned,UserAssigned\"", "None")]
234234
public string IdentityType { get; set; }
235235

236236
/// <summary>

src/Sql/Sql/ManagedInstance/Services/AzureSqlManagedInstanceAdapter.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,8 @@ private static AzureSqlManagedInstanceModel CreateManagedInstanceModelFromRespon
265265
{
266266
managedInstance.Administrators.AdministratorType = "ActiveDirectory";
267267
}
268+
managedInstance.PrimaryUserAssignedIdentityId = resp.PrimaryUserAssignedIdentityId;
269+
managedInstance.KeyId = resp.KeyId;
268270

269271
return managedInstance;
270272
}

src/Sql/Sql/Server/Cmdlet/NewAzureSqlServer.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,8 @@ public class NewAzureSqlServer : AzureSqlServerCmdletBase
119119
/// Type of identity to be assigned to the server..
120120
/// </summary>
121121
[Parameter(Mandatory = false,
122-
HelpMessage = "Type of Identity to be used. Possible values are SystemAsssigned, UserAssigned, SystemAssignedUserAssigned and None.")]
123-
[PSArgumentCompleter("SystemAssigned", "UserAssigned", "SystemAssignedUserAssigned", "None")]
122+
HelpMessage = "Type of Identity to be used. Possible values are SystemAssigned, UserAssigned, 'SystemAssigned,UserAssigned' and None.")]
123+
[PSArgumentCompleter("SystemAssigned", "UserAssigned", "\"SystemAssigned,UserAssigned\"", "None")]
124124
public string IdentityType { get; set; }
125125

126126
/// <summary>

src/Sql/Sql/Server/Cmdlet/SetAzureSqlServer.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
using Microsoft.Azure.Commands.ResourceManager.Common.ArgumentCompleters;
1616
using Microsoft.Azure.Commands.ResourceManager.Common.Tags;
1717
using Microsoft.Azure.Commands.Sql.Common;
18+
using System;
1819
using System.Collections;
1920
using System.Collections.Generic;
2021
using System.Linq;
@@ -113,8 +114,8 @@ public class SetAzureSqlServer : AzureSqlServerCmdletBase
113114
/// Type of identity to be assigned to the server..
114115
/// </summary>
115116
[Parameter(Mandatory = false,
116-
HelpMessage = "Type of Identity to be used. Possible values are SystemAsssigned, UserAssigned, SystemAssignedUserAssigned and None.")]
117-
[PSArgumentCompleter("SystemAssigned", "UserAssigned", "SystemAssignedUserAssigned", "None")]
117+
HelpMessage = "Type of Identity to be used. Possible values are SystemAssigned, UserAssigned, 'SystemAssigned,UserAssigned' and None.")]
118+
[PSArgumentCompleter("SystemAssigned", "UserAssigned", "\"SystemAssigned,UserAssigned\"", "None")]
118119
public string IdentityType { get; set; }
119120

120121
/// <summary>

src/Sql/Sql/help/New-AzSqlInstance.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -719,7 +719,7 @@ Accept wildcard characters: False
719719
```
720720
721721
### -IdentityType
722-
Type of identity to be assigned to the server. Possible values are SystemAsssigned, UserAssigned, SystemAssignedUserAssigned and None.
722+
Type of identity to be assigned to the server. Possible values are SystemAsssigned, UserAssigned, 'SystemAssigned,UserAssigned' and None.
723723
724724
```yaml
725725
Type: System.String

src/Sql/Sql/help/New-AzSqlServer.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -337,7 +337,7 @@ Accept wildcard characters: False
337337
```
338338

339339
### -IdentityType
340-
Type of identity to be assigned to the server. Possible values are SystemAsssigned, UserAssigned, SystemAssignedUserAssigned and None.
340+
Type of identity to be assigned to the server. Possible values are SystemAsssigned, UserAssigned, 'SystemAssigned,UserAssigned' and None.
341341

342342
```yaml
343343
Type: System.String

src/Sql/Sql/help/Set-AzSqlInstance.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -497,7 +497,7 @@ Accept wildcard characters: False
497497
```
498498
499499
### -IdentityType
500-
Type of identity to be assigned to the server. Possible values are SystemAsssigned, UserAssigned, SystemAssignedUserAssigned and None.
500+
Type of identity to be assigned to the server. Possible values are SystemAsssigned, UserAssigned, 'SystemAssigned,UserAssigned' and None.
501501
502502
```yaml
503503
Type: System.String

src/Sql/Sql/help/Set-AzSqlServer.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ Accept wildcard characters: False
256256
```
257257

258258
### -IdentityType
259-
Type of identity to be assigned to the server. Possible values are SystemAsssigned, UserAssigned, SystemAssignedUserAssigned and None.
259+
Type of identity to be assigned to the server. Possible values are SystemAsssigned, UserAssigned, 'SystemAssigned,UserAssigned' and None.
260260

261261
```yaml
262262
Type: System.String

0 commit comments

Comments
 (0)