Skip to content

[Synapse] Update Set-AzSynapseSqlActiveDirectoryAdministrator to add support for setting SQL admin only by ObjectId #15611

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Aug 5, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/Synapse/Synapse/ChangeLog.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
- Added `Get-AzSynapseManagedPrivateEndpoint` cmdlet
- Added `Remove-AzSynapseManagedPrivateEndpoint` cmdlet
* Fixed the blank page issue of pause setting and scale setting for Apache Spark pool through management API
* Updated `Set-AzSynapseSqlActiveDirectoryAdministrator` to support for setting SQL Admin by `DisplayName` or by `ObjectId`

## Version 0.14.0
* Added parameter `-ManagedResourceGroupName` for the `New-AzSynapseWorkspace` cmdlet
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,41 +10,62 @@
namespace Microsoft.Azure.Commands.Synapse
{
[Cmdlet(VerbsCommon.Set, ResourceManager.Common.AzureRMConstants.AzureRMPrefix + SynapseConstants.SynapsePrefix + SynapseConstants.Sql + SynapseConstants.ActiveDirectoryAdministrator,
DefaultParameterSetName = SetByNameParameterSet, SupportsShouldProcess = true)]
DefaultParameterSetName = SetByNameAndDisplayNameParameterSet, SupportsShouldProcess = true)]
[OutputType(typeof(PSWorkspaceAadAdminInfo))]
public class SetAzureSynapseSqlActiveDirectoryAdministrator : SynapseManagementCmdletBase
{
private const string SetByNameParameterSet = "SetByNameParameterSet";
private const string SetByInputObjectParameterSet = "SetByInputObjectParameterSet";
private const string SetByResourceIdParameterSet = "SetByResourceIdParameterSet";
private const string SetByNameAndDisplayNameParameterSet = "SetByNameAndDisplayNameParameterSet";
private const string SetByInputObjectAndDisplayNameParameterSet = "SetByInputObjectAndDisplayNameParameterSet";
private const string SetByResourceIdAndDisplayNameParameterSet = "SetByResourceIdAndDisplayNameParameterSet";
private const string SetByNameAndObjectIdParameterSet = "SetByNameAndObjectIdParameterSet";
private const string SetByInputObjectAndObjectIdParameterSet = "SetByInputObjectAndObjectIdParameterSet";
private const string SetByResourceIdAndObjectIdParameterSet = "SetByResourceIdAndObjectIdParameterSet";

[Parameter(ParameterSetName = SetByNameParameterSet, Mandatory = false,
[Parameter(ParameterSetName = SetByNameAndDisplayNameParameterSet, Mandatory = false,
HelpMessage = HelpMessages.ResourceGroupName)]
[Parameter(ParameterSetName = SetByNameAndObjectIdParameterSet, Mandatory = false,
HelpMessage = HelpMessages.ResourceGroupName)]
[ResourceGroupCompleter()]
[ValidateNotNullOrEmpty]
public string ResourceGroupName { get; set; }

[Parameter(ParameterSetName = SetByNameParameterSet,
[Parameter(ParameterSetName = SetByNameAndDisplayNameParameterSet,
Mandatory = true, HelpMessage = HelpMessages.WorkspaceName)]
[Parameter(ParameterSetName = SetByNameAndObjectIdParameterSet,
Mandatory = true, HelpMessage = HelpMessages.WorkspaceName)]
[ResourceNameCompleter(ResourceTypes.Workspace, nameof(ResourceGroupName))]
[ValidateNotNullOrEmpty]
public string WorkspaceName { get; set; }

[Parameter(ValueFromPipeline = true, ParameterSetName = SetByInputObjectParameterSet,
[Parameter(ValueFromPipeline = true, ParameterSetName = SetByInputObjectAndDisplayNameParameterSet,
Mandatory = true, HelpMessage = HelpMessages.WorkspaceObject)]
[Parameter(ValueFromPipeline = true, ParameterSetName = SetByInputObjectAndObjectIdParameterSet,
Mandatory = true, HelpMessage = HelpMessages.WorkspaceObject)]
[ValidateNotNull]
public PSSynapseWorkspace InputObject { get; set; }

[Parameter(ValueFromPipelineByPropertyName = false, ParameterSetName = SetByResourceIdParameterSet,
[Parameter(ValueFromPipelineByPropertyName = false, ParameterSetName = SetByResourceIdAndDisplayNameParameterSet,
Mandatory = true, HelpMessage = HelpMessages.WorkspaceResourceId)]
[Parameter(ValueFromPipelineByPropertyName = false, ParameterSetName = SetByResourceIdAndObjectIdParameterSet,
Mandatory = true, HelpMessage = HelpMessages.WorkspaceResourceId)]
[ValidateNotNullOrEmpty]
public string ResourceId { get; set; }

[Parameter(ValueFromPipelineByPropertyName = false, Mandatory = true, HelpMessage = HelpMessages.DisplayName)]
[Parameter(ValueFromPipelineByPropertyName = false, ParameterSetName = SetByNameAndDisplayNameParameterSet,
Mandatory = true, HelpMessage = HelpMessages.DisplayName)]
[Parameter(ValueFromPipelineByPropertyName = false, ParameterSetName = SetByInputObjectAndDisplayNameParameterSet,
Mandatory = true, HelpMessage = HelpMessages.DisplayName)]
[Parameter(ValueFromPipelineByPropertyName = false, ParameterSetName = SetByResourceIdAndDisplayNameParameterSet,
Mandatory = true, HelpMessage = HelpMessages.DisplayName)]
[ValidateNotNullOrEmpty()]
public string DisplayName { get; set; }

[Parameter(ValueFromPipelineByPropertyName = false, Mandatory = false, HelpMessage = HelpMessages.ObjectId)]
[Parameter(ValueFromPipelineByPropertyName = false, ParameterSetName = SetByNameAndObjectIdParameterSet,
Mandatory = true, HelpMessage = HelpMessages.ObjectId)]
[Parameter(ValueFromPipelineByPropertyName = false, ParameterSetName = SetByInputObjectAndObjectIdParameterSet,
Mandatory = true, HelpMessage = HelpMessages.ObjectId)]
[Parameter(ValueFromPipelineByPropertyName = false, ParameterSetName = SetByResourceIdAndObjectIdParameterSet,
Mandatory = true, HelpMessage = HelpMessages.ObjectId)]
[ValidateNotNullOrEmpty()]
public Guid ObjectId { get; set; }

Expand Down
14 changes: 13 additions & 1 deletion src/Synapse/Synapse/Models/SynapseAnalyticsManagementClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -375,7 +375,19 @@ public WorkspaceAadAdminInfo CreateOrUpdateSqlActiveDirectoryAdministrators(stri
{
try
{
return _synapseManagementClient.WorkspaceAadAdmins.CreateOrUpdate(resourceGroupName, workspaceName, GetActiveDirectoryInformation(displayName, objectId));
if(displayName != null)
{
return _synapseManagementClient.WorkspaceAadAdmins.CreateOrUpdate(resourceGroupName, workspaceName, GetActiveDirectoryInformation(displayName, objectId));
}
else
{
var info = new WorkspaceAadAdminInfo()
{
Sid = objectId.ToString(),
TenantId = _tenantId.ToString()
};
return _synapseManagementClient.WorkspaceAadAdmins.CreateOrUpdate(resourceGroupName, workspaceName, info);
}
}
catch (CloudException ex)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,24 +12,41 @@ Provisions an Azure AD administrator for Synapse Analytics SQL pool.

## SYNTAX

### SetByNameParameterSet (Default)
### SetByNameAndDisplayNameParameterSet (Default)
```
Set-AzSynapseSqlActiveDirectoryAdministrator [-ResourceGroupName <String>] -WorkspaceName <String>
-DisplayName <String> [-ObjectId <Guid>] [-AsJob] [-DefaultProfile <IAzureContextContainer>] [-WhatIf]
[-Confirm] [<CommonParameters>]
-DisplayName <String> [-AsJob] [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm]
[<CommonParameters>]
```

### SetByInputObjectParameterSet
### SetByNameAndObjectIdParameterSet
```
Set-AzSynapseSqlActiveDirectoryAdministrator -InputObject <PSSynapseWorkspace> -DisplayName <String>
[-ObjectId <Guid>] [-AsJob] [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm]
[<CommonParameters>]
Set-AzSynapseSqlActiveDirectoryAdministrator [-ResourceGroupName <String>] -WorkspaceName <String>
-ObjectId <Guid> [-AsJob] [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>]
```

### SetByInputObjectAndDisplayNameParameterSet
```
Set-AzSynapseSqlActiveDirectoryAdministrator -InputObject <PSSynapseWorkspace> -DisplayName <String> [-AsJob]
[-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>]
```

### SetByInputObjectAndObjectIdParameterSet
```
Set-AzSynapseSqlActiveDirectoryAdministrator -InputObject <PSSynapseWorkspace> -ObjectId <Guid> [-AsJob]
[-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>]
```

### SetByResourceIdParameterSet
### SetByResourceIdAndDisplayNameParameterSet
```
Set-AzSynapseSqlActiveDirectoryAdministrator -ResourceId <String> -DisplayName <String> [-ObjectId <Guid>]
[-AsJob] [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>]
Set-AzSynapseSqlActiveDirectoryAdministrator -ResourceId <String> -DisplayName <String> [-AsJob]
[-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>]
```

### SetByResourceIdAndObjectIdParameterSet
```
Set-AzSynapseSqlActiveDirectoryAdministrator -ResourceId <String> -ObjectId <Guid> [-AsJob]
[-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>]
```

## DESCRIPTION
Expand All @@ -55,11 +72,10 @@ This command provisions an Azure AD administrator group named DBAs for the works

### Example 2
```powershell
PS C:\> Set-AzSynapseSqlActiveDirectoryAdministrator -WorkspaceName ContosoWorkspace -DisplayName "DBAs" -ObjectId "40b79501-b343-44ed-9ce7-da4c8cc7353b"
PS C:\> Set-AzSynapseSqlActiveDirectoryAdministrator -WorkspaceName ContosoWorkspace -ObjectId "40b79501-b343-44ed-9ce7-da4c8cc7353b"
```

This command provisions an Azure AD administrator group named DBAs for the workspace named ContosoWorkspace.
This makes sure that the command succeeds even if the display name of the group is not unique.
This command provisions an Azure AD administrator by objectId for the workspace named ContosoWorkspace.

## PARAMETERS

Expand Down Expand Up @@ -99,7 +115,7 @@ This display name must exist in the active directory associated with the current

```yaml
Type: System.String
Parameter Sets: (All)
Parameter Sets: SetByNameAndDisplayNameParameterSet, SetByInputObjectAndDisplayNameParameterSet, SetByResourceIdAndDisplayNameParameterSet
Aliases:

Required: True
Expand All @@ -114,7 +130,7 @@ workspace input object, usually passed through the pipeline.

```yaml
Type: Microsoft.Azure.Commands.Synapse.Models.PSSynapseWorkspace
Parameter Sets: SetByInputObjectParameterSet
Parameter Sets: SetByInputObjectAndDisplayNameParameterSet, SetByInputObjectAndObjectIdParameterSet
Aliases:

Required: True
Expand All @@ -129,10 +145,10 @@ Specifies the object ID of the user or group in Azure Active Directory for which

```yaml
Type: System.Guid
Parameter Sets: (All)
Parameter Sets: SetByNameAndObjectIdParameterSet, SetByInputObjectAndObjectIdParameterSet, SetByResourceIdAndObjectIdParameterSet
Aliases:

Required: False
Required: True
Position: Named
Default value: None
Accept pipeline input: False
Expand All @@ -144,7 +160,7 @@ Resource group name.

```yaml
Type: System.String
Parameter Sets: SetByNameParameterSet
Parameter Sets: SetByNameAndDisplayNameParameterSet, SetByNameAndObjectIdParameterSet
Aliases:

Required: False
Expand All @@ -159,7 +175,7 @@ Resource identifier of Synapse workspace.

```yaml
Type: System.String
Parameter Sets: SetByResourceIdParameterSet
Parameter Sets: SetByResourceIdAndDisplayNameParameterSet, SetByResourceIdAndObjectIdParameterSet
Aliases:

Required: True
Expand All @@ -174,7 +190,7 @@ Name of Synapse workspace.

```yaml
Type: System.String
Parameter Sets: SetByNameParameterSet
Parameter Sets: SetByNameAndDisplayNameParameterSet, SetByNameAndObjectIdParameterSet
Aliases:

Required: True
Expand Down