Skip to content

Commit 7583bc9

Browse files
committed
UMI related fix.
1 parent 422cd3a commit 7583bc9

File tree

6 files changed

+62
-6
lines changed

6 files changed

+62
-6
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(server.Identity.Type, null);
229+
server.Identity = ResourceIdentityHelper.GetIdentityObjectFromType(true, false, null);
230230
server = GetCurrentSqlClient().Servers.CreateOrUpdate(resourceGroupName, serverName, server);
231231
}
232232

src/Sql/Sql/Common/ResourceIdentityHelper.cs

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,47 @@ public static Management.Sql.Models.ResourceIdentity GetIdentityObjectFromType(s
5555
UserAssignedIdentities = umiDict
5656
};
5757
}
58-
58+
59+
return identityResult;
60+
}
61+
62+
public static Management.Sql.Models.ResourceIdentity GetIdentityObjectFromType(bool assignIdentityIsPresent, bool userAssignedIdentityIsPresent, List<string> userAssignedIdentities)
63+
{
64+
Management.Sql.Models.ResourceIdentity identityResult = null;
65+
66+
if (assignIdentityIsPresent && userAssignedIdentityIsPresent)
67+
{
68+
Dictionary<string, UserIdentity> umiDict = new Dictionary<string, UserIdentity>();
69+
70+
if (userAssignedIdentities != null && userAssignedIdentities.Any())
71+
{
72+
foreach (string identity in userAssignedIdentities)
73+
{
74+
umiDict.Add(identity, new UserIdentity());
75+
}
76+
77+
identityResult = new Management.Sql.Models.ResourceIdentity()
78+
{
79+
Type = ResourceIdentityType.UserAssigned.ToString(),
80+
UserAssignedIdentities = umiDict
81+
};
82+
}
83+
else
84+
{
85+
identityResult = new Management.Sql.Models.ResourceIdentity()
86+
{
87+
Type = ResourceIdentityType.SystemAssigned.ToString()
88+
};
89+
}
90+
}
91+
else if (assignIdentityIsPresent)
92+
{
93+
identityResult = new Management.Sql.Models.ResourceIdentity()
94+
{
95+
Type = ResourceIdentityType.SystemAssigned.ToString()
96+
};
97+
}
98+
5999
return identityResult;
60100
}
61101
}

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -344,6 +344,10 @@ public class NewAzureSqlManagedInstance : ManagedInstanceCmdletBase
344344
HelpMessage = "List of user assigned identities")]
345345
public List<string> UserAssignedIdentity { get; set; }
346346

347+
[Parameter(Mandatory = false,
348+
HelpMessage = "Generate and assign an Azure Active Directory User Assigned Identity for this server for use with key management services like Azure KeyVault.")]
349+
public SwitchParameter AssignUserAssignIdentity { get; set; }
350+
347351
/// <summary>
348352
/// Gets or sets whether or not to run this cmdlet in the background as a job
349353
/// </summary>
@@ -517,7 +521,7 @@ public override void ExecuteCmdlet()
517521
AdministratorPassword = (this.AdministratorCredential != null) ? this.AdministratorCredential.Password : null,
518522
AdministratorLogin = (this.AdministratorCredential != null) ? this.AdministratorCredential.UserName : null,
519523
Tags = TagsConversionHelper.CreateTagDictionary(Tag, validate: true),
520-
Identity = ResourceIdentityHelper.GetIdentityObjectFromType(this.AssignIdentity.IsPresent ? this.AssignIdentity.ToString() : null, UserAssignedIdentity ?? null),
524+
Identity = ResourceIdentityHelper.GetIdentityObjectFromType(this.AssignIdentity, this.AssignUserAssignIdentity, UserAssignedIdentity),
521525
LicenseType = this.LicenseType,
522526
// `-StorageSizeInGB 0` as a parameter to this cmdlet means "use default".
523527
// For non-MI database, we can just pass in 0 and the server will treat 0 as default.

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,10 @@ public class SetAzureSqlManagedInstance : ManagedInstanceCmdletBase
225225
HelpMessage = "List of user assigned identities")]
226226
public List<string> UserAssignedIdentity { get; set; }
227227

228+
[Parameter(Mandatory = false,
229+
HelpMessage = "Generate and assign an Azure Active Directory User Assigned Identity for this server for use with key management services like Azure KeyVault.")]
230+
public SwitchParameter AssignUserAssignIdentity { get; set; }
231+
228232
/// <summary>
229233
/// Gets or sets whether or not to run this cmdlet in the background as a job
230234
/// </summary>
@@ -308,7 +312,7 @@ protected override IEnumerable<AzureSqlManagedInstanceModel> ApplyUserInputToMod
308312
PublicDataEndpointEnabled = this.PublicDataEndpointEnabled,
309313
ProxyOverride = this.ProxyOverride,
310314
Tags = TagsConversionHelper.CreateTagDictionary(Tag, validate: true),
311-
Identity = model.FirstOrDefault().Identity ?? ResourceIdentityHelper.GetIdentityObjectFromType(this.AssignIdentity.IsPresent ? this.AssignIdentity.ToString() : null, UserAssignedIdentity ?? null),
315+
Identity = model.FirstOrDefault().Identity ?? ResourceIdentityHelper.GetIdentityObjectFromType(this.AssignIdentity, this.AssignUserAssignIdentity, UserAssignedIdentity),
312316
InstancePoolName = this.InstancePoolName,
313317
MinimalTlsVersion = this.MinimalTlsVersion,
314318
MaintenanceConfigurationId = this.MaintenanceConfigurationId,

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,10 @@ public class NewAzureSqlServer : AzureSqlServerCmdletBase
110110
HelpMessage = "List of user assigned identities")]
111111
public List<string> UserAssignedIdentity { get; set; }
112112

113+
[Parameter(Mandatory = false,
114+
HelpMessage = "Generate and assign an Azure Active Directory User Assigned Identity for this server for use with key management services like Azure KeyVault.")]
115+
public SwitchParameter AssignUserAssignIdentity { get; set; }
116+
113117
/// <summary>
114118
/// Gets or sets whether or not to run this cmdlet in the background as a job
115119
/// </summary>
@@ -205,7 +209,7 @@ public override void ExecuteCmdlet()
205209
SqlAdministratorPassword = (this.SqlAdministratorCredentials != null) ? this.SqlAdministratorCredentials.Password : null,
206210
SqlAdministratorLogin = (this.SqlAdministratorCredentials != null) ? this.SqlAdministratorCredentials.UserName : null,
207211
Tags = TagsConversionHelper.CreateTagDictionary(Tags, validate: true),
208-
Identity = ResourceIdentityHelper.GetIdentityObjectFromType(this.AssignIdentity.IsPresent ? this.AssignIdentity.ToString() : null, UserAssignedIdentity ?? null),
212+
Identity = ResourceIdentityHelper.GetIdentityObjectFromType(this.AssignIdentity, this.AssignUserAssignIdentity, UserAssignedIdentity),
209213
MinimalTlsVersion = this.MinimalTlsVersion,
210214
PublicNetworkAccess = this.PublicNetworkAccess,
211215
PrimaryUserAssignedIdentityId = this.PrimaryUserAssignedIdentityId,

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,10 @@ public class SetAzureSqlServer : AzureSqlServerCmdletBase
104104
HelpMessage = "List of user assigned identities")]
105105
public List<string> UserAssignedIdentity { get; set; }
106106

107+
[Parameter(Mandatory = false,
108+
HelpMessage = "Generate and assign an Azure Active Directory User Assigned Identity for this server for use with key management services like Azure KeyVault.")]
109+
public SwitchParameter AssignUserAssignIdentity { get; set; }
110+
107111
/// <summary>
108112
/// Defines whether it is ok to skip the requesting of rule removal confirmation
109113
/// </summary>
@@ -141,7 +145,7 @@ public class SetAzureSqlServer : AzureSqlServerCmdletBase
141145
Tags = TagsConversionHelper.ReadOrFetchTags(this, model.FirstOrDefault().Tags),
142146
ServerVersion = this.ServerVersion,
143147
Location = model.FirstOrDefault().Location,
144-
Identity = model.FirstOrDefault().Identity ?? ResourceIdentityHelper.GetIdentityObjectFromType(this.AssignIdentity.IsPresent ? this.AssignIdentity.ToString() : null, UserAssignedIdentity ?? null),
148+
Identity = model.FirstOrDefault().Identity ?? ResourceIdentityHelper.GetIdentityObjectFromType(this.AssignIdentity, this.AssignUserAssignIdentity, UserAssignedIdentity),
145149
PublicNetworkAccess = this.PublicNetworkAccess,
146150
MinimalTlsVersion = this.MinimalTlsVersion,
147151
SqlAdministratorLogin = model.FirstOrDefault().SqlAdministratorLogin,

0 commit comments

Comments
 (0)