Skip to content

Commit 9f4d71b

Browse files
azure-pipelines[bot]azure-powershell-botNickcandy
authored
Migrate Dataprotection from generation to release-2024-11-11 (#26534)
* Move Dataprotection to release-2024-11-11 * Create BreakingChangeIssues.csv * Update ChangeLog.md --------- Co-authored-by: azure-powershell-bot <[email protected]> Co-authored-by: NanxiangLiu <[email protected]>
1 parent 7a91fe5 commit 9f4d71b

File tree

105 files changed

+3259
-951
lines changed

Some content is hidden

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

105 files changed

+3259
-951
lines changed

src/DataProtection/DataProtection.Autorest/README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -450,6 +450,9 @@ directive:
450450
- from: source-file-csharp
451451
where: $
452452
transform: $ = $.replace('internal Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20240401.IAzureBackupRecoveryPoint Property', 'public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20240401.IAzureBackupRecoveryPoint Property');
453+
- from: source-file-csharp
454+
where: $
455+
transform: $ = $.replace('internal Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20240401.INamespacedNameResource ResourceModifierReference', 'public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20240401.INamespacedNameResource ResourceModifierReference');
453456
```
454457
455458
## Alternate settings

src/DataProtection/DataProtection.Autorest/build-module.ps1

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
# Code generated by Microsoft (R) AutoRest Code Generator.Changes may cause incorrect behavior and will be lost if the code
1313
# is regenerated.
1414
# ----------------------------------------------------------------------------------
15-
param([switch]$Isolated, [switch]$Run, [switch]$Test, [switch]$Docs, [switch]$Pack, [switch]$Code, [switch]$Release, [switch]$Debugger, [switch]$NoDocs)
15+
param([switch]$Isolated, [switch]$Run, [switch]$Test, [switch]$Docs, [switch]$Pack, [switch]$Code, [switch]$Release, [switch]$Debugger, [switch]$NoDocs, [Switch]$DisableAfterBuildTasks)
1616
$ErrorActionPreference = 'Stop'
1717

1818
if($PSEdition -ne 'Core') {
@@ -67,6 +67,8 @@ if(-not $Isolated -and -not $Debugger) {
6767
$binFolder = Join-Path $PSScriptRoot 'bin'
6868
$objFolder = Join-Path $PSScriptRoot 'obj'
6969

70+
$isAzure = [System.Convert]::ToBoolean('true')
71+
7072
if(-not $Debugger) {
7173
Write-Host -ForegroundColor Green 'Cleaning build folders...'
7274
$null = Remove-Item -Recurse -ErrorAction SilentlyContinue -Path $binFolder, $objFolder
@@ -143,7 +145,7 @@ if($NoDocs) {
143145
$null = Get-ChildItem -Path $docsFolder -Recurse -Exclude 'README.md' | Remove-Item -Recurse -ErrorAction SilentlyContinue
144146
}
145147
$null = New-Item -ItemType Directory -Force -Path $docsFolder
146-
$addComplexInterfaceInfo = ![System.Convert]::ToBoolean('true')
148+
$addComplexInterfaceInfo = !$isAzure
147149
Export-ProxyCmdlet -ModuleName $moduleName -ModulePath $modulePaths -ExportsFolder $exportsFolder -InternalFolder $internalFolder -ModuleDescription $moduleDescription -DocsFolder $docsFolder -ExamplesFolder $examplesFolder -ModuleGuid $guid -AddComplexInterfaceInfo:$addComplexInterfaceInfo
148150
}
149151

@@ -169,4 +171,13 @@ if (Test-Path (Join-Path $PSScriptRoot 'generate-portal-ux.ps1'))
169171
. (Join-Path $PSScriptRoot 'generate-portal-ux.ps1')
170172
}
171173

172-
Write-Host -ForegroundColor Green '-------------Done-------------'
174+
if (-not $DisableAfterBuildTasks){
175+
$afterBuildTasksPath = Join-Path $PSScriptRoot ''
176+
$afterBuildTasksArgs = ConvertFrom-Json 'true' -AsHashtable
177+
if(Test-Path -Path $afterBuildTasksPath -PathType leaf){
178+
Write-Host -ForegroundColor Green 'Running after build tasks...'
179+
. $afterBuildTasksPath @afterBuildTasksArgs
180+
}
181+
}
182+
183+
Write-Host -ForegroundColor Green '-------------Done-------------'

src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Common/Unlock-AzDataProtectionResourceGuardOperation.ps1

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,14 @@ function Unlock-AzDataProtectionResourceGuardOperation
2727
[System.String]
2828
${ResourceToBeDeleted},
2929

30-
[Parameter(ParameterSetName="UnlockDelete", Mandatory=$false, HelpMessage='Parameter to authorize operations protected by cross tenant resource guard. Use command (Get-AzAccessToken -TenantId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx").Token to fetch authorization token for different tenant.')]
30+
[Parameter(ParameterSetName="UnlockDelete", Mandatory=$false, HelpMessage='Parameter to authorize operations protected by cross tenant resource guard. Use command (Get-AzAccessToken -TenantId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -AsSecureString").Token to fetch secure authorization token for different tenant and then convert to string using ConvertFrom-SecureString cmdlet.')]
3131
[System.String]
3232
${Token},
3333

34+
[Parameter(ParameterSetName="UnlockDelete", Mandatory=$false, HelpMessage='Parameter to authorize operations protected by cross tenant resource guard. Use command (Get-AzAccessToken -TenantId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -AsSecureString").Token to fetch authorization token for different tenant.')]
35+
[System.Security.SecureString]
36+
${SecureToken},
37+
3438
[Parameter()]
3539
[Alias('AzureRMContext', 'AzureCredential')]
3640
[ValidateNotNull()]
@@ -103,10 +107,21 @@ function Unlock-AzDataProtectionResourceGuardOperation
103107
$null = $PSBoundParameters.Add("ResourceGuardOperationRequest", $ResourceGuardOperationRequestInternal)
104108
}
105109

106-
if($PSBoundParameters.ContainsKey("Token"))
107-
{
108-
$null = $PSBoundParameters.Remove("Token")
109-
$null = $PSBoundParameters.Add("Token", "Bearer $Token")
110+
$hasToken = $PSBoundParameters.Remove("Token")
111+
$hasSecureToken = $PSBoundParameters.Remove("SecureToken")
112+
if($hasToken -or $hasSecureToken)
113+
{
114+
if($hasSecureToken -and $hasToken){
115+
throw "Both Token and SecureToken parameters cannot be provided together"
116+
}
117+
elseif($hasToken){
118+
Write-Warning -Message 'The Token parameter is deprecated and will be removed in future versions. Please use SecureToken instead.'
119+
$null = $PSBoundParameters.Add("Token", "Bearer $Token")
120+
}
121+
else{
122+
$plainToken = UnprotectSecureString -SecureString $SecureToken
123+
$null = $PSBoundParameters.Add("Token", "Bearer $plainToken")
124+
}
110125
}
111126

112127
Az.DataProtection.Internal\Unlock-AzDataProtectionDppResourceGuardProxyDelete @PSBoundParameters

src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/BackupInstance/Initialize-AzDataProtectionBackupInstance.ps1

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
1-
2-
3-
4-
function Initialize-AzDataProtectionBackupInstance {
1+
function Initialize-AzDataProtectionBackupInstance {
52
[OutputType('Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20240401.IBackupInstanceResource')]
63
[CmdletBinding(PositionalBinding=$false)]
74
[Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description('Initializes Backup instance Request object for configuring backup')]
@@ -156,7 +153,7 @@ function Initialize-AzDataProtectionBackupInstance {
156153

157154
if($BackupConfiguration -ne $null){
158155
$backupInstanceResource.Property.PolicyInfo.PolicyParameter.BackupDatasourceParametersList += @($BackupConfiguration)
159-
}
156+
}
160157
}
161158
elseif($ExcludedResourceType -ne $null -or $IncludedResourceType -ne $null -or $ExcludedNamespace -ne $null -or $IncludedNamespace -ne $null -or $LabelSelector -ne $null -or $SnapshotVolume -ne $null -or $IncludeClusterScopeResource -ne $null){
162159
$errormsg = "ExcludedResourceType, IncludedResourceType, ExcludedNamespace, IncludedNamespace, LabelSelector, SnapshotVolume, IncludeClusterScopeResource parameters are not applicable for given DatasourceType. Please ensure to remove them"

src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/BackupInstance/Stop-AzDataProtectionBackupInstanceProtection.ps1

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,14 @@ function Stop-AzDataProtectionBackupInstanceProtection
3131
[System.String[]]
3232
${ResourceGuardOperationRequest},
3333

34-
[Parameter(Mandatory=$false, HelpMessage='Parameter to authorize operations protected by cross tenant resource guard. Use command (Get-AzAccessToken -TenantId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx").Token to fetch authorization token for different tenant.')]
34+
[Parameter(Mandatory=$false, HelpMessage='Parameter to authorize operations protected by cross tenant resource guard. Use command (Get-AzAccessToken -TenantId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -AsSecureString").Token to fetch secure authorization token for different tenant and then convert to string using ConvertFrom-SecureString cmdlet.')]
3535
[System.String]
3636
${Token},
3737

38+
[Parameter(Mandatory=$false, HelpMessage='Parameter to authorize operations protected by cross tenant resource guard. Use command (Get-AzAccessToken -TenantId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -AsSecureString").Token to fetch authorization token for different tenant.')]
39+
[System.Security.SecureString]
40+
${SecureToken},
41+
3842
[Parameter()]
3943
[Alias('AzureRMContext', 'AzureCredential')]
4044
[ValidateNotNull()]
@@ -104,10 +108,21 @@ function Stop-AzDataProtectionBackupInstanceProtection
104108
$null = $PSBoundParameters.Add("Parameter", $Parameter)
105109
}
106110

107-
if($PSBoundParameters.ContainsKey("Token"))
108-
{
109-
$null = $PSBoundParameters.Remove("Token")
110-
$null = $PSBoundParameters.Add("Token", "Bearer $Token")
111+
$hasToken = $PSBoundParameters.Remove("Token")
112+
$hasSecureToken = $PSBoundParameters.Remove("SecureToken")
113+
if($hasToken -or $hasSecureToken)
114+
{
115+
if($hasSecureToken -and $hasToken){
116+
throw "Both Token and SecureToken parameters cannot be provided together"
117+
}
118+
elseif($hasToken){
119+
Write-Warning -Message 'The Token parameter is deprecated and will be removed in future versions. Please use SecureToken instead.'
120+
$null = $PSBoundParameters.Add("Token", "Bearer $Token")
121+
}
122+
else{
123+
$plainToken = UnprotectSecureString -SecureString $SecureToken
124+
$null = $PSBoundParameters.Add("Token", "Bearer $plainToken")
125+
}
111126
}
112127

113128
Az.DataProtection.Internal\Stop-AzDataProtectionBackupInstanceProtection @PSBoundParameters

src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/BackupInstance/Suspend-AzDataProtectionBackupInstanceBackup.ps1

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,14 @@ function Suspend-AzDataProtectionBackupInstanceBackup
3131
[System.String[]]
3232
${ResourceGuardOperationRequest},
3333

34-
[Parameter(Mandatory=$false, HelpMessage='Parameter to authorize operations protected by cross tenant resource guard. Use command (Get-AzAccessToken -TenantId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx").Token to fetch authorization token for different tenant.')]
35-
[System.String]
34+
[Parameter(Mandatory=$false, HelpMessage='Parameter to authorize operations protected by cross tenant resource guard. Use command (Get-AzAccessToken -TenantId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -AsSecureString").Token to fetch secure authorization token for different tenant and then convert to string using ConvertFrom-SecureString cmdlet.')]
35+
[System.String]
3636
${Token},
3737

38+
[Parameter(Mandatory=$false, HelpMessage='Parameter to authorize operations protected by cross tenant resource guard. Use command (Get-AzAccessToken -TenantId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -AsSecureString").Token to fetch authorization token for different tenant.')]
39+
[System.Security.SecureString]
40+
${SecureToken},
41+
3842
[Parameter()]
3943
[Alias('AzureRMContext', 'AzureCredential')]
4044
[ValidateNotNull()]
@@ -104,11 +108,22 @@ function Suspend-AzDataProtectionBackupInstanceBackup
104108
$null = $PSBoundParameters.Add("Parameter", $Parameter)
105109
}
106110

107-
if($PSBoundParameters.ContainsKey("Token"))
108-
{
109-
$null = $PSBoundParameters.Remove("Token")
110-
$null = $PSBoundParameters.Add("Token", "Bearer $Token")
111-
}
111+
$hasToken = $PSBoundParameters.Remove("Token")
112+
$hasSecureToken = $PSBoundParameters.Remove("SecureToken")
113+
if($hasToken -or $hasSecureToken)
114+
{
115+
if($hasSecureToken -and $hasToken){
116+
throw "Both Token and SecureToken parameters cannot be provided together"
117+
}
118+
elseif($hasToken){
119+
Write-Warning -Message 'The Token parameter is deprecated and will be removed in future versions. Please use SecureToken instead.'
120+
$null = $PSBoundParameters.Add("Token", "Bearer $Token")
121+
}
122+
else{
123+
$plainToken = UnprotectSecureString -SecureString $SecureToken
124+
$null = $PSBoundParameters.Add("Token", "Bearer $plainToken")
125+
}
126+
}
112127

113128
Az.DataProtection.Internal\Suspend-AzDataProtectionBackupInstanceBackup @PSBoundParameters
114129
}

src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/BackupInstance/Update-AzDataProtectionBackupInstance.ps1

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,19 @@ function Update-AzDataProtectionBackupInstance
2929

3030
[Parameter(Mandatory=$false, HelpMessage='List of containers to be backed up inside the VaultStore. Use this parameter for DatasourceType AzureBlob.')]
3131
[System.String[]]
32-
${VaultedBackupContainer},
32+
${VaultedBackupContainer},
33+
34+
[Parameter(Mandatory=$false, HelpMessage='Resource guard operation request in the format similar to <ResourceGuard-ARMID>/dppModifyPolicy/default. Use this parameter when the operation is MUA protected.')]
35+
[System.String[]]
36+
${ResourceGuardOperationRequest},
37+
38+
[Parameter(Mandatory=$false, HelpMessage='Parameter to authorize operations protected by cross tenant resource guard. Use command (Get-AzAccessToken -TenantId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -AsSecureString").Token to fetch secure authorization token for different tenant and then convert to string using ConvertFrom-SecureString cmdlet.')]
39+
[System.String]
40+
${Token},
41+
42+
[Parameter(Mandatory=$false, HelpMessage='Parameter to authorize operations protected by cross tenant resource guard. Use command (Get-AzAccessToken -TenantId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -AsSecureString").Token to fetch authorization token for different tenant.')]
43+
[System.Security.SecureString]
44+
${SecureToken},
3345

3446
[Parameter()]
3547
[Alias('AzureRMContext', 'AzureCredential')]
@@ -91,7 +103,7 @@ function Update-AzDataProtectionBackupInstance
91103

92104
if($hasPolicyId){
93105
$instance.Property.PolicyInfo.PolicyId = $PolicyId
94-
}
106+
}
95107

96108
$DatasourceType = GetClientDatasourceType -ServiceDatasourceType $instance.Property.DataSourceInfo.Type
97109
# $manifest = LoadManifest -DatasourceType $DatasourceType.ToString()
@@ -131,6 +143,33 @@ function Update-AzDataProtectionBackupInstance
131143
# deep validate for update-BI
132144
$instance.Property.ValidationType = "DeepValidation"
133145

146+
$hasResourceGuardOperationRequest = $PSBoundParameters.Remove("ResourceGuardOperationRequest")
147+
if($hasResourceGuardOperationRequest){
148+
$instance.Property.ResourceGuardOperationRequest = $ResourceGuardOperationRequest
149+
}
150+
151+
$hasToken = $PSBoundParameters.Remove("Token")
152+
$hasSecureToken = $PSBoundParameters.Remove("SecureToken")
153+
if($hasToken -or $hasSecureToken)
154+
{
155+
if($hasSecureToken -and $hasToken){
156+
throw "Both Token and SecureToken parameters cannot be provided together"
157+
}
158+
elseif($hasToken){
159+
Write-Warning -Message 'The Token parameter is deprecated and will be removed in future versions. Please use SecureToken instead.'
160+
$null = $PSBoundParameters.Add("Token", "Bearer $Token")
161+
}
162+
else{
163+
$plainToken = UnprotectSecureString -SecureString $SecureToken
164+
$null = $PSBoundParameters.Add("Token", "Bearer $plainToken")
165+
}
166+
}
167+
168+
# Explicitly setting the whole DSSetInfo object as null when ResourceID is null
169+
if($instance.Property.DataSourceSetInfo.ResourceId -eq $null){
170+
$instance.Property.DataSourceSetInfo =$null
171+
}
172+
134173
$null = $PSBoundParameters.Remove("BackupInstanceName")
135174
$null = $PSBoundParameters.Add("Name", $instance.Name)
136175
$null = $PSBoundParameters.Add("Parameter", $instance)

src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/BackupInstance/Update-AzDataProtectionBackupInstanceAssociatedPolicy.ps1

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,18 @@ function Update-AzDataProtectionBackupInstanceAssociatedPolicy
2626
[Parameter(Mandatory, HelpMessage='Id of the Policy to be associated with the backup instance')]
2727
[System.String]
2828
${PolicyId},
29+
30+
[Parameter(Mandatory=$false, HelpMessage='Resource guard operation request in the format similar to <ResourceGuard-ARMID>/dppModifyPolicy/default. Use this parameter when the operation is MUA protected.')]
31+
[System.String[]]
32+
${ResourceGuardOperationRequest},
33+
34+
[Parameter(Mandatory=$false, HelpMessage='Parameter to authorize operations protected by cross tenant resource guard. Use command (Get-AzAccessToken -TenantId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -AsSecureString").Token to fetch secure authorization token for different tenant and then convert to string using ConvertFrom-SecureString cmdlet.')]
35+
[System.String]
36+
${Token},
37+
38+
[Parameter(Mandatory=$false, HelpMessage='Parameter to authorize operations protected by cross tenant resource guard. Use command (Get-AzAccessToken -TenantId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -AsSecureString").Token to fetch authorization token for different tenant.')]
39+
[System.Security.SecureString]
40+
${SecureToken},
2941

3042
[Parameter()]
3143
[Alias('AzureRMContext', 'AzureCredential')]
@@ -84,8 +96,36 @@ function Update-AzDataProtectionBackupInstanceAssociatedPolicy
8496
$instance = Az.DataProtection\Get-AzDataProtectionBackupInstance @PSBoundParameters
8597
$instance.Property.PolicyInfo.PolicyId = $PolicyId
8698
$null = $PSBoundParameters.Remove("BackupInstanceName")
99+
100+
$hasResourceGuardOperationRequest = $PSBoundParameters.Remove("ResourceGuardOperationRequest")
101+
if($hasResourceGuardOperationRequest){
102+
$instance.Property.ResourceGuardOperationRequest = $ResourceGuardOperationRequest
103+
}
104+
105+
# Explicitly setting the whole DSSetInfo object as null when ResourceID is null
106+
if($instance.Property.DataSourceSetInfo.ResourceId -eq $null){
107+
$instance.Property.DataSourceSetInfo =$null
108+
}
109+
87110
$null = $PSBoundParameters.Add("Parameter", $instance)
88-
$null = $PSBoundParameters.Add("Name", $instance.Name)
111+
$null = $PSBoundParameters.Add("Name", $instance.Name)
112+
113+
$hasToken = $PSBoundParameters.Remove("Token")
114+
$hasSecureToken = $PSBoundParameters.Remove("SecureToken")
115+
if($hasToken -or $hasSecureToken)
116+
{
117+
if($hasSecureToken -and $hasToken){
118+
throw "Both Token and SecureToken parameters cannot be provided together"
119+
}
120+
elseif($hasToken){
121+
Write-Warning -Message 'The Token parameter is deprecated and will be removed in future versions. Please use SecureToken instead.'
122+
$null = $PSBoundParameters.Add("Token", "Bearer $Token")
123+
}
124+
else{
125+
$plainToken = UnprotectSecureString -SecureString $SecureToken
126+
$null = $PSBoundParameters.Add("Token", "Bearer $plainToken")
127+
}
128+
}
89129

90130
Az.DataProtection.Internal\New-AzDataProtectionBackupInstance @PSBoundParameters
91131
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@
121121
[Parameter(ParameterSetName="AlternateLocationILR", Mandatory=$false, HelpMessage='Restore configuration for restore. Use this parameter to restore with AzureKubernetesService.')]
122122
[Parameter(ParameterSetName="OriginalLocationFullRecovery", Mandatory=$false, HelpMessage='Restore configuration for restore. Use this parameter to restore with AzureKubernetesService.')]
123123
[Parameter(ParameterSetName="AlternateLocationFullRecovery", Mandatory=$false, HelpMessage='Restore configuration for restore. Use this parameter to restore with AzureKubernetesService.')]
124-
[Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20240401.KubernetesClusterRestoreCriteria]
124+
[PSObject]
125125
${RestoreConfiguration},
126126

127127
[Parameter(ParameterSetName="OriginalLocationFullRecovery", Mandatory=$false, HelpMessage='Secret uri for secret store authentication of data source. This parameter is only supported for AzureDatabaseForPostgreSQL currently.')]
@@ -327,7 +327,7 @@
327327
else{
328328
$errormsg = "Please input parameter RestoreConfiguration for AKS cluster restore. Use command New-AzDataProtectionRestoreConfigurationClientObject for creating the RestoreConfiguration"
329329
throw $errormsg
330-
}
330+
}
331331

332332
$restoreCriteriaList += ($restoreCriteria)
333333
}

0 commit comments

Comments
 (0)