public static Management.Sql.Models.ResourceIdentity GetIdentityObjectFromType(bool assignIdentityIsPresent) { Management.Sql.Models.ResourceIdentity identityResult = null; if (assignIdentityIsPresent) { identityResult = new Management.Sql.Models.ResourceIdentity() { Type = ResourceIdentityType.SystemAssigned.ToString() }; } return(identityResult); }
public static Management.Sql.Models.ResourceIdentity GetIdentityObjectFromType(bool assignIdentityIsPresent, string resourceIdentityType, List <string> userAssignedIdentities, Management.Sql.Models.ResourceIdentity existingResourceIdentity) { Management.Sql.Models.ResourceIdentity identityResult = null; // If the user passes in IdentityType as None, then irrespective of previous config, we set the IdentityType to be None. // if (resourceIdentityType != null && resourceIdentityType.Equals(ResourceIdentityType.None.ToString())) { identityResult = new Management.Sql.Models.ResourceIdentity() { Type = ResourceIdentityType.None.ToString() }; return(identityResult); } if (resourceIdentityType != null && assignIdentityIsPresent && (resourceIdentityType.Equals("SystemAssigned,UserAssigned") || resourceIdentityType.Equals(ResourceIdentityType.SystemAssignedUserAssigned.ToString()))) { Dictionary <string, UserIdentity> umiDict = new Dictionary <string, UserIdentity>(); if (userAssignedIdentities == null) { throw new PSArgumentNullException("The list of user assigned identity ids needs to be passed if the IdentityType is UserAssigned or SystemAssigned,UserAssigned"); } if (existingResourceIdentity != null && userAssignedIdentities.Any() && existingResourceIdentity.UserAssignedIdentities != null) { foreach (string identity in userAssignedIdentities) { existingResourceIdentity.UserAssignedIdentities.Add(identity, new UserIdentity()); } identityResult = existingResourceIdentity; identityResult.Type = "SystemAssigned,UserAssigned"; } else if (userAssignedIdentities.Any()) { foreach (string identity in userAssignedIdentities) { umiDict.Add(identity, new UserIdentity()); } identityResult = new Management.Sql.Models.ResourceIdentity() { Type = "SystemAssigned,UserAssigned", UserAssignedIdentities = umiDict }; } } else if (resourceIdentityType != null && assignIdentityIsPresent && resourceIdentityType.Equals(ResourceIdentityType.UserAssigned.ToString())) { Dictionary <string, UserIdentity> umiDict = new Dictionary <string, UserIdentity>(); if (userAssignedIdentities == null) { throw new PSArgumentNullException("The list of user assigned identity ids needs to be passed if the IdentityType is UserAssigned or SystemAssigned,UserAssigned"); } if (existingResourceIdentity != null && userAssignedIdentities.Any() && existingResourceIdentity.UserAssignedIdentities != null) { foreach (string identity in userAssignedIdentities) { existingResourceIdentity.UserAssignedIdentities.Add(identity, new UserIdentity()); } identityResult = existingResourceIdentity; identityResult.Type = ResourceIdentityType.UserAssigned.ToString(); } else if (userAssignedIdentities.Any()) { foreach (string identity in userAssignedIdentities) { umiDict.Add(identity, new UserIdentity()); } identityResult = new Management.Sql.Models.ResourceIdentity() { Type = ResourceIdentityType.UserAssigned.ToString(), UserAssignedIdentities = umiDict }; } } else if (assignIdentityIsPresent) { identityResult = new Management.Sql.Models.ResourceIdentity() { Type = ResourceIdentityType.SystemAssigned.ToString() }; } if (!assignIdentityIsPresent && existingResourceIdentity != null && existingResourceIdentity.PrincipalId != null) { identityResult = existingResourceIdentity; } return(identityResult); }