Skip to content

Commit 666ec88

Browse files
jovancevic123jovancevic123
andauthored
Adding optional target subscription Id parameter in order to enable cross-subscription movement (#25127)
* Adding optional target subscription Id parameter in order to enable cross subscription db move/copy. * Adding changed to ChangeLog.md file. * Generating help files. * Adding tests for cross subscription functionality. --------- Co-authored-by: jovancevic123 <[email protected]>
1 parent 1d43331 commit 666ec88

13 files changed

+5047
-30
lines changed

src/Sql/Sql.Test/ScenarioTests/ManagedDatabaseMoveCopyTests.cs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,12 @@ public void TestManagedDatabaseMove()
3232
TestRunner.RunTestScript("Test-ManagedDatabaseMove");
3333
}
3434

35+
[Fact]
36+
[Trait(Category.AcceptanceType, Category.LiveOnly)]
37+
public void TestCrossSubscriptionManagedDatabaseMove()
38+
{
39+
TestRunner.RunTestScript("Test-CrossSubscriptionManagedDatabaseMove");
40+
}
3541

3642
[Fact]
3743
[Trait(Category.AcceptanceType, Category.CheckIn)]
@@ -46,7 +52,13 @@ public void TestManagedDatabaseCopy()
4652
{
4753
TestRunner.RunTestScript("Test-ManagedDatabaseCopy");
4854
}
49-
55+
56+
[Fact]
57+
[Trait(Category.AcceptanceType, Category.LiveOnly)]
58+
public void TestCrossSubscriptionManagedDatabaseCopy()
59+
{
60+
TestRunner.RunTestScript("Test-CrossSubscriptionManagedDatabaseCopy");
61+
}
5062

5163
[Fact]
5264
[Trait(Category.AcceptanceType, Category.CheckIn)]

src/Sql/Sql.Test/ScenarioTests/ManagedDatabaseMoveCopyTests.ps1

Lines changed: 186 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,99 @@ function Test-ManagedDatabaseMove
136136
}
137137
}
138138

139+
function Test-CrossSubscriptionManagedDatabaseMove
140+
{
141+
$sourceRGName = "source-rg-name"
142+
$targetRGName = "target-rg-name"
143+
$sourceInstanceName = "source-mi-name"
144+
$targetInstanceName = "target-mi-name"
145+
$targetSubscriptionId = "0000-0000-0000-0000"
146+
$managedDatabaseName = "database-name"
147+
148+
try
149+
{
150+
Move-AzSqlInstanceDatabase `
151+
-ResourceGroupName $sourceRGName `
152+
-InstanceName $sourceInstanceName `
153+
-Name $managedDatabaseName `
154+
-TargetSubscriptionId $targetSubscriptionId `
155+
-TargetInstanceName $targetInstanceName `
156+
-TargetResourceGroupName $targetRGName
157+
158+
$moveOperation = Get-AzSqlInstanceDatabaseMoveOperation `
159+
-ResourceGroupName $sourceRGName `
160+
-InstanceName $sourceInstanceName `
161+
-Name $managedDatabaseName `
162+
-OnlyLatestPerDatabase
163+
164+
Assert-NotNull $moveOperation
165+
Assert-AreEqual $moveOperation.TargetManagedInstanceName $targetInstanceName
166+
Assert-AreEqual $moveOperation.SourceManagedInstanceName $sourceInstanceName
167+
Assert-AreEqual $moveOperation.SourceDatabaseName $managedDatabaseName
168+
Assert-AreEqual $moveOperation.OperationMode "Move"
169+
170+
while ($moveOperation.isCancellable -eq $false) {
171+
Start-TestSleep -Seconds 30
172+
173+
$moveOperation = Get-AzSqlInstanceDatabaseMoveOperation `
174+
-ResourceGroupName $sourceRGName `
175+
-InstanceName $sourceInstanceName `
176+
-Name $managedDatabaseName `
177+
-OnlyLatestPerDatabase
178+
}
179+
180+
Stop-AzSqlInstanceDatabaseMove `
181+
-ResourceGroupName $sourceRGName `
182+
-InstanceName $sourceInstanceName `
183+
-Name $managedDatabaseName `
184+
-TargetSubscriptionId $targetSubscriptionId `
185+
-TargetInstanceName $targetInstanceName `
186+
-TargetResourceGroupName $targetRGName
187+
188+
Wait-ForOperationToSucceed `
189+
-rgName $sourceRGName `
190+
-InstanceName $sourceInstanceName `
191+
-databaseName $managedDatabaseName
192+
193+
Move-AzSqlInstanceDatabase `
194+
-ResourceGroupName $sourceRGName `
195+
-InstanceName $sourceInstanceName `
196+
-Name $managedDatabaseName `
197+
-TargetSubscriptionId $targetSubscriptionId `
198+
-TargetInstanceName $targetInstanceName `
199+
-TargetResourceGroupName $targetRGName
200+
201+
Wait-ForOperationToSucceed `
202+
-rgName $sourceRGName `
203+
-InstanceName $sourceInstanceName `
204+
-databaseName $managedDatabaseName
205+
206+
Complete-AzSqlInstanceDatabaseMove `
207+
-ResourceGroupName $sourceRGName `
208+
-InstanceName $sourceInstanceName `
209+
-Name $managedDatabaseName `
210+
-TargetSubscriptionId $targetSubscriptionId `
211+
-TargetInstanceName $targetInstanceName `
212+
-TargetResourceGroupName $targetRGName `
213+
-Force
214+
215+
Wait-ForOperationToSucceed `
216+
-rgName $sourceRGName `
217+
-InstanceName $sourceInstanceName `
218+
-databaseName $managedDatabaseName
219+
220+
Assert-Throws {
221+
Get-AzSqlInstanceDatabase `
222+
-ResourceGroupName $sourceRGName `
223+
-InstanceName $sourceInstanceName `
224+
-Name $managedDatabaseName
225+
}
226+
}
227+
finally
228+
{
229+
}
230+
}
231+
139232
function Test-ManagedDatabaseMovePiping
140233
{
141234
$sourceRg = Create-ResourceGroupForTest
@@ -478,6 +571,99 @@ function Test-ManagedDatabaseCopy
478571
}
479572
}
480573

574+
function Test-CrossSubscriptionManagedDatabaseCopy
575+
{
576+
$sourceRGName = "source-rg-name"
577+
$targetRGName = "target-rg-name"
578+
$sourceInstanceName = "source-mi-name"
579+
$targetInstanceName = "target-mi-name"
580+
$targetSubscriptionId = "0000-0000-0000-0000"
581+
$managedDatabaseName = "database-name"
582+
583+
try
584+
{
585+
Copy-AzSqlInstanceDatabase `
586+
-ResourceGroupName $sourceRGName `
587+
-InstanceName $sourceInstanceName `
588+
-Name $managedDatabaseName `
589+
-TargetSubscriptionId $targetSubscriptionId `
590+
-TargetInstanceName $targetInstanceName `
591+
-TargetResourceGroupName $targetRGName
592+
593+
$CopyOperation = Get-AzSqlInstanceDatabaseCopyOperation `
594+
-ResourceGroupName $sourceRGName `
595+
-InstanceName $sourceInstanceName `
596+
-Name $managedDatabaseName `
597+
-OnlyLatestPerDatabase
598+
599+
Assert-NotNull $CopyOperation
600+
Assert-AreEqual $CopyOperation.TargetManagedInstanceName $targetInstanceName
601+
Assert-AreEqual $CopyOperation.SourceManagedInstanceName $sourceInstanceName
602+
Assert-AreEqual $CopyOperation.SourceDatabaseName $managedDatabaseName
603+
Assert-AreEqual $CopyOperation.OperationMode "Copy"
604+
605+
while ($CopyOperation.isCancellable -eq $false) {
606+
Start-TestSleep -Seconds 30
607+
608+
$CopyOperation = Get-AzSqlInstanceDatabaseCopyOperation `
609+
-ResourceGroupName $sourceRGName `
610+
-InstanceName $sourceInstanceName `
611+
-Name $managedDatabaseName `
612+
-OnlyLatestPerDatabase
613+
}
614+
615+
Stop-AzSqlInstanceDatabaseCopy `
616+
-ResourceGroupName $sourceRGName `
617+
-InstanceName $sourceInstanceName `
618+
-Name $managedDatabaseName `
619+
-TargetSubscriptionId $targetSubscriptionId `
620+
-TargetInstanceName $targetInstanceName `
621+
-TargetResourceGroupName $targetRGName
622+
623+
Wait-ForCopyOperationToSucceed `
624+
-rgName $sourceRGName `
625+
-instanceName $sourceInstanceName `
626+
-databaseName $managedDatabaseName
627+
628+
Copy-AzSqlInstanceDatabase `
629+
-ResourceGroupName $sourceRGName `
630+
-InstanceName $sourceInstanceName `
631+
-Name $managedDatabaseName `
632+
-TargetSubscriptionId $targetSubscriptionId `
633+
-TargetInstanceName $targetInstanceName `
634+
-TargetResourceGroupName $targetRGName
635+
636+
Wait-ForCopyOperationToSucceed `
637+
-rgName $sourceRGName `
638+
-instanceName $sourceInstanceName `
639+
-databaseName $managedDatabaseName
640+
641+
Complete-AzSqlInstanceDatabaseCopy `
642+
-ResourceGroupName $sourceRGName `
643+
-InstanceName $sourceInstanceName `
644+
-Name $managedDatabaseName `
645+
-TargetSubscriptionId $targetSubscriptionId `
646+
-TargetInstanceName $targetInstanceName `
647+
-TargetResourceGroupName $targetRGName
648+
649+
Wait-ForCopyOperationToSucceed `
650+
-rgName $sourceRGName `
651+
-instanceName $sourceInstanceName `
652+
-databaseName $managedDatabaseName
653+
654+
$dbOnSource = Get-AzSqlInstanceDatabase `
655+
-ResourceGroupName $sourceRGName `
656+
-InstanceName $sourceInstanceName `
657+
-Name $managedDatabaseName
658+
659+
Assert-NotNull $dbOnSource
660+
661+
}
662+
finally
663+
{
664+
}
665+
}
666+
481667
function Test-ManagedDatabaseCopyPiping
482668
{
483669
$sourceRg = Create-ResourceGroupForTest

0 commit comments

Comments
 (0)