@@ -52,13 +52,13 @@ public class RestoreAzureRmSqlManagedDatabase
52
52
protected const string PointInTimeDeletedDatabasesCrossInstanceRestoreFromNameAndResourceGroupParameterSet =
53
53
"PointInTimeDeletedDatabasesCrossInstanceRestoreInstanceDatabaseFromInputParameters" ;
54
54
55
- private const string GeoRestoreFromGeoBackupSetNameFromGeoBackupObjectParameterSet =
55
+ private const string GeoRestoreFromGeoBackupSetNameFromGeoBackupObjectParameterSet =
56
56
"GeoRestoreFromGeoBackupSetNameFromGeoBackupObjectParameter" ;
57
57
58
- private const string GeoRestoreFromGeoBackupSetNameFromResourceIdParameterSet =
58
+ private const string GeoRestoreFromGeoBackupSetNameFromResourceIdParameterSet =
59
59
"GeoRestoreFromGeoBackupSetNameFromResourceIdParameter" ;
60
60
61
- private const string GeoRestoreFromGeoBackupSetNameFromNameAndResourceGroupParameterSet =
61
+ private const string GeoRestoreFromGeoBackupSetNameFromNameAndResourceGroupParameterSet =
62
62
"GeoRestoreFromGeoBackupSetNameFromNameAndResourceGroupParameter" ;
63
63
64
64
/// <summary>
@@ -115,6 +115,28 @@ public class RestoreAzureRmSqlManagedDatabase
115
115
HelpMessage = "Restore from a geo backup." ) ]
116
116
public SwitchParameter FromGeoBackup { get ; set ; }
117
117
118
+ /// <summary>
119
+ /// Gets or sets the source subscription id.
120
+ /// </summary>
121
+ [ Parameter (
122
+ ParameterSetName = PointInTimeSameInstanceRestoreFromNameAndResourceGroupParameterSet ,
123
+ Mandatory = false ,
124
+ HelpMessage = "Source subscription id." ) ]
125
+ [ Parameter (
126
+ ParameterSetName = PointInTimeCrossInstanceRestoreFromNameAndResourceGroupParameterSet ,
127
+ Mandatory = false ,
128
+ HelpMessage = "Source subscription id." ) ]
129
+ [ Parameter (
130
+ ParameterSetName = PointInTimeDeletedDatabasesSameInstanceRestoreFromNameAndResourceGroupParameterSet ,
131
+ Mandatory = false ,
132
+ HelpMessage = "Source subscription id." ) ]
133
+ [ Parameter (
134
+ ParameterSetName = PointInTimeDeletedDatabasesCrossInstanceRestoreFromNameAndResourceGroupParameterSet ,
135
+ Mandatory = false ,
136
+ HelpMessage = "Source subscription id." ) ]
137
+ [ Alias ( "SourceSubscriptionId" ) ]
138
+ public string SubscriptionId { get ; set ; }
139
+
118
140
/// <summary>
119
141
/// Gets or sets the name of the resource group to use.
120
142
/// </summary>
@@ -139,6 +161,7 @@ public class RestoreAzureRmSqlManagedDatabase
139
161
Position = 0 ,
140
162
HelpMessage = "The name of the resource group." ) ]
141
163
[ ResourceGroupCompleter ]
164
+ [ Alias ( "SourceResourceGroupName" ) ]
142
165
[ ValidateNotNullOrEmpty ]
143
166
public override string ResourceGroupName { get ; set ; }
144
167
@@ -166,6 +189,7 @@ public class RestoreAzureRmSqlManagedDatabase
166
189
Position = 1 ,
167
190
HelpMessage = "The name of the instance." ) ]
168
191
[ ResourceNameCompleter ( "Microsoft.Sql/managedInstances" , "ResourceGroupName" ) ]
192
+ [ Alias ( "SourceInstanceName" ) ]
169
193
[ ValidateNotNullOrEmpty ]
170
194
public override string InstanceName { get ; set ; }
171
195
@@ -192,7 +216,7 @@ public class RestoreAzureRmSqlManagedDatabase
192
216
Mandatory = true ,
193
217
Position = 2 ,
194
218
HelpMessage = "The instance database name to restore." ) ]
195
- [ Alias ( "InstanceDatabaseName" ) ]
219
+ [ Alias ( "InstanceDatabaseName" , "SourceInstanceDatabaseName" ) ]
196
220
public string Name { get ; set ; }
197
221
198
222
/// <summary>
@@ -376,16 +400,36 @@ protected override AzureSqlManagedDatabaseModel GetEntity()
376
400
RestorePointInTime = PointInTime ,
377
401
} ;
378
402
403
+ if ( SubscriptionId != null && ! Guid . TryParse ( SubscriptionId , out Guid _ ) )
404
+ {
405
+ throw new PSArgumentException (
406
+ string . Format ( "The provided subscription ID {0} is not a valid Guid." , SubscriptionId ) ,
407
+ "SubscriptionId" ) ;
408
+ }
409
+
410
+ if ( SubscriptionId == null )
411
+ {
412
+ SubscriptionId = ModelAdapter . Context . Subscription . Id ;
413
+ }
414
+
379
415
switch ( ParameterSetName )
380
416
{
381
417
case PointInTimeDeletedDatabasesCrossInstanceRestoreFromNameAndResourceGroupParameterSet :
382
418
case PointInTimeDeletedDatabasesSameInstanceRestoreFromNameAndResourceGroupParameterSet :
383
- model . RestorableDroppedDatabaseId = ModelAdapter . GetDeletedManagedDatabaseResourceId ( this . ResourceGroupName , this . InstanceName , this . Name + "," + this . DeletionDate . ToFileTimeUtc ( ) ) ;
419
+ model . RestorableDroppedDatabaseId = "/subscriptions/" + SubscriptionId +
420
+ "/resourceGroups/" + ResourceGroupName +
421
+ "/providers/Microsoft.Sql/managedInstances/" + InstanceName +
422
+ "/restorableDroppedDatabases/" + this . Name + "," + this . DeletionDate . ToFileTimeUtc ( ) ;
384
423
break ;
424
+
385
425
case PointInTimeCrossInstanceRestoreFromNameAndResourceGroupParameterSet :
386
426
case PointInTimeSameInstanceRestoreFromNameAndResourceGroupParameterSet :
387
- model . SourceDatabaseId = ModelAdapter . GetManagedDatabaseResourceId ( this . ResourceGroupName , this . InstanceName , this . Name ) ;
427
+ model . SourceDatabaseId = "/subscriptions/" + SubscriptionId +
428
+ "/resourceGroups/" + ResourceGroupName +
429
+ "/providers/Microsoft.Sql/managedInstances/" + InstanceName +
430
+ "/databases/" + Name ;
388
431
break ;
432
+
389
433
case PointInTimeSameInstanceRestoreFromInputObjectParameterSet :
390
434
case PointInTimeCrossInstanceRestoreFromInputObjectParameterSet :
391
435
ResourceGroupName = InputObject . ResourceGroupName ;
@@ -400,6 +444,7 @@ protected override AzureSqlManagedDatabaseModel GetEntity()
400
444
}
401
445
402
446
break ;
447
+
403
448
case PointInTimeSameInstanceRestoreFromResourceIdParameterSet :
404
449
case PointInTimeCrossInstanceRestoreFromResourceIdParameterSet :
405
450
var resourceInfo = new ResourceIdentifier ( ResourceId ) ;
@@ -415,24 +460,30 @@ protected override AzureSqlManagedDatabaseModel GetEntity()
415
460
}
416
461
417
462
break ;
463
+
418
464
case GeoRestoreFromGeoBackupSetNameFromGeoBackupObjectParameterSet :
419
465
ResourceGroupName = GeoBackupObject . ResourceGroupName ;
420
466
InstanceName = GeoBackupObject . ManagedInstanceName ;
421
467
model . RecoverableDatabaseId = GeoBackupObject . Id ;
422
468
model . CreateMode = "Recovery" ;
423
469
model . RestorePointInTime = null ;
424
470
break ;
471
+
425
472
case GeoRestoreFromGeoBackupSetNameFromNameAndResourceGroupParameterSet :
426
- model . RecoverableDatabaseId = "/subscriptions/" + ModelAdapter . Context . Subscription . Id + "/resourceGroups/" + ResourceGroupName + "/providers/Microsoft.Sql/managedInstances/"
427
- + InstanceName + "/recoverableDatabases/" + Name ;
473
+ model . RecoverableDatabaseId = "/subscriptions/" + SubscriptionId +
474
+ "/resourceGroups/" + ResourceGroupName +
475
+ "/providers/Microsoft.Sql/managedInstances/" + InstanceName +
476
+ "/recoverableDatabases/" + Name ;
428
477
model . CreateMode = "Recovery" ;
429
478
model . RestorePointInTime = null ;
430
479
break ;
480
+
431
481
case GeoRestoreFromGeoBackupSetNameFromResourceIdParameterSet :
432
482
model . CreateMode = "Recovery" ;
433
483
model . RecoverableDatabaseId = ResourceId ;
434
484
model . RestorePointInTime = null ;
435
485
break ;
486
+
436
487
default :
437
488
throw new ArgumentException ( "No ParameterSet name" ) ;
438
489
}
0 commit comments