Skip to content

Commit 8df5506

Browse files
committed
re-recorded all test cases
1 parent 9734e3b commit 8df5506

File tree

42 files changed

+9089
-4846
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+9089
-4846
lines changed

src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Backupcenter/Search-AzDataProtectionBackupInstanceInAzGraph.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
param (
88
[Parameter(Mandatory, HelpMessage='Subscription of Vault')]
99
[System.String[]]
10-
${Subscription},
10+
${Subscription}, # TODO: add alias to all ARG command params
1111

1212
[Parameter(Mandatory=$false, HelpMessage='Resource Group of Vault')]
1313
[System.String[]]

src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Backupcenter/Search-AzDataProtectionBackupVaultInAzGraph.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
[Parameter(Mandatory, HelpMessage='Subscription of Vault')]
99
[Alias('SubscriptionId')]
1010
[System.String[]]
11-
${Subscription}, # TODO: add alias to all ARG command params
11+
${Subscription},
1212

1313
[Parameter(Mandatory=$false, HelpMessage='Resource Group of Vault')]
1414
[Alias('ResourceGroupName')]

src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/Restore/Initialize-AzDataProtectionRestoreRequest.ps1

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@
8989
[System.String]
9090
${TargetContainerURI},
9191

92-
[Parameter(ParameterSetName="RestoreAsFiles", Mandatory, HelpMessage='File name to be prefixed to the restored backup data.')]
92+
[Parameter(ParameterSetName="RestoreAsFiles", Mandatory=$false, HelpMessage='File name to be prefixed to the restored backup data.')]
9393
[System.String]
9494
${FileNamePrefix},
9595

@@ -192,12 +192,26 @@
192192
$restoreRequest.RestoreTargetInfo = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20231201.RestoreFilesTargetInfo]::new()
193193
$restoreRequest.RestoreTargetInfo.ObjectType = "RestoreFilesTargetInfo"
194194

195-
if(!($PSBoundParameters.ContainsKey("FileNamePrefix")) -or !($PSBoundParameters.ContainsKey("TargetContainerURI")) ){
196-
$errormsg = "FileNamePrefix and TargetContainerURI parameters are required for RestoreAsFiles "
197-
throw $errormsg
195+
if($manifest.fileNamePrefixDisabled -and $PSBoundParameters.ContainsKey("FileNamePrefix")){
196+
$errormsg = "FileNamePrefix can't be set for given DatasourceType. Please try again after removing FileNamePrefix parameter"
197+
throw $errormsg
198+
}
199+
elseif($manifest.fileNamePrefixDisabled -and !($PSBoundParameters.ContainsKey("TargetContainerURI"))){
200+
$errormsg = "TargetContainerURI parameter is required for RestoreAsFiles for given DatasourceType"
201+
throw $errormsg
202+
}
203+
elseif( !$manifest.fileNamePrefixDisabled -and (!($PSBoundParameters.ContainsKey("FileNamePrefix")) -or !($PSBoundParameters.ContainsKey("TargetContainerURI"))) ){
204+
$errormsg = "FileNamePrefix and TargetContainerURI parameters are required for RestoreAsFiles for given DatasourceType"
205+
throw $errormsg
198206
}
199207

200-
$restoreRequest.RestoreTargetInfo.TargetDetail.FilePrefix = $FileNamePrefix
208+
if($manifest.fileNamePrefixDisabled){
209+
$restoreRequest.RestoreTargetInfo.TargetDetail.FilePrefix = "dummyprefix"
210+
}
211+
else{
212+
$restoreRequest.RestoreTargetInfo.TargetDetail.FilePrefix = $FileNamePrefix
213+
}
214+
201215
$restoreRequest.RestoreTargetInfo.TargetDetail.RestoreTargetLocationType = "AzureBlobs"
202216
$restoreRequest.RestoreTargetInfo.TargetDetail.Url = $TargetContainerURI
203217

src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/Vault/Set-AzDataProtectionMSIPermission.ps1

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -213,30 +213,17 @@
213213
$storageAccountSubId = ($targetResourceArmId -split "/resourceGroups/")[0]
214214
}
215215
else{
216-
if($StorageAccountARMId -eq ""){#$StorageAccountResourceGroupName -eq $null){
216+
if($StorageAccountARMId -eq ""){
217217
$err = "Permissions can't be assigned to target storage account. Please input parameter StorageAccountARMId"
218218
throw $err
219219
}
220220

221221
# storage Account subscription and resource group
222-
$storageAccountSubId = ($StorageAccountARMId -split "/resourceGroups/")[0] # "/subscriptions/" + $subscriptionIdInternal
223-
$storageAccResourceGroupId = ($StorageAccountARMId -split "/providers/")[0] #$storageAccountSubId + "/resourceGroups/" + $StorageAccountResourceGroupName
224-
225-
# $url = $restoreRequest.RestoreTargetInfo.TargetDetail.Url
226-
#
227-
# if(-not ($url -match "^https://.+blob.core.windows.net/.+")){
228-
# $err = "Parameter restoreRequest.RestoreTargetInfo.TargetDetail.Url is not in correct format"
229-
# throw $err
230-
# }
231-
# $storageAccName = (($url -split "//")[1] -split "\.")[0]
232-
#
233-
# CheckStorageModuleDependency
234-
# $contextSub = (Get-AzContext).Subscription.Id
235-
# Set-AzContext -SubscriptionId $subscriptionIdInternal | Out-Null
222+
$storageAccountSubId = ($StorageAccountARMId -split "/resourceGroups/")[0]
223+
$storageAccResourceGroupId = ($StorageAccountARMId -split "/providers/")[0]
236224

237225
# storage Account ID
238-
$storageAccId = $StorageAccountARMId #(Get-AzStorageAccount -ResourceGroupName $StorageAccountResourceGroupName -Name $storageAccName).Id
239-
# Set-AzContext -SubscriptionId $contextSub | Out-Null
226+
$storageAccId = $StorageAccountARMId
240227
}
241228

242229
$CheckPermission = $AllRoles | Where-Object { ($_.Scope -eq $storageAccId -or $_.Scope -eq $storageAccResourceGroupId -or $_.Scope -eq $storageAccountSubId) -and $_.RoleDefinitionName -eq $Permission}

src/DataProtection/DataProtection.Autorest/custom/manifests/AzureBlob.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
"allowedRestoreModes": [ "PointInTimeBased", "RecoveryPointBased" ],
1616
"allowedRestoreTargetTypes": [ "OriginalLocation", "AlternateLocation" ],
1717
"itemLevelRecoveyEnabled": true,
18+
"fileNamePrefixDisabled": false,
1819
"addBackupDatasourceParametersList": true,
1920
"backupConfigurationRequired": false,
2021
"addDataStoreParametersList": false,

src/DataProtection/DataProtection.Autorest/custom/manifests/AzureDatabaseForMySQL.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
"allowedRestoreModes": [ "RecoveryPointBased" ],
1616
"allowedRestoreTargetTypes": [ "RestoreAsFiles" ],
1717
"itemLevelRecoveyEnabled": false,
18+
"fileNamePrefixDisabled": true,
1819
"addBackupDatasourceParametersList": false,
1920
"backupConfigurationRequired": false,
2021
"addDataStoreParametersList": false,
@@ -28,7 +29,7 @@
2829
"disableAddRetentionRule": false,
2930
"disableCustomRetentionTag": false,
3031
"backupScheduleSupported": true,
31-
"supportedBackupFrequency": [ "Weekly", "Monthly" ],
32+
"supportedBackupFrequency": [ "Weekly" ],
3233
"defaultPolicy": {
3334
"name": "MySQLPolicy1",
3435
"datasourceTypes": [ "Microsoft.DBforMySQL/flexibleServers" ],

src/DataProtection/DataProtection.Autorest/custom/manifests/AzureDatabaseForPGFlexServer.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
"allowedRestoreModes": [ "RecoveryPointBased" ],
1616
"allowedRestoreTargetTypes": [ "RestoreAsFiles" ],
1717
"itemLevelRecoveyEnabled": false,
18+
"fileNamePrefixDisabled": true,
1819
"addBackupDatasourceParametersList": false,
1920
"backupConfigurationRequired": false,
2021
"addDataStoreParametersList": false,
@@ -28,7 +29,7 @@
2829
"disableAddRetentionRule": false,
2930
"disableCustomRetentionTag": false,
3031
"backupScheduleSupported": true,
31-
"supportedBackupFrequency": [ "Weekly", "Monthly" ],
32+
"supportedBackupFrequency": [ "Daily", "Weekly" ],
3233
"defaultPolicy": {
3334
"name": "PGFlexPolicy1",
3435
"datasourceTypes": [ "Microsoft.DBforPostgreSQL/flexibleServers" ],

src/DataProtection/DataProtection.Autorest/custom/manifests/AzureDatabaseForPostgreSQL.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
"allowedRestoreModes": [ "RecoveryPointBased" ],
1616
"allowedRestoreTargetTypes": [ "AlternateLocation", "RestoreAsFiles" ],
1717
"itemLevelRecoveyEnabled": false,
18+
"fileNamePrefixDisabled": false,
1819
"addBackupDatasourceParametersList": false,
1920
"backupConfigurationRequired": false,
2021
"addDataStoreParametersList": false,

src/DataProtection/DataProtection.Autorest/custom/manifests/AzureDisk.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
"allowedRestoreModes": [ "RecoveryPointBased" ],
1616
"allowedRestoreTargetTypes": [ "AlternateLocation" ],
1717
"itemLevelRecoveyEnabled": false,
18+
"fileNamePrefixDisabled": false,
1819
"addBackupDatasourceParametersList": false,
1920
"backupConfigurationRequired": false,
2021
"addDataStoreParametersList": true,

src/DataProtection/DataProtection.Autorest/custom/manifests/AzureKubernetesService.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
"allowedRestoreModes": [ "RecoveryPointBased" ],
1616
"allowedRestoreTargetTypes": [ "AlternateLocation", "OriginalLocation" ],
1717
"itemLevelRecoveyEnabled": true,
18+
"fileNamePrefixDisabled": false,
1819
"addBackupDatasourceParametersList": true,
1920
"backupConfigurationRequired": true,
2021
"addDataStoreParametersList": true,

src/DataProtection/DataProtection.Autorest/docs/Initialize-AzDataProtectionBackupInstance.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,26 @@ The fourth command backup configuration object needed for AzureKubernetesService
6868
The fifth command initializes the client object for backup instance.
6969
This object can now be used to configure backup using New-AzDataProtectionBackupInstance after all necessary permissions are assigned with Set-AzDataProtectionMSIPermission command.
7070

71+
### Example 3: Configure protection for AzureDatabaseForPGFlexServer
72+
```powershell
73+
$vault = Get-AzDataProtectionBackupVault -SubscriptionId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -ResourceGroupName "resourceGroupName" -VaultName "vaultName"
74+
$pol = Get-AzDataProtectionBackupPolicy -SubscriptionId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -VaultName "vaultName" -ResourceGroupName "resourceGroupName" -Name "policyName"
75+
$datasourceId = "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/rgName/providers/Microsoft.DBforPostgreSQL/flexibleServers/test-pgflex"
76+
$backupInstanceClientObject = Initialize-AzDataProtectionBackupInstance -DatasourceType AzureDatabaseForPGFlexServer -DatasourceLocation $vault.Location -PolicyId $pol[0].Id -DatasourceId $datasourceId
77+
```
78+
79+
```output
80+
Name BackupInstanceName
81+
---- ------------------
82+
test-pgflex-test-pgflex-ed68435e-069t-4b4a-9d84-d0c194800fc2
83+
```
84+
85+
The first command gets the backup vault.
86+
The second command get the AzureDatabaseForPGFlexServer policy.
87+
The third command datasource ARM Id.
88+
The fourth command initializes the backup instance.
89+
Similarly use datasourcetype AzureDatabaseForMySQL to initialize backup instance for AzureDatabaseForMySQL.
90+
7191
## PARAMETERS
7292

7393
### -BackupConfiguration

src/DataProtection/DataProtection.Autorest/docs/Initialize-AzDataProtectionRestoreRequest.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,16 @@ Initializes Restore Request object for triggering restore on a protected backup
1212

1313
## SYNTAX
1414

15-
### AlternateLocationFullRecovery (Default)
15+
### RestoreAsFiles (Default)
16+
```
17+
Initialize-AzDataProtectionRestoreRequest -DatasourceType <DatasourceTypes> -RestoreLocation <String>
18+
-RestoreType <RestoreTargetType> -SourceDataStore <DataStoreType> -TargetContainerURI <String>
19+
[-FileNamePrefix <String>] [-RecoveryPoint <String>] [-RehydrationDuration <String>]
20+
[-RehydrationPriority <String>] [-SecretStoreType <SecretStoreTypes>] [-SecretStoreURI <String>]
21+
[-TargetResourceIdForRestoreAsFile <String>] [<CommonParameters>]
22+
```
23+
24+
### AlternateLocationFullRecovery
1625
```
1726
Initialize-AzDataProtectionRestoreRequest -DatasourceType <DatasourceTypes> -RestoreLocation <String>
1827
-RestoreType <RestoreTargetType> -SourceDataStore <DataStoreType> -TargetResourceId <String>
@@ -50,15 +59,6 @@ Initialize-AzDataProtectionRestoreRequest -BackupInstance <BackupInstanceResourc
5059
[-SecretStoreURI <String>] [-ToPrefixPattern <String[]>] [<CommonParameters>]
5160
```
5261

53-
### RestoreAsFiles
54-
```
55-
Initialize-AzDataProtectionRestoreRequest -DatasourceType <DatasourceTypes> -FileNamePrefix <String>
56-
-RestoreLocation <String> -RestoreType <RestoreTargetType> -SourceDataStore <DataStoreType>
57-
-TargetContainerURI <String> [-RecoveryPoint <String>] [-RehydrationDuration <String>]
58-
[-RehydrationPriority <String>] [-SecretStoreType <SecretStoreTypes>] [-SecretStoreURI <String>]
59-
[-TargetResourceIdForRestoreAsFile <String>] [<CommonParameters>]
60-
```
61-
6262
## DESCRIPTION
6363
Initializes Restore Request object for triggering restore on a protected backup instance.
6464

@@ -242,7 +242,7 @@ Type: System.String
242242
Parameter Sets: RestoreAsFiles
243243
Aliases:
244244

245-
Required: True
245+
Required: False
246246
Position: Named
247247
Default value: None
248248
Accept pipeline input: False

src/DataProtection/DataProtection.Autorest/docs/New-AzDataProtectionBackupInstance.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,37 @@ This command runs in async way using parameter -NoWait.
125125
Next we fetch the operation in a while loop until it succeeds.
126126
The last command is used to configure protection for the backup instance.
127127

128+
### Example 5: Configure protection for AzureDatabaseForMySQL
129+
```powershell
130+
$vault = Get-AzDataProtectionBackupVault -SubscriptionId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -ResourceGroupName "resourceGroupName" -VaultName "vaultName"
131+
$pol = Get-AzDataProtectionBackupPolicy -SubscriptionId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -VaultName "vaultName" -ResourceGroupName "resourceGroupName" | Where-Object { $_.DatasourceType -match "mysql" }
132+
$datasourceId = "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/rgName/providers/Microsoft.DBforMySQL/flexibleServers/test-mysql"
133+
$backupInstanceClientObject = Initialize-AzDataProtectionBackupInstance -DatasourceType AzureDatabaseForMySQL -DatasourceLocation $vault.Location -PolicyId $pol[0].Id -DatasourceId $datasourceId
134+
Set-AzDataProtectionMSIPermission -VaultResourceGroup "resourceGroupName" -VaultName "vaultName" -BackupInstance $backupInstanceClientObject -PermissionsScope ResourceGroup
135+
$operationResponse = Test-AzDataProtectionBackupInstanceReadiness -ResourceGroupName "resourceGroupName" -VaultName "vaultName" -SubscriptionId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -BackupInstance $backupInstanceClientObject.Property -NoWait
136+
$operationId = $operationResponse.Target.Split("/")[-1].Split("?")[0]
137+
While((Get-AzDataProtectionOperationStatus -OperationId $operationId -Location $vault.Location -SubscriptionId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx").Status -eq "Inprogress"){
138+
Start-Sleep -Seconds 10
139+
}
140+
$backupnstanceCreate = New-AzDataProtectionBackupInstance -ResourceGroupName "resourceGroupName" -VaultName "vaultName" -SubscriptionId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -BackupInstance $backupInstanceClientObject
141+
```
142+
143+
```output
144+
Name BackupInstanceName
145+
---- ------------------
146+
test-mysql-test-mysql-64f7399a-b024-4d61-8f16-c424c5fd2564 test-mysql-test-mysql-64f7399a-b024-4d61-8f16-c424c5fd2564
147+
```
148+
149+
The first command gets the backup vault.
150+
The second command get the AzureDatabaseForMySQL policy.
151+
The third command datasource ARM Id.
152+
The fourth command initializes the backup instance.
153+
The fifth command assigns the necessary permissions for configure backup.
154+
The sixth command validates if the backup instance object is valid for configure protection (validate backup).
155+
This command runs in async way using parameter -NoWait.
156+
Next we fetch the operation in a while loop until it succeeds.
157+
The last command is used to configure protection for the backup instance.
158+
128159
## PARAMETERS
129160

130161
### -AsJob

src/DataProtection/DataProtection.Autorest/docs/New-AzDataProtectionBackupPolicy.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,39 @@ The second to fifteenth command defines and updates the Operational, vaulted wee
193193
Next we define a trigger object with schedule time and timzone, set it to 2:30 AM West Europe standard time.
194194
The last command creates the hybrid AzureBlob policy.
195195

196+
### Example 6: Create policy for AzureDatabaseForPGFlexServer/AzureDatabaseForMySQL
197+
```powershell
198+
$defaultPol = Get-AzDataProtectionPolicyTemplate -DatasourceType AzureDatabaseForPGFlexServer
199+
$lifeCycleVault = New-AzDataProtectionRetentionLifeCycleClientObject -SourceDataStore VaultStore -SourceRetentionDurationType Days -SourceRetentionDurationCount 10
200+
Edit-AzDataProtectionPolicyRetentionRuleClientObject -Policy $defaultPol -Name Default -LifeCycles $lifeCycleVault -IsDefault $true
201+
$lifeCycleVault = New-AzDataProtectionRetentionLifeCycleClientObject -SourceDataStore VaultStore -SourceRetentionDurationType Months -SourceRetentionDurationCount 6
202+
Edit-AzDataProtectionPolicyRetentionRuleClientObject -Policy $defaultPol -Name Monthly -LifeCycles $lifeCycleVault -IsDefault $false
203+
$schDates = @(
204+
(
205+
(Get-Date -Year 2024 -Month 03 -Day 04 -Hour 09 -Minute 0 -Second 0)
206+
),
207+
(
208+
(Get-Date -Year 2024 -Month 03 -Day 05 -Hour 09 -Minute 0 -Second 0)
209+
))
210+
$trigger = New-AzDataProtectionPolicyTriggerScheduleClientObject -ScheduleDays $schDates -IntervalType Weekly -IntervalCount 1
211+
Edit-AzDataProtectionPolicyTriggerClientObject -Schedule $trigger -Policy $defaultPol
212+
$tagCriteria = New-AzDataProtectionPolicyTagCriteriaClientObject -MonthsOfYear January -DaysOfMonth 1,5,Last
213+
Edit-AzDataProtectionPolicyTagClientObject -Policy $defaultPol -Name Monthly -Criteria $tagCriteria
214+
$pgflexPolicy = New-AzDataProtectionBackupPolicy -SubscriptionId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -ResourceGroupName "resourceGroupName" -VaultName "vaultName" -Name "pgflex-policy" -Policy $defaultPol
215+
```
216+
217+
```output
218+
Name Type
219+
---- ----
220+
pgflex-policy Microsoft.DataProtection/backupVaults/backupPolicies
221+
```
222+
223+
The first command gets the default policy template for AzureDatabaseForPGFlexServer.
224+
These steps can also be used for AzureDatabaseForMySQL as is.
225+
The second to tenth command defines and updates the vaulted daily, monthly lifecycle and tagcriteria.
226+
Next we define a trigger object with schedule, set it to every Weekly Monday, Tuesday schedule.
227+
The last command creates the AzureDatabaseForPGFlexServer policy.
228+
196229
## PARAMETERS
197230

198231
### -DefaultProfile

src/DataProtection/DataProtection.Autorest/docs/Start-AzDataProtectionBackupInstanceRestore.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,25 @@ while($jobstatus -ne "Completed")
191191
This command command triggers the cross region restore for AzureDatabaseForPostgreSQL.
192192
For triggering cross region restore to secondary region, use RestoreToSecondaryRegion switch.
193193

194+
### Example 9: Trigger restore as Files for datasource type AzureDatabaseForPGFlexServer, AzureDatabaseForMySQL.
195+
```powershell
196+
$instance = Get-AzDataProtectionBackupInstance -SubscriptionId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -ResourceGroupName "resourceGroupName" -VaultName "vaultName" | Where { $_.Name -match "test-pgflex" }
197+
$rps = Get-AzDataProtectionRecoveryPoint -SubscriptionId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -ResourceGroupName "resourceGroupName" -VaultName "vaultName" -BackupInstanceName $instance.Name
198+
$targetContainerURI = "https://teststorageaccount.blob.core.windows.net/powershellpgflexrestore"
199+
$storageAccId = (Get-AzStorageAccount -ResourceGroupName "teststorageaccountRG" -Name "teststorageaccount").Id
200+
$pgFlexRestoreAsFilesRequest = Initialize-AzDataProtectionRestoreRequest -DatasourceType AzureDatabaseForPGFlexServer -SourceDataStore VaultStore -RestoreLocation $vault.Location -RestoreType RestoreAsFiles -RecoveryPoint $rps[0].Property.RecoveryPointId -TargetContainerURI $targetContainerURI
201+
Set-AzDataProtectionMSIPermission -VaultResourceGroup "resourceGroupName" -VaultName "vaultName" -PermissionsScope "ResourceGroup" -RestoreRequest $pgFlexRestoreAsFilesRequest -DatasourceType AzureDatabaseForPGFlexServer -SubscriptionId $SubscriptionId -StorageAccountARMId $storageAccId
202+
$validateRestore = Test-AzDataProtectionBackupInstanceRestore -SubscriptionId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -ResourceGroupName "resourceGroupName" -VaultName "vaultName" -RestoreRequest $pgFlexRestoreAsFilesRequest -Name $instance.BackupInstanceName
203+
$restoreJob = Start-AzDataProtectionBackupInstanceRestore -SubscriptionId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -ResourceGroupName "resourceGroupName" -VaultName "vaultName" -BackupInstanceName $instance.BackupInstanceName -Parameter $pgFlexRestoreAsFilesRequest
204+
```
205+
206+
The first, second commands fetch the instance and recovery point for the instance.
207+
The third and fourthcommand initializes the target container id and target storage account ARM id.
208+
The fifth command initializes the restore request object for AzureDatabaseForPGFlexServer restore.
209+
This example also works for datasource type AzureDatabaseForMySQL.
210+
The sixth command assigns the permissions to the backup vault and other permissions necessary for triggering the restore for AzureDatabaseForPGFlexServer.
211+
The last command triggers the restore for AzureDatabaseForPGFlexServer.
212+
194213
## PARAMETERS
195214

196215
### -AsJob

0 commit comments

Comments
 (0)