Skip to content

Commit 9f33a5e

Browse files
wonnerWan Yangwyunchi-msdingmeng-xuemsJinLei
authored
[Synapse] Add SQL pool related cmdlets (#13243)
Force merge after CI passed * add new cmdlets for sql pool * add test for sql pool * update help docs * update change log * fix for test Co-authored-by: Wan Yang <[email protected]> Co-authored-by: Yunchi Wang <[email protected]> Co-authored-by: Dingmeng Xue <[email protected]> Co-authored-by: Jin Lei <[email protected]>
1 parent 40879b9 commit 9f33a5e

23 files changed

+8214
-1399
lines changed

src/Synapse/Synapse.Test/ScenarioTests/SqlPoolTests.ps1

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ function Test-SynapseSqlPool
99
$resourceGroupName = (Get-ResourceGroupName),
1010
$workspaceName = (Get-SynapseWorkspaceName),
1111
$sqlPoolName = (Get-SynapseSqlPoolName),
12+
$restoreFromSqlPoolName = 'dwtestbackup',
1213
$sqlPoolPerformanceLevel = 'DW200c'
1314
)
1415

@@ -90,6 +91,31 @@ function Test-SynapseSqlPool
9091

9192
# Verify that it is gone by trying to get it again
9293
Assert-Throws {Get-AzSynapseSqlPool -ResourceGroupName $resourceGroupName -WorkspaceName $workspaceName -Name $sqlPoolName}
94+
95+
# Get restore point
96+
[array]$restorePoint = Get-AzSynapseSqlPoolRestorePoint -ResourceGroupName $resourceGroupName -WorkspaceName $workspaceName -Name $restoreFromSqlPoolName
97+
98+
Assert-AreEqual "DISCRETE" $restorePoint[0].RestorePointType
99+
100+
# Restore SqlPool
101+
$sqlPoolRestored = Restore-AzSynapseSqlPool -FromRestorePoint -ResourceGroupName $resourceGroupName -WorkspaceName $workspaceName -Name $sqlPoolName -SourceWorkspaceName $workspaceName -SourceSqlPoolName $restoreFromSqlPoolName -PerformanceLevel $sqlPoolPerformanceLevel
102+
103+
Assert-AreEqual $sqlPoolName $sqlPoolRestored.Name
104+
Assert-AreEqual "Microsoft.Synapse/Workspaces/sqlPools" $sqlPoolRestored.Type
105+
Assert-True {$sqlPoolRestored.Id -like "*$resourceGroupName*"}
106+
107+
# Suspend SqlPool
108+
$sqlPoolSuspended = Suspend-AzSynapseSqlPool -ResourceGroupName $resourceGroupName -WorkspaceName $workspaceName -Name $sqlPoolName
109+
110+
Assert-AreEqual "Paused" $sqlPoolSuspended.Status
111+
112+
# Resume SqlPool
113+
$sqlPoolResumed = Resume-AzSynapseSqlPool -ResourceGroupName $resourceGroupName -WorkspaceName $workspaceName -Name $sqlPoolName
114+
115+
Assert-AreEqual "Online" $sqlPoolResumed.Status
116+
117+
# Delete SqlPool
118+
Assert-True {Remove-AzSynapseSqlPool -ResourceGroupName $resourceGroupName -WorkspaceName $workspaceName -Name $sqlPoolName -PassThru} "Remove SqlPool failed."
93119
}
94120
finally
95121
{

src/Synapse/Synapse.Test/SessionRecords/Microsoft.Azure.Commands.Synapse.Test.ScenarioTests.SqlPoolTests/TestSynapseSqlPool.json

Lines changed: 6214 additions & 591 deletions
Large diffs are not rendered by default.

src/Synapse/Synapse/Az.Synapse.psd1

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,8 @@ CmdletsToExport = 'Get-AzSynapseSparkJob', 'Stop-AzSynapseSparkJob',
8888
'New-AzSynapseWorkspace', 'Remove-AzSynapseWorkspace',
8989
'Update-AzSynapseWorkspace', 'Get-AzSynapseSqlPool',
9090
'New-AzSynapseSqlPool', 'Remove-AzSynapseSqlPool',
91+
'Suspend-AzSynapseSqlPool', 'Resume-AzSynapseSqlPool',
92+
'Get-AzSynapseSqlPoolRestorePoint', 'Restore-AzSynapseSqlPool',
9193
'Update-AzSynapseSqlPool', 'Test-AzSynapseWorkspace',
9294
'Test-AzSynapseSparkPool', 'Test-AzSynapseSqlPool',
9395
'New-AzSynapseFirewallRule', 'Remove-AzSynapseFirewallRule',

src/Synapse/Synapse/ChangeLog.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,13 @@
6060
- Add `Remove-AzSynapseDataset` cmdlet
6161
- Add `Set-AzSynapseDataset` cmdlet
6262
- Add `New-AzSynapseDataset` cmdlet
63+
* Removed parameter sets related 'create from backup' and 'create from restore point' from the `New-AzSynapseSqlPool` cmdlet
64+
* Removed parameter sets related 'pause' and 'resume' from the `Update-AzSynapseSqlPool`
65+
* Added support for operation of Synapse Sql pool
66+
- Add `Get-AzSynapseSqlPoolRestorePoint` cmdlet
67+
- Add `Restore-AzSynapseSqlPool` cmdlet
68+
- Add `Resume-AzSynapseSqlPool` cmdlet
69+
- Add `Suspend-AzSynapseSqlPool` cmdlet
6370

6471
## Version 0.2.0
6572

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
using Microsoft.Azure.Commands.ResourceManager.Common.ArgumentCompleters;
2+
using Microsoft.Azure.Commands.Synapse.Common;
3+
using Microsoft.Azure.Commands.Synapse.Models;
4+
using Microsoft.Azure.Management.Internal.Resources.Utilities.Models;
5+
using Microsoft.WindowsAzure.Commands.Utilities.Common;
6+
using System.Linq;
7+
using System.Management.Automation;
8+
9+
namespace Microsoft.Azure.Commands.Synapse
10+
{
11+
[Cmdlet(VerbsCommon.Get, ResourceManager.Common.AzureRMConstants.AzureRMPrefix + SynapseConstants.SynapsePrefix + SynapseConstants.SqlPool + SynapseConstants.RestorePoint,
12+
DefaultParameterSetName = GetByNameParameterSet)]
13+
[OutputType(typeof(PSRestorePoint))]
14+
public class GetAzureSynapseSqlPoolRestorePoint : SynapseManagementCmdletBase
15+
{
16+
private const string GetByNameParameterSet = "GetByNameParameterSet";
17+
private const string GetByParentObjectParameterSet = "GetByParentObjectParameterSet";
18+
private const string GetByInputObjectParameterSet = "GetByInputObjectParameterSet";
19+
private const string GetByResourceIdParameterSet = "GetByResourceIdParameterSet";
20+
21+
[Parameter(Mandatory = false, ParameterSetName = GetByNameParameterSet, HelpMessage = HelpMessages.ResourceGroupName)]
22+
[ResourceGroupCompleter]
23+
[ValidateNotNullOrEmpty]
24+
public string ResourceGroupName { get; set; }
25+
26+
[Parameter(Mandatory = true, ParameterSetName = GetByNameParameterSet, HelpMessage = HelpMessages.WorkspaceName)]
27+
[ResourceNameCompleter(ResourceTypes.Workspace, nameof(ResourceGroupName))]
28+
[ValidateNotNullOrEmpty]
29+
public string WorkspaceName { get; set; }
30+
31+
[Parameter(Mandatory = true, ParameterSetName = GetByNameParameterSet, HelpMessage = HelpMessages.SqlPoolName)]
32+
[Parameter(Mandatory = true, ParameterSetName = GetByParentObjectParameterSet, HelpMessage = HelpMessages.SqlPoolName)]
33+
[ResourceNameCompleter(
34+
ResourceTypes.SqlPool,
35+
nameof(ResourceGroupName),
36+
nameof(WorkspaceName))]
37+
[ValidateNotNullOrEmpty]
38+
public string Name { get; set; }
39+
40+
[Parameter(ValueFromPipeline = true, ParameterSetName = GetByParentObjectParameterSet,
41+
Mandatory = true, HelpMessage = HelpMessages.WorkspaceObject)]
42+
[ValidateNotNull]
43+
public PSSynapseWorkspace WorkspaceObject { get; set; }
44+
45+
[Parameter(ValueFromPipeline = true, ParameterSetName = GetByInputObjectParameterSet, Mandatory = true,
46+
HelpMessage = HelpMessages.SqlPoolObject)]
47+
[ValidateNotNull]
48+
public PSSynapseSqlPool InputObject { get; set; }
49+
50+
[Parameter(ValueFromPipelineByPropertyName = false, ParameterSetName = GetByResourceIdParameterSet,
51+
Mandatory = true, HelpMessage = HelpMessages.SqlPoolResourceId)]
52+
[ValidateNotNullOrEmpty]
53+
public string ResourceId { get; set; }
54+
55+
public override void ExecuteCmdlet()
56+
{
57+
if (this.IsParameterBound(c => c.WorkspaceObject))
58+
{
59+
this.ResourceGroupName = new ResourceIdentifier(this.WorkspaceObject.Id).ResourceGroupName;
60+
this.WorkspaceName = this.WorkspaceObject.Name;
61+
}
62+
63+
if (this.IsParameterBound(c => c.InputObject))
64+
{
65+
var resourceIdentifier = new ResourceIdentifier(this.InputObject.Id);
66+
this.ResourceGroupName = resourceIdentifier.ResourceGroupName;
67+
this.WorkspaceName = resourceIdentifier.ParentResource;
68+
this.WorkspaceName = this.WorkspaceName.Substring(this.WorkspaceName.LastIndexOf('/') + 1);
69+
this.Name = resourceIdentifier.ResourceName;
70+
}
71+
72+
if (this.IsParameterBound(c => c.ResourceId))
73+
{
74+
var resourceIdentifier = new ResourceIdentifier(this.ResourceId);
75+
this.ResourceGroupName = resourceIdentifier.ResourceGroupName;
76+
this.WorkspaceName = resourceIdentifier.ParentResource;
77+
this.WorkspaceName = this.WorkspaceName.Substring(this.WorkspaceName.LastIndexOf('/') + 1);
78+
this.Name = resourceIdentifier.ResourceName;
79+
}
80+
81+
if (string.IsNullOrEmpty(this.ResourceGroupName))
82+
{
83+
this.ResourceGroupName = this.SynapseAnalyticsClient.GetResourceGroupByWorkspaceName(this.WorkspaceName);
84+
}
85+
86+
var result = this.SynapseAnalyticsClient.ListSqlPoolRestorePoints(this.ResourceGroupName, this.WorkspaceName, this.Name)
87+
.Select(element => new PSRestorePoint(element));
88+
WriteObject(result, true);
89+
}
90+
}
91+
}

0 commit comments

Comments
 (0)