From 949c54873718c38905c01607cad0be5bb94bf7f4 Mon Sep 17 00:00:00 2001 From: ianna1-admin Date: Fri, 3 Oct 2025 16:23:42 -0500 Subject: [PATCH 1/3] update readme with swagger API version & commit ID --- src/DataProtection/DataProtection.Autorest/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/DataProtection/DataProtection.Autorest/README.md b/src/DataProtection/DataProtection.Autorest/README.md index 8727e35560af..8221f9a10d73 100644 --- a/src/DataProtection/DataProtection.Autorest/README.md +++ b/src/DataProtection/DataProtection.Autorest/README.md @@ -31,11 +31,11 @@ This file contains the configuration for generating My API from the OpenAPI spec ``` yaml # it's the same options as command line options, just drop the double-dash! -commit: b88b86f58a98ee1569ae6e7cba6f84061e15166b +commit: eebf27d637a5fb3864f685af45a82e2904f7cdec require: - $(this-folder)/../../readme.azure.noprofile.md input-file: - - $(repo)/specification/dataprotection/resource-manager/Microsoft.DataProtection/stable/2025-01-01/dataprotection.json + - $(repo)/specification/dataprotection/resource-manager/Microsoft.DataProtection/DataProtection/stable/2025-07-01/dataprotection.json title: DataProtection # For new modules, please avoid setting 3.x using the use-extension method and instead, use 4.x as the default option use-extension: From 3bb06a4fdce57a6ad40be42a59f2b99febdb0010 Mon Sep 17 00:00:00 2001 From: ianna1-admin Date: Fri, 3 Oct 2025 16:28:14 -0500 Subject: [PATCH 2/3] replace all instances of old api version (202501) with new api version (20250701) --- ...zDataProtectionBackupInstanceInAzGraph.ps1 | 2 +- ...h-AzDataProtectionBackupVaultInAzGraph.ps1 | 2 +- .../Search-AzDataProtectionJobInAzGraph.ps1 | 2 +- .../New-AzDataProtectionResourceGuard.ps1 | 2 +- .../Update-AzDataProtectionResourceGuard.ps1 | 2 +- ...tialize-AzDataProtectionBackupInstance.ps1 | 16 +++++------ ...tectionBackupConfigurationClientObject.ps1 | 6 ++-- .../New-AzDataProtectionBackupInstance.ps1 | 2 +- ...DataProtectionBackupInstanceProtection.ps1 | 2 +- ...d-AzDataProtectionBackupInstanceBackup.ps1 | 2 +- .../Update-AzDataProtectionBackupInstance.ps1 | 6 ++-- ...otectionBackupInstanceAssociatedPolicy.ps1 | 2 +- .../Platform/Job/Get-AzDataProtectionJob.ps1 | 2 +- ...tialize-AzDataProtectionRestoreRequest.ps1 | 28 +++++++++---------- ...ectionRestoreConfigurationClientObject.ps1 | 10 +++---- ...-AzDataProtectionBackupInstanceRestore.ps1 | 10 +++---- ...-AzDataProtectionBackupInstanceRestore.ps1 | 10 +++---- .../Vault/New-AzDataProtectionBackupVault.ps1 | 8 +++--- ...tectionBackupVaultStorageSettingObject.ps1 | 2 +- .../Set-AzDataProtectionMSIPermission.ps1 | 4 +-- .../Update-AzDataProtectionBackupVault.ps1 | 8 +++--- ...tectionPolicyRetentionRuleClientObject.ps1 | 10 +++---- ...-AzDataProtectionPolicyTagClientObject.ps1 | 8 +++--- ...ataProtectionPolicyTriggerClientObject.ps1 | 4 +-- .../Get-AzDataProtectionPolicyTemplate.ps1 | 4 +-- .../New-AzDataProtectionBackupPolicy.ps1 | 6 ++-- ...rotectionPolicyTagCriteriaClientObject.ps1 | 8 +++--- ...otectionRetentionLifeCycleClientObject.ps1 | 6 ++-- .../custom/Helpers/CommonHelpers.ps1 | 6 ++-- .../custom/Models/BackupInstanceResource.cs | 2 +- 30 files changed, 91 insertions(+), 91 deletions(-) diff --git a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Backupcenter/Search-AzDataProtectionBackupInstanceInAzGraph.ps1 b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Backupcenter/Search-AzDataProtectionBackupInstanceInAzGraph.ps1 index 1e5aecf6eec3..5247d9b6ae0e 100644 --- a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Backupcenter/Search-AzDataProtectionBackupInstanceInAzGraph.ps1 +++ b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Backupcenter/Search-AzDataProtectionBackupInstanceInAzGraph.ps1 @@ -102,7 +102,7 @@ foreach($argResponse in $argInstanceResponse) { $jsonStringResponse = $argResponse | ConvertTo-Json -Depth 100 - $backupInstances += [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.BackupInstanceResource]::FromJsonString($jsonStringResponse) + $backupInstances += [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.BackupInstanceResource]::FromJsonString($jsonStringResponse) } return $backupInstances } diff --git a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Backupcenter/Search-AzDataProtectionBackupVaultInAzGraph.ps1 b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Backupcenter/Search-AzDataProtectionBackupVaultInAzGraph.ps1 index 3bde1d79c305..5e904385cb43 100644 --- a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Backupcenter/Search-AzDataProtectionBackupVaultInAzGraph.ps1 +++ b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Backupcenter/Search-AzDataProtectionBackupVaultInAzGraph.ps1 @@ -94,7 +94,7 @@ foreach($argVault in $argAllVaults) { $jsonStringResponse = $argVault | ConvertTo-Json -Depth 100 - $backupVaults += [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.BackupVaultResource]::FromJsonString($jsonStringResponse) + $backupVaults += [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.BackupVaultResource]::FromJsonString($jsonStringResponse) } return $backupVaults } diff --git a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Backupcenter/Search-AzDataProtectionJobInAzGraph.ps1 b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Backupcenter/Search-AzDataProtectionJobInAzGraph.ps1 index 9ea0212535a9..70e2195972c3 100644 --- a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Backupcenter/Search-AzDataProtectionJobInAzGraph.ps1 +++ b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Backupcenter/Search-AzDataProtectionJobInAzGraph.ps1 @@ -130,7 +130,7 @@ foreach($jobresponse in $argJobResponse) { $jsonStringResponse = $jobresponse | ConvertTo-Json -Depth 100 - $backupJobs += [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.AzureBackupJobResource]::FromJsonString($jsonStringResponse) + $backupJobs += [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.AzureBackupJobResource]::FromJsonString($jsonStringResponse) } return $backupJobs } diff --git a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Common/New-AzDataProtectionResourceGuard.ps1 b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Common/New-AzDataProtectionResourceGuard.ps1 index 6bad8a642a37..2a344459e843 100644 --- a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Common/New-AzDataProtectionResourceGuard.ps1 +++ b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Common/New-AzDataProtectionResourceGuard.ps1 @@ -2,7 +2,7 @@ function New-AzDataProtectionResourceGuard { - [OutputType('Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.IResourceGuardResource')] + [OutputType('Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.IResourceGuardResource')] [CmdletBinding(PositionalBinding=$false, SupportsShouldProcess)] [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description('Creates a resource guard under a resource group')] diff --git a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Common/Update-AzDataProtectionResourceGuard.ps1 b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Common/Update-AzDataProtectionResourceGuard.ps1 index fc19b24c0abb..5d90c300a45d 100644 --- a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Common/Update-AzDataProtectionResourceGuard.ps1 +++ b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Common/Update-AzDataProtectionResourceGuard.ps1 @@ -2,7 +2,7 @@ function Update-AzDataProtectionResourceGuard { - [OutputType('Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.IResourceGuardResource')] + [OutputType('Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.IResourceGuardResource')] [CmdletBinding(PositionalBinding=$false, SupportsShouldProcess)] [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description('Updates a resource guard belonging to a resource group')] diff --git a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/BackupInstance/Initialize-AzDataProtectionBackupInstance.ps1 b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/BackupInstance/Initialize-AzDataProtectionBackupInstance.ps1 index d49f2bd627f5..7593e7772964 100644 --- a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/BackupInstance/Initialize-AzDataProtectionBackupInstance.ps1 +++ b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/BackupInstance/Initialize-AzDataProtectionBackupInstance.ps1 @@ -1,5 +1,5 @@ function Initialize-AzDataProtectionBackupInstance { - [OutputType('Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.IBackupInstanceResource')] + [OutputType('Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.IBackupInstanceResource')] [CmdletBinding(PositionalBinding=$false)] [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description('Initializes Backup instance Request object for configuring backup')] @@ -41,7 +41,7 @@ ${FriendlyName}, [Parameter(Mandatory=$false, HelpMessage='Backup configuration for backup. Use this parameter to configure protection for AzureKubernetesService,AzureBlob.')] - [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.IBackupDatasourceParameters] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.IBackupDatasourceParameters] ${BackupConfiguration}, [Parameter(Mandatory=$false, HelpMessage='Use system assigned identity')] @@ -57,7 +57,7 @@ process { $manifest = LoadManifest -DatasourceType $DatasourceType.ToString() - $backupInstance = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.BackupInstance]::new() + $backupInstance = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.BackupInstance]::new() $backupInstance.ObjectType = "BackupInstance" if($manifest.snapshotRGPermissions.Length -eq 0 -and $SnapshotResourceGroupId -ne "") @@ -113,7 +113,7 @@ throw "UserAssignedIdentityArmId cannot be provided without UseSystemAssignedIdentity and UseSystemAssignedIdentity must be false when UserAssignedIdentityArmId is provided." } - $backupInstance.IdentityDetail = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.IdentityDetails]::new() + $backupInstance.IdentityDetail = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.IdentityDetails]::new() $backupInstance.IdentityDetail.UseSystemAssignedIdentity = $UseSystemAssignedIdentity if ($hasUserAssignedIdentityArmId) { @@ -131,9 +131,9 @@ $errormsg = "Please input SecretStoreType" throw $errormsg } - $backupInstance.DatasourceAuthCredentials = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.SecretStoreBasedAuthCredentials]::new() + $backupInstance.DatasourceAuthCredentials = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.SecretStoreBasedAuthCredentials]::new() $backupInstance.DatasourceAuthCredentials.ObjectType = "SecretStoreBasedAuthCredentials" - $backupInstance.DatasourceAuthCredentials.SecretStoreResource = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.SecretStoreResource]::new() + $backupInstance.DatasourceAuthCredentials.SecretStoreResource = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.SecretStoreResource]::new() $backupInstance.DatasourceAuthCredentials.SecretStoreResource.SecretStoreType = $SecretStoreType $backupInstance.DatasourceAuthCredentials.SecretStoreResource.Uri = $SecretStoreURI } @@ -143,7 +143,7 @@ } } - $backupInstanceResource = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.BackupInstanceResource]::new() + $backupInstanceResource = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.BackupInstanceResource]::new() $backupInstanceResource.Property = $backupInstance if($PSBoundParameters.ContainsKey("DatasourceId")) @@ -161,7 +161,7 @@ if($manifest.addDataStoreParametersList -eq $true) { - $operationalParam = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.AzureOperationalStoreParameters]::new() + $operationalParam = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.AzureOperationalStoreParameters]::new() $operationalParam.DataStoreType = "OperationalStore" $operationalParam.ObjectType = "AzureOperationalStoreParameters" $operationalParam.ResourceGroupId = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}" diff --git a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/BackupInstance/New-AzDataProtectionBackupConfigurationClientObject.ps1 b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/BackupInstance/New-AzDataProtectionBackupConfigurationClientObject.ps1 index e00abd5b2a48..8aee6f5dae8d 100644 --- a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/BackupInstance/New-AzDataProtectionBackupConfigurationClientObject.ps1 +++ b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/BackupInstance/New-AzDataProtectionBackupConfigurationClientObject.ps1 @@ -39,7 +39,7 @@ function New-AzDataProtectionBackupConfigurationClientObject{ ${IncludeClusterScopeResource}, [Parameter(Mandatory=$false, HelpMessage='Hook reference to be executed during backup.')] - [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.NamespacedNameResource[]] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.NamespacedNameResource[]] ${BackupHookReference}, [Parameter(Mandatory=$false, HelpMessage='List of containers to be backed up inside the VaultStore. Use this parameter for DatasourceType AzureBlob.')] @@ -71,7 +71,7 @@ function New-AzDataProtectionBackupConfigurationClientObject{ throw $message } - $dataSourceParam = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.KubernetesClusterBackupDatasourceParameters]::new() + $dataSourceParam = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.KubernetesClusterBackupDatasourceParameters]::new() $dataSourceParam.ObjectType = "KubernetesClusterBackupDatasourceParameters" $dataSourceParam.ExcludedResourceType = $ExcludedResourceType @@ -97,7 +97,7 @@ function New-AzDataProtectionBackupConfigurationClientObject{ } if($DatasourceType.ToString() -eq "AzureBlob"){ - $dataSourceParam = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.BlobBackupDatasourceParameters]::new() + $dataSourceParam = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.BlobBackupDatasourceParameters]::new() $dataSourceParam.ObjectType = "BlobBackupDatasourceParameters" if($VaultedBackupContainer -ne $null){ diff --git a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/BackupInstance/New-AzDataProtectionBackupInstance.ps1 b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/BackupInstance/New-AzDataProtectionBackupInstance.ps1 index 3922f0a0e88a..fc289b51c5f3 100644 --- a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/BackupInstance/New-AzDataProtectionBackupInstance.ps1 +++ b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/BackupInstance/New-AzDataProtectionBackupInstance.ps1 @@ -20,7 +20,7 @@ function New-AzDataProtectionBackupInstance { ${VaultName}, [Parameter(Mandatory, HelpMessage='Backup instance request object which will be used to configure backup')] - [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.IBackupInstanceResource] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.IBackupInstanceResource] ${BackupInstance}, [Parameter(Mandatory=$false, HelpMessage='Resource tags')] diff --git a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/BackupInstance/Stop-AzDataProtectionBackupInstanceProtection.ps1 b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/BackupInstance/Stop-AzDataProtectionBackupInstanceProtection.ps1 index 807c361b3865..369abb21d3d5 100644 --- a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/BackupInstance/Stop-AzDataProtectionBackupInstanceProtection.ps1 +++ b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/BackupInstance/Stop-AzDataProtectionBackupInstanceProtection.ps1 @@ -98,7 +98,7 @@ function Stop-AzDataProtectionBackupInstanceProtection { $parameterSetName = $PsCmdlet.ParameterSetName if($parameterSetName -eq "StopViaIdentity"){ - $Parameter = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.StopProtectionRequest]::new() + $Parameter = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.StopProtectionRequest]::new() $hasResourceGuardOperationRequest = $PSBoundParameters.Remove("ResourceGuardOperationRequest") if($hasResourceGuardOperationRequest){ diff --git a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/BackupInstance/Suspend-AzDataProtectionBackupInstanceBackup.ps1 b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/BackupInstance/Suspend-AzDataProtectionBackupInstanceBackup.ps1 index c38816bfc809..fe8a58338314 100644 --- a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/BackupInstance/Suspend-AzDataProtectionBackupInstanceBackup.ps1 +++ b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/BackupInstance/Suspend-AzDataProtectionBackupInstanceBackup.ps1 @@ -98,7 +98,7 @@ function Suspend-AzDataProtectionBackupInstanceBackup { $parameterSetName = $PsCmdlet.ParameterSetName if($parameterSetName -eq "SuspendViaIdentity"){ - $Parameter = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.SuspendBackupRequest]::new() + $Parameter = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.SuspendBackupRequest]::new() $hasResourceGuardOperationRequest = $PSBoundParameters.Remove("ResourceGuardOperationRequest") if($hasResourceGuardOperationRequest){ diff --git a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/BackupInstance/Update-AzDataProtectionBackupInstance.ps1 b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/BackupInstance/Update-AzDataProtectionBackupInstance.ps1 index 7a1973440038..7ca776169eef 100644 --- a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/BackupInstance/Update-AzDataProtectionBackupInstance.ps1 +++ b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/BackupInstance/Update-AzDataProtectionBackupInstance.ps1 @@ -2,7 +2,7 @@ function Update-AzDataProtectionBackupInstance { - [OutputType('Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.IBackupInstanceResource')] + [OutputType('Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.IBackupInstanceResource')] [CmdletBinding(PositionalBinding=$false, SupportsShouldProcess)] [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description('Updates a given backup instance')] @@ -125,7 +125,7 @@ function Update-AzDataProtectionBackupInstance throw "UserAssignedIdentityArmId cannot be provided without UseSystemAssignedIdentity and UseSystemAssignedIdentity must be false when UserAssignedIdentityArmId is provided." } - $instance.Property.IdentityDetail = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.IdentityDetails]::new() + $instance.Property.IdentityDetail = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.IdentityDetails]::new() $instance.Property.IdentityDetail.UseSystemAssignedIdentity = $UseSystemAssignedIdentity if ($hasUserAssignedIdentityArmId) { @@ -153,7 +153,7 @@ function Update-AzDataProtectionBackupInstance $instance.Property.PolicyInfo.PolicyParameter.BackupDatasourceParametersList[0].ContainersList = $VaultedBackupContainer } elseif($datasourceParam -eq $null){ - $backupConfiguration = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.BlobBackupDatasourceParameters]::new() + $backupConfiguration = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.BlobBackupDatasourceParameters]::new() $backupConfiguration.ObjectType = "BlobBackupDatasourceParameters" $backupConfiguration.ContainersList = $VaultedBackupContainer diff --git a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/BackupInstance/Update-AzDataProtectionBackupInstanceAssociatedPolicy.ps1 b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/BackupInstance/Update-AzDataProtectionBackupInstanceAssociatedPolicy.ps1 index 2470be084f28..22f3662d8403 100644 --- a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/BackupInstance/Update-AzDataProtectionBackupInstanceAssociatedPolicy.ps1 +++ b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/BackupInstance/Update-AzDataProtectionBackupInstanceAssociatedPolicy.ps1 @@ -2,7 +2,7 @@ function Update-AzDataProtectionBackupInstanceAssociatedPolicy { - [OutputType('Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.IBackupInstanceResource')] + [OutputType('Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.IBackupInstanceResource')] [CmdletBinding(PositionalBinding=$false, SupportsShouldProcess)] [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description('Updates associated policy for a given backup instance')] diff --git a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/Job/Get-AzDataProtectionJob.ps1 b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/Job/Get-AzDataProtectionJob.ps1 index 8905b0f3a2f6..1dbc47f3c030 100644 --- a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/Job/Get-AzDataProtectionJob.ps1 +++ b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/Job/Get-AzDataProtectionJob.ps1 @@ -1,6 +1,6 @@ function Get-AzDataProtectionJob { - [OutputType('Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.IAzureBackupJobResource')] + [OutputType('Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.IAzureBackupJobResource')] [CmdletBinding(PositionalBinding=$false)] [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description('Gets or lists jobs in a backup vault')] diff --git a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/Restore/Initialize-AzDataProtectionRestoreRequest.ps1 b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/Restore/Initialize-AzDataProtectionRestoreRequest.ps1 index b83b7784a10d..99487f2facac 100644 --- a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/Restore/Initialize-AzDataProtectionRestoreRequest.ps1 +++ b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/Restore/Initialize-AzDataProtectionRestoreRequest.ps1 @@ -1,6 +1,6 @@ function Initialize-AzDataProtectionRestoreRequest { - [OutputType('Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.IAzureBackupRestoreRequest')] + [OutputType('Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.IAzureBackupRestoreRequest')] [CmdletBinding(PositionalBinding=$false, DefaultParameterSetName='AlternateLocationFullRecovery')] [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description('Initializes Restore Request object for triggering restore on a protected backup instance.')] @@ -71,7 +71,7 @@ [Parameter(ParameterSetName="OriginalLocationFullRecovery", Mandatory, HelpMessage='Backup Instance object to trigger original location restore.')] [Parameter(ParameterSetName="OriginalLocationILR", Mandatory, HelpMessage='Backup Instance object to trigger original location restore.')] - [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.BackupInstanceResource] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.BackupInstanceResource] ${BackupInstance}, # this is applicable to all workloads wherever ALR supported. @@ -172,7 +172,7 @@ Write-Debug -Message $RecoveryPoint if($PSBoundParameters.ContainsKey("RehydrationPriority")){ - $restoreRequest = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.AzureBackupRestoreWithRehydrationRequest]::new() + $restoreRequest = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.AzureBackupRestoreWithRehydrationRequest]::new() $restoreRequest.ObjectType = "AzureBackupRestoreWithRehydrationRequest" $restoreRequest.RehydrationPriority = $RehydrationPriority if($PSBoundParameters.ContainsKey("RehydrationDuration")){ @@ -183,7 +183,7 @@ } } else{ - $restoreRequest = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.AzureBackupRecoveryPointBasedRestoreRequest]::new() + $restoreRequest = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.AzureBackupRecoveryPointBasedRestoreRequest]::new() $restoreRequest.ObjectType = "AzureBackupRecoveryPointBasedRestoreRequest" } $restoreRequest.RecoveryPointId = $RecoveryPoint @@ -193,7 +193,7 @@ { $utcTime = $PointInTime.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.0000000Z") Write-Debug -Message $utcTime - $restoreRequest = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.AzureBackupRecoveryTimeBasedRestoreRequest]::new() + $restoreRequest = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.AzureBackupRecoveryTimeBasedRestoreRequest]::new() $restoreRequest.ObjectType = "AzureBackupRecoveryTimeBasedRestoreRequest" $restoreRequest.RecoveryPointTime = $utcTime $restoreMode = "PointInTimeBased" @@ -227,7 +227,7 @@ if($RestoreType -eq "RestoreAsFiles") { - $restoreRequest.RestoreTargetInfo = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.RestoreFilesTargetInfo]::new() + $restoreRequest.RestoreTargetInfo = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.RestoreFilesTargetInfo]::new() $restoreRequest.RestoreTargetInfo.ObjectType = "RestoreFilesTargetInfo" if($manifest.fileNamePrefixDisabled -and $PSBoundParameters.ContainsKey("FileNamePrefix")){ @@ -262,11 +262,11 @@ { # RestoreTargetInfo for OLR ALR Full recovery if($DatasourceType -ne "AzureKubernetesService"){ - $restoreRequest.RestoreTargetInfo = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.RestoreTargetInfo]::new() + $restoreRequest.RestoreTargetInfo = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.RestoreTargetInfo]::new() $restoreRequest.RestoreTargetInfo.ObjectType = "restoreTargetInfo" } else{ - $restoreRequest.RestoreTargetInfo = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.ItemLevelRestoreTargetInfo]::new() + $restoreRequest.RestoreTargetInfo = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.ItemLevelRestoreTargetInfo]::new() $restoreRequest.RestoreTargetInfo.ObjectType = "itemLevelRestoreTargetInfo" $restoreCriteriaList = @() @@ -286,7 +286,7 @@ else { # ILR: ItemLevelRestoreTargetInfo - $restoreRequest.RestoreTargetInfo = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.ItemLevelRestoreTargetInfo]::new() + $restoreRequest.RestoreTargetInfo = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.ItemLevelRestoreTargetInfo]::new() $restoreRequest.RestoreTargetInfo.ObjectType = "itemLevelRestoreTargetInfo" $restoreCriteriaList = @() @@ -298,7 +298,7 @@ $hasPrefixMatch = $PSBoundParameters.Remove("PrefixMatch") for($i = 0; $i -lt $ContainersList.length; $i++){ - $restoreCriteria = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.ItemPathBasedRestoreCriteria]::new() + $restoreCriteria = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.ItemPathBasedRestoreCriteria]::new() $restoreCriteria.ObjectType = "ItemPathBasedRestoreCriteria" $restoreCriteria.ItemPath = $ContainersList[$i] @@ -319,7 +319,7 @@ elseif($ContainersList.length -gt 0){ for($i = 0; $i -lt $ContainersList.length; $i++){ - $restoreCriteria = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.RangeBasedItemLevelRestoreCriteria]::new() + $restoreCriteria = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.RangeBasedItemLevelRestoreCriteria]::new() $restoreCriteria.ObjectType = "RangeBasedItemLevelRestoreCriteria" $restoreCriteria.MinMatchingValue = $ContainersList[$i] @@ -338,7 +338,7 @@ for($i = 0; $i -lt $FromPrefixPattern.length; $i++){ - $restoreCriteria = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.RangeBasedItemLevelRestoreCriteria]::new() + $restoreCriteria = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.RangeBasedItemLevelRestoreCriteria]::new() $restoreCriteria.ObjectType = "RangeBasedItemLevelRestoreCriteria" $restoreCriteria.MinMatchingValue = $FromPrefixPattern[$i] @@ -413,9 +413,9 @@ $errormsg = "Please input SecretStoreType" throw $errormsg } - $restoreRequest.RestoreTargetInfo.DatasourceAuthCredentials = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.SecretStoreBasedAuthCredentials]::new() + $restoreRequest.RestoreTargetInfo.DatasourceAuthCredentials = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.SecretStoreBasedAuthCredentials]::new() $restoreRequest.RestoreTargetInfo.DatasourceAuthCredentials.ObjectType = "SecretStoreBasedAuthCredentials" - $restoreRequest.RestoreTargetInfo.DatasourceAuthCredentials.SecretStoreResource = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.SecretStoreResource]::new() + $restoreRequest.RestoreTargetInfo.DatasourceAuthCredentials.SecretStoreResource = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.SecretStoreResource]::new() $restoreRequest.RestoreTargetInfo.DatasourceAuthCredentials.SecretStoreResource.SecretStoreType = $SecretStoreType $restoreRequest.RestoreTargetInfo.DatasourceAuthCredentials.SecretStoreResource.Uri = $SecretStoreURI } diff --git a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/Restore/New-AzDataProtectionRestoreConfigurationClientObject.ps1 b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/Restore/New-AzDataProtectionRestoreConfigurationClientObject.ps1 index a4a726654f5b..a316006cbd8b 100644 --- a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/Restore/New-AzDataProtectionRestoreConfigurationClientObject.ps1 +++ b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/Restore/New-AzDataProtectionRestoreConfigurationClientObject.ps1 @@ -40,7 +40,7 @@ function New-AzDataProtectionRestoreConfigurationClientObject{ ${ConflictPolicy}, [Parameter(Mandatory=$false, HelpMessage='Namespaces mapping from source namespaces to target namespaces to resolve namespace naming conflicts in the target cluster.')] - [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.KubernetesClusterRestoreCriteriaNamespaceMappings] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.KubernetesClusterRestoreCriteriaNamespaceMappings] ${NamespaceMapping}, [Parameter(Mandatory=$false, HelpMessage='Restore mode for persistent volumes. Allowed values are RestoreWithVolumeData, RestoreWithoutVolumeData. Default value is RestoreWithVolumeData')] @@ -49,11 +49,11 @@ function New-AzDataProtectionRestoreConfigurationClientObject{ ${PersistentVolumeRestoreMode}, [Parameter(Mandatory=$false, HelpMessage='Hook reference to be executed during restore.')] - [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.NamespacedNameResource[]] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.NamespacedNameResource[]] ${RestoreHookReference}, [Parameter(Mandatory=$false, HelpMessage='Resource modifier reference to be executed during restore.')] - [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.NamespacedNameResource] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.NamespacedNameResource] ${ResourceModifierReference}, [Parameter(Mandatory=$false, HelpMessage='Staging resource group Id for restore.')] @@ -74,7 +74,7 @@ function New-AzDataProtectionRestoreConfigurationClientObject{ $restoreCriteria = $null if($hasStagingResourceGroupId -and $hasStagingStorageAccountId){ - $restoreCriteria = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.KubernetesClusterVaultTierRestoreCriteria]::new() + $restoreCriteria = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.KubernetesClusterVaultTierRestoreCriteria]::new() $restoreCriteria.ObjectType = "KubernetesClusterVaultTierRestoreCriteria" $restoreCriteria.StagingResourceGroupId = $StagingResourceGroupId @@ -84,7 +84,7 @@ function New-AzDataProtectionRestoreConfigurationClientObject{ throw "Both StagingResourceGroupId and StagingStorageAccountId are mandatory for vaulted tier restore for AzureKubernetesService. Please either provide or remove both of them." } else { - $restoreCriteria = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.KubernetesClusterRestoreCriteria]::new() + $restoreCriteria = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.KubernetesClusterRestoreCriteria]::new() $restoreCriteria.ObjectType = "KubernetesClusterRestoreCriteria" } diff --git a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/Restore/Start-AzDataProtectionBackupInstanceRestore.ps1 b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/Restore/Start-AzDataProtectionBackupInstanceRestore.ps1 index e8503ce79a74..240ab5823363 100644 --- a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/Restore/Start-AzDataProtectionBackupInstanceRestore.ps1 +++ b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/Restore/Start-AzDataProtectionBackupInstanceRestore.ps1 @@ -2,7 +2,7 @@ function Start-AzDataProtectionBackupInstanceRestore { - [OutputType('Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.IOperationJobExtendedInfo')] + [OutputType('Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.IOperationJobExtendedInfo')] [CmdletBinding(PositionalBinding=$false, SupportsShouldProcess)] [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description('Triggers restore for a BackupInstance')] @@ -25,7 +25,7 @@ function Start-AzDataProtectionBackupInstanceRestore ${VaultName}, [Parameter(ParameterSetName="Trigger", Mandatory, HelpMessage='Restore request object to be initialized using Initialize-AzDataProtectionRestoreRequest cmdlet', ValueFromPipeline=$true)] - [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.IAzureBackupRestoreRequest] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.IAzureBackupRestoreRequest] ${Parameter}, [Parameter(Mandatory=$false, HelpMessage='Resource guard operation request in the format similar to /dppTriggerRestoreRequests/default. Use this parameter when the operation is MUA protected.')] @@ -45,7 +45,7 @@ function Start-AzDataProtectionBackupInstanceRestore ${ObjectType}, [Parameter(ParameterSetName="TriggerExpanded", Mandatory, HelpMessage='Gets or sets the restore target information')] - [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.IRestoreTargetInfoBase] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.IRestoreTargetInfoBase] ${RestoreTargetInfo}, [Parameter(ParameterSetName="TriggerExpanded", Mandatory, HelpMessage='Type of the source data store')] @@ -176,7 +176,7 @@ function Start-AzDataProtectionBackupInstanceRestore $backupInstanceId = "/subscriptions/" + $SubscriptionId + "/resourceGroups/" + $ResourceGroupName + "/providers/Microsoft.DataProtection/backupVaults/" + $VaultName + "/backupInstances/" + $BackupInstanceName - $crossRegionRestoreDetail = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.CrossRegionRestoreDetails]::new() + $crossRegionRestoreDetail = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.CrossRegionRestoreDetails]::new() $crossRegionRestoreDetail.SourceBackupInstanceId = $backupInstanceId $crossRegionRestoreDetail.SourceRegion = $vault.Location @@ -187,7 +187,7 @@ function Start-AzDataProtectionBackupInstanceRestore $PSBoundParameters.Add("RestoreRequestObject", $Parameter) } else{ - $restoreRequestObject = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.AzureBackupRestoreRequest]::new() + $restoreRequestObject = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.AzureBackupRestoreRequest]::new() if($hasObjectType) { $restoreRequestObject.ObjectType = $ObjectType } if($hasRestoreTargetInfo) { $restoreRequestObject.RestoreTargetInfo = $RestoreTargetInfo } if($hasSourceDataStoreType) { $restoreRequestObject.SourceDataStoreType = $SourceDataStoreType } diff --git a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/Restore/Test-AzDataProtectionBackupInstanceRestore.ps1 b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/Restore/Test-AzDataProtectionBackupInstanceRestore.ps1 index 95d32fe43906..8abd2fd31e07 100644 --- a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/Restore/Test-AzDataProtectionBackupInstanceRestore.ps1 +++ b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/Restore/Test-AzDataProtectionBackupInstanceRestore.ps1 @@ -2,7 +2,7 @@ function Test-AzDataProtectionBackupInstanceRestore { - [OutputType('Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.IOperationJobExtendedInfo')] + [OutputType('Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.IOperationJobExtendedInfo')] [CmdletBinding(PositionalBinding=$false, SupportsShouldProcess)] [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description('Validates if Restore can be triggered for a DataSource')] @@ -24,7 +24,7 @@ function Test-AzDataProtectionBackupInstanceRestore ${VaultName}, [Parameter(ParameterSetName="ValidateRestore", Mandatory, HelpMessage='Restore request object for which to validate')] - [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.IAzureBackupRestoreRequest] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.IAzureBackupRestoreRequest] ${RestoreRequest}, [Parameter(Mandatory=$false, HelpMessage='Switch parameter to trigger restore to secondary region')] @@ -108,10 +108,10 @@ function Test-AzDataProtectionBackupInstanceRestore $backupInstanceId = "/subscriptions/" + $SubscriptionId + "/resourceGroups/" + $ResourceGroupName + "/providers/Microsoft.DataProtection/backupVaults/" + $VaultName + "/backupInstances/" + $Name - $Parameter = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.ValidateCrossRegionRestoreRequestObject]::new() + $Parameter = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.ValidateCrossRegionRestoreRequestObject]::new() $Parameter.RestoreRequestObject = $RestoreRequest - $Parameter.CrossRegionRestoreDetail = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.CrossRegionRestoreDetails]::new() + $Parameter.CrossRegionRestoreDetail = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.CrossRegionRestoreDetails]::new() $Parameter.CrossRegionRestoreDetail.SourceBackupInstanceId = $backupInstanceId $Parameter.CrossRegionRestoreDetail.SourceRegion = $vault.Location @@ -121,7 +121,7 @@ function Test-AzDataProtectionBackupInstanceRestore Az.DataProtection.Internal\Test-AzDataProtectionBackupInstanceCrossRegionRestore @PSBoundParameters } else{ - $Parameter = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.ValidateRestoreRequestObject]::new() + $Parameter = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.ValidateRestoreRequestObject]::new() $Parameter.RestoreRequestObject = $RestoreRequest $null = $PSBoundParameters.Add("Parameter", $Parameter) diff --git a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/Vault/New-AzDataProtectionBackupVault.ps1 b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/Vault/New-AzDataProtectionBackupVault.ps1 index 025c0fc1dc67..7f8bbaf024c9 100644 --- a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/Vault/New-AzDataProtectionBackupVault.ps1 +++ b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/Vault/New-AzDataProtectionBackupVault.ps1 @@ -30,7 +30,7 @@ ${Location}, [Parameter(Mandatory, HelpMessage='Storage Settings of the vault. Use New-AzDataProtectionBackupVaultStorageSetting Cmdlet to Create.')] - [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.IStorageSetting[]] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.IStorageSetting[]] ${StorageSetting}, [Parameter(Mandatory=$false, HelpMessage='Parameter to Enable or Disable built-in azure monitor alerts for job failures. Security alerts cannot be disabled.')] @@ -160,13 +160,13 @@ return } - $encryptionSettings = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.EncryptionSettings]::new() + $encryptionSettings = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.EncryptionSettings]::new() $encryptionSettings.State = $CmkEncryptionState $encryptionSettings.CmkInfrastructureEncryption = $CmkInfrastructureEncryption - $encryptionSettings.CmkIdentity = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.CmkKekIdentity]::new() + $encryptionSettings.CmkIdentity = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.CmkKekIdentity]::new() $encryptionSettings.CmkIdentity.IdentityType = $CmkIdentityType $encryptionSettings.CmkIdentity.IdentityId = $CmkUserAssignedIdentityId - $encryptionSettings.CmkKeyVaultProperty = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.CmkKeyVaultProperties]::new() + $encryptionSettings.CmkKeyVaultProperty = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.CmkKeyVaultProperties]::new() $encryptionSettings.CmkKeyVaultProperty.KeyUri = $CmkEncryptionKeyUri $PSBoundParameters.Add("EncryptionSetting", $encryptionSettings) diff --git a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/Vault/New-AzDataProtectionBackupVaultStorageSettingObject.ps1 b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/Vault/New-AzDataProtectionBackupVaultStorageSettingObject.ps1 index fff859838c0a..13b812deab7a 100644 --- a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/Vault/New-AzDataProtectionBackupVaultStorageSettingObject.ps1 +++ b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/Vault/New-AzDataProtectionBackupVaultStorageSettingObject.ps1 @@ -15,7 +15,7 @@ function New-AzDataProtectionBackupVaultStorageSettingObject{ ) process { - $storageSetting = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.StorageSetting]::new() + $storageSetting = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.StorageSetting]::new() $storageSetting.Type = $Type $storageSetting.DataStoreType = $DataStoreType diff --git a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/Vault/Set-AzDataProtectionMSIPermission.ps1 b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/Vault/Set-AzDataProtectionMSIPermission.ps1 index 8b958557a3af..01cf07007666 100644 --- a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/Vault/Set-AzDataProtectionMSIPermission.ps1 +++ b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/Vault/Set-AzDataProtectionMSIPermission.ps1 @@ -33,7 +33,7 @@ function Set-AzDataProtectionMSIPermission { param( [Parameter(ParameterSetName="SetPermissionsForBackup", Mandatory, HelpMessage='Backup instance request object which will be used to configure backup')] - [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.IBackupInstanceResource] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.IBackupInstanceResource] ${BackupInstance}, [Parameter(ParameterSetName="SetPermissionsForBackup", Mandatory=$false, HelpMessage='ID of the keyvault')] @@ -64,7 +64,7 @@ function Set-AzDataProtectionMSIPermission { ${DatasourceType}, [Parameter(ParameterSetName="SetPermissionsForRestore", Mandatory, HelpMessage='Restore request object which will be used for restore')] - [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.IAzureBackupRestoreRequest] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.IAzureBackupRestoreRequest] ${RestoreRequest}, [Parameter(ParameterSetName="SetPermissionsForRestore", Mandatory=$false, HelpMessage='Snapshot Resource Group')] diff --git a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/Vault/Update-AzDataProtectionBackupVault.ps1 b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/Vault/Update-AzDataProtectionBackupVault.ps1 index 8c8c96e75422..431d4b07fc8f 100644 --- a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/Vault/Update-AzDataProtectionBackupVault.ps1 +++ b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/Vault/Update-AzDataProtectionBackupVault.ps1 @@ -1,6 +1,6 @@ function Update-AzDataProtectionBackupVault { - [OutputType('Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.IBackupVaultResource')] + [OutputType('Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.IBackupVaultResource')] [CmdletBinding(DefaultParameterSetName="UpdateExpanded", PositionalBinding=$false, SupportsShouldProcess)] [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description('Updates a BackupVault resource belonging to a resource group. For example updating tags for a resource.')] @@ -184,9 +184,9 @@ if ($vault.EncryptionSetting -ne $null) { $encryptionSettings = $vault.EncryptionSetting } else { - $encryptionSettings = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.EncryptionSettings]::new() - $encryptionSettings.CmkIdentity = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.CmkKekIdentity]::new() - $encryptionSettings.CmkKeyVaultProperty = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.CmkKeyVaultProperties]::new() + $encryptionSettings = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.EncryptionSettings]::new() + $encryptionSettings.CmkIdentity = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.CmkKekIdentity]::new() + $encryptionSettings.CmkKeyVaultProperty = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.CmkKeyVaultProperties]::new() } if ($hasCmkEncryptionState) { $encryptionSettings.State = $CmkEncryptionState } diff --git a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Policy/Edit-AzDataProtectionPolicyRetentionRuleClientObject.ps1 b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Policy/Edit-AzDataProtectionPolicyRetentionRuleClientObject.ps1 index 2eeea803945e..1d888ad4db65 100644 --- a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Policy/Edit-AzDataProtectionPolicyRetentionRuleClientObject.ps1 +++ b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Policy/Edit-AzDataProtectionPolicyRetentionRuleClientObject.ps1 @@ -1,14 +1,14 @@  function Edit-AzDataProtectionPolicyRetentionRuleClientObject { - [OutputType('Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.IBackupPolicy')] + [OutputType('Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.IBackupPolicy')] [CmdletBinding(PositionalBinding=$false)] [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description('Adds or removes Retention Rule to existing Policy')] param( [Parameter(ParameterSetName='AddRetention',Mandatory, HelpMessage='Backup Policy Object')] [Parameter(ParameterSetName='RemoveRetention',Mandatory, HelpMessage='Backup Policy Object')] - [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.IBackupPolicy] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.IBackupPolicy] ${Policy}, [Parameter(ParameterSetName='AddRetention',Mandatory, HelpMessage='Retention Rule Name')] @@ -29,7 +29,7 @@ function Edit-AzDataProtectionPolicyRetentionRuleClientObject { ${OverwriteLifeCycle}, [Parameter(ParameterSetName='AddRetention',Mandatory, HelpMessage='Life cycles associated with the retention rule.')] - [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.ISourceLifeCycle[]] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.ISourceLifeCycle[]] ${LifeCycles} ) @@ -68,7 +68,7 @@ function Edit-AzDataProtectionPolicyRetentionRuleClientObject { throw "Selected Retention Rule " + $Name + " is not applicable for datasource type " + $DatasourceType } - $newRetentionRule = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.AzureRetentionRule]::new() + $newRetentionRule = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.AzureRetentionRule]::new() $newRetentionRule.ObjectType = "AzureRetentionRule" $newRetentionRule.IsDefault = $IsDefault $newRetentionRule.Name = $Name @@ -92,7 +92,7 @@ function Edit-AzDataProtectionPolicyRetentionRuleClientObject { throw $message } - $newRetentionRule = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.AzureRetentionRule]::new() + $newRetentionRule = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.AzureRetentionRule]::new() $newRetentionRule.ObjectType = "AzureRetentionRule" $newRetentionRule.IsDefault = $IsDefault $newRetentionRule.Name = $Name diff --git a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Policy/Edit-AzDataProtectionPolicyTagClientObject.ps1 b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Policy/Edit-AzDataProtectionPolicyTagClientObject.ps1 index 390d22ae57e4..2900bba307b3 100644 --- a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Policy/Edit-AzDataProtectionPolicyTagClientObject.ps1 +++ b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Policy/Edit-AzDataProtectionPolicyTagClientObject.ps1 @@ -1,12 +1,12 @@ function Edit-AzDataProtectionPolicyTagClientObject{ - [OutputType('Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.IBackupPolicy')] + [OutputType('Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.IBackupPolicy')] [CmdletBinding(PositionalBinding=$false)] [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description('Adds or removes schedule tag in an existing backup policy.')] param( [Parameter(ParameterSetName='updateTag', Mandatory, HelpMessage='Backup Policy Object.')] [Parameter(ParameterSetName='RemoveTag', Mandatory, HelpMessage='Backup Policy Object.')] - [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.IBackupPolicy] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.IBackupPolicy] ${Policy}, [Parameter(ParameterSetName='updateTag', Mandatory, HelpMessage='Name of the Schedule tag.')] @@ -19,7 +19,7 @@ ${RemoveRule}, [Parameter(ParameterSetName='updateTag', Mandatory, HelpMessage='Criterias to be associated with the schedule tag.')] - [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.IScheduleBasedBackupCriteria[]] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.IScheduleBasedBackupCriteria[]] ${Criteria} ) @@ -83,7 +83,7 @@ if($tagIndex -eq -1) { - $tagCriteria = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.TaggingCriteria]::new() + $tagCriteria = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.TaggingCriteria]::new() $tagCriteria.TaggingPriority = GetTaggingPriority -Name $Name $tagCriteria.Criterion = $Criteria $tagCriteria.TagInfoTagName = $Name diff --git a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Policy/Edit-AzDataProtectionPolicyTriggerClientObject.ps1 b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Policy/Edit-AzDataProtectionPolicyTriggerClientObject.ps1 index 629420ea1a33..e66246dfb06f 100644 --- a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Policy/Edit-AzDataProtectionPolicyTriggerClientObject.ps1 +++ b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Policy/Edit-AzDataProtectionPolicyTriggerClientObject.ps1 @@ -1,12 +1,12 @@ function Edit-AzDataProtectionPolicyTriggerClientObject{ - [OutputType('Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.IBackupPolicy')] + [OutputType('Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.IBackupPolicy')] [CmdletBinding(PositionalBinding=$false)] [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description('Updates Backup schedule of an existing backup policy.')] param ( [Parameter(ParameterSetName='ModifyBackupSchedule', Mandatory, HelpMessage='Backup Policy object.')] [Parameter(ParameterSetName='RemoveBackupSchedule', Mandatory, HelpMessage='Backup Policy object.')] - [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.IBackupPolicy] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.IBackupPolicy] ${Policy}, [Parameter(ParameterSetName='ModifyBackupSchedule', Mandatory, HelpMessage='Schedule to be associated to backup policy.')] diff --git a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Policy/Get-AzDataProtectionPolicyTemplate.ps1 b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Policy/Get-AzDataProtectionPolicyTemplate.ps1 index beb8ec0cdd63..e4062ef8591e 100644 --- a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Policy/Get-AzDataProtectionPolicyTemplate.ps1 +++ b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Policy/Get-AzDataProtectionPolicyTemplate.ps1 @@ -1,7 +1,7 @@  function Get-AzDataProtectionPolicyTemplate { - [OutputType('Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.IBackupPolicy')] + [OutputType('Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.IBackupPolicy')] [CmdletBinding(PositionalBinding=$false)] [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description('Gets default policy template for a selected datasource type.')] @@ -17,7 +17,7 @@ function Get-AzDataProtectionPolicyTemplate { $manifestPolicyObject = $manifest.policySettings.defaultPolicy $jsonPolicyString = $manifestPolicyObject | ConvertTo-Json -Depth 100 - $defaultPolicy = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.BackupPolicy]::FromJsonString($jsonPolicyString) + $defaultPolicy = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.BackupPolicy]::FromJsonString($jsonPolicyString) return $defaultPolicy } diff --git a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Policy/New-AzDataProtectionBackupPolicy.ps1 b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Policy/New-AzDataProtectionBackupPolicy.ps1 index a3355c6fed28..d85a6799ad46 100644 --- a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Policy/New-AzDataProtectionBackupPolicy.ps1 +++ b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Policy/New-AzDataProtectionBackupPolicy.ps1 @@ -1,7 +1,7 @@ function New-AzDataProtectionBackupPolicy { - [OutputType('Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.IBaseBackupPolicyResource')] + [OutputType('Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.IBaseBackupPolicyResource')] [CmdletBinding(PositionalBinding=$false, SupportsShouldProcess)] [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description('Creates a new backup policy in a given backup vault')] @@ -23,7 +23,7 @@ ${Name}, [Parameter(Mandatory, HelpMessage='Policy Request Object')] - [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.IBackupPolicy] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.IBackupPolicy] ${Policy}, [Parameter()] @@ -114,7 +114,7 @@ $index += 1 } - $policyObject = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.BaseBackupPolicyResource]::new() + $policyObject = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.BaseBackupPolicyResource]::new() $policyObject.Property = $Policy $null = $PSBoundParameters.Remove("Policy") diff --git a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Policy/New-AzDataProtectionPolicyTagCriteriaClientObject.ps1 b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Policy/New-AzDataProtectionPolicyTagCriteriaClientObject.ps1 index d82993d940fe..fee8b7dd7f6d 100644 --- a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Policy/New-AzDataProtectionPolicyTagCriteriaClientObject.ps1 +++ b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Policy/New-AzDataProtectionPolicyTagCriteriaClientObject.ps1 @@ -1,5 +1,5 @@ function New-AzDataProtectionPolicyTagCriteriaClientObject{ - [OutputType('Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.IScheduleBasedBackupCriteria')] + [OutputType('Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.IScheduleBasedBackupCriteria')] [CmdletBinding(PositionalBinding=$false)] [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description('Creates a new criteria object')] @@ -32,7 +32,7 @@ ) process { - $criteria = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.ScheduleBasedBackupCriteria]::new() + $criteria = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.ScheduleBasedBackupCriteria]::new() $criteria.ObjectType = "ScheduleBasedBackupCriteria" if($AbsoluteCriteria -ne $null){ $criteria.AbsoluteCriterion = $AbsoluteCriteria @@ -61,7 +61,7 @@ { throw "Day of month should be between 1 and 28." } - $day = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.Day]::new() + $day = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.Day]::new() $day.Date = $dayOfMonthNumber $day.IsLast = $false $criteria.DaysOfMonth += $day @@ -72,7 +72,7 @@ { throw "Day of month should either be between 1 and 28 or it should be last" } - $day = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.Day]::new() + $day = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.Day]::new() $day.IsLast = $true $criteria.DaysOfMonth += $day } diff --git a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Policy/New-AzDataProtectionRetentionLifeCycleClientObject.ps1 b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Policy/New-AzDataProtectionRetentionLifeCycleClientObject.ps1 index 30fe2c5a0a5b..45ed28693ad8 100644 --- a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Policy/New-AzDataProtectionRetentionLifeCycleClientObject.ps1 +++ b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Policy/New-AzDataProtectionRetentionLifeCycleClientObject.ps1 @@ -1,5 +1,5 @@ function New-AzDataProtectionRetentionLifeCycleClientObject { - [OutputType('Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.ISourceLifeCycle')] + [OutputType('Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.ISourceLifeCycle')] [CmdletBinding(PositionalBinding=$false)] [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description('Creates new Lifecycle object')] @@ -26,7 +26,7 @@ ) process { - $lifeCycle = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.SourceLifeCycle]::new() + $lifeCycle = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.SourceLifeCycle]::new() $lifeCycle.SourceDataStoreObjectType = "DataStoreInfoBase" $lifeCycle.SourceDataStoreType = $SourceDataStore $lifeCycle.DeleteAfterObjectType = "AbsoluteDeleteOption" @@ -34,7 +34,7 @@ if(($TargetDataStore -ne $null) -and ($CopyOption -ne $null)) { - $targetCopySetting = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.TargetCopySetting]::new() + $targetCopySetting = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.TargetCopySetting]::new() $targetCopySetting.DataStoreObjectType = "DataStoreInfoBase" $targetCopySetting.DataStoreType = $TargetDataStore $targetCopySetting.CopyAfterObjectType = $CopyOption diff --git a/src/DataProtection/DataProtection.Autorest/custom/Helpers/CommonHelpers.ps1 b/src/DataProtection/DataProtection.Autorest/custom/Helpers/CommonHelpers.ps1 index 3d2249be1020..d897c91ec92c 100644 --- a/src/DataProtection/DataProtection.Autorest/custom/Helpers/CommonHelpers.ps1 +++ b/src/DataProtection/DataProtection.Autorest/custom/Helpers/CommonHelpers.ps1 @@ -5,7 +5,7 @@ function GetDatasourceSetInfo param( [Parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] - [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.IDatasource] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.IDatasource] $DatasourceInfo, [Parameter(Mandatory=$true)] @@ -16,7 +16,7 @@ function GetDatasourceSetInfo process { - $DataSourceSetInfo = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.DatasourceSet]::new() + $DataSourceSetInfo = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.DatasourceSet]::new() $DataSourceSetInfo.DatasourceType = $DatasourceInfo.Type $DataSourceSetInfo.ObjectType = "DatasourceSet" $DataSourceSetInfo.ResourceLocation = $DatasourceInfo.ResourceLocation @@ -64,7 +64,7 @@ function GetDatasourceInfo process { $manifest = LoadManifest -DatasourceType $DatasourceType.ToString() - $DataSourceInfo = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501.Datasource]::new() + $DataSourceInfo = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.Datasource]::new() $DataSourceInfo.ObjectType = "Datasource" $DataSourceInfo.ResourceId = $ResourceId $DataSourceInfo.ResourceLocation = $ResourceLocation diff --git a/src/DataProtection/DataProtection.Autorest/custom/Models/BackupInstanceResource.cs b/src/DataProtection/DataProtection.Autorest/custom/Models/BackupInstanceResource.cs index c4f08544c94d..44e56aa13a0e 100644 --- a/src/DataProtection/DataProtection.Autorest/custom/Models/BackupInstanceResource.cs +++ b/src/DataProtection/DataProtection.Autorest/custom/Models/BackupInstanceResource.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Text; -namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202501 +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701 { public partial class BackupInstanceResource { From 3308aa1e7f0d41b3ebf969327eb2de62483df971 Mon Sep 17 00:00:00 2001 From: ianna1-admin Date: Wed, 8 Oct 2025 17:19:56 -0500 Subject: [PATCH 3/3] adls functional changes --- .../Properties/AssemblyInfo.cs | 4 +- ...Vaults-backupInstances-recoveryPoints.json | 2 +- .../backupVaults-backupInstances.json | 2 +- .../backupVaults-backupJobs.json | 2 +- .../backupVaults-backupPolicies.json | 2 +- ...ckupVaults-backupResourceGuardProxies.json | 2 +- .../backupVaults-deletedBackupInstances.json | 2 +- .../backupVaults.json | 2 +- .../locations-operationStatus.json | 2 +- .../resourceGuards.json | 2 +- ...tialize-AzDataProtectionBackupInstance.ps1 | 2 +- ...tectionBackupConfigurationClientObject.ps1 | 41 +- .../Update-AzDataProtectionBackupInstance.ps1 | 18 +- ...tialize-AzDataProtectionRestoreRequest.ps1 | 16 + .../custom/Enums/Enums.cs | 1 + .../custom/manifests/AzureBlob.json | 1 + .../manifests/AzureDataLakeStorage.json | 92 +++++ .../custom/manifests/DatasourceTypesInfo.json | 4 + .../test/AdlsBlobHardeningScenario.Tests.ps1 | 285 ++++++++++++++ .../test/BlobHardeningScenario.Tests.ps1 | 142 ++++++- .../DataProtection.Autorest/test/env.json | 357 ++++++++++-------- .../test/localEnv.json | 67 ++-- 22 files changed, 826 insertions(+), 222 deletions(-) create mode 100644 src/DataProtection/DataProtection.Autorest/custom/manifests/AzureDataLakeStorage.json create mode 100644 src/DataProtection/DataProtection.Autorest/test/AdlsBlobHardeningScenario.Tests.ps1 diff --git a/src/DataProtection/DataProtection.Autorest/Properties/AssemblyInfo.cs b/src/DataProtection/DataProtection.Autorest/Properties/AssemblyInfo.cs index 39db4c864250..baac4bc1b36e 100644 --- a/src/DataProtection/DataProtection.Autorest/Properties/AssemblyInfo.cs +++ b/src/DataProtection/DataProtection.Autorest/Properties/AssemblyInfo.cs @@ -20,7 +20,7 @@ [assembly: System.Reflection.AssemblyCopyrightAttribute("Copyright © Microsoft")] [assembly: System.Reflection.AssemblyProductAttribute("Microsoft Azure PowerShell")] [assembly: System.Reflection.AssemblyTitleAttribute("Microsoft Azure PowerShell - DataProtection")] -[assembly: System.Reflection.AssemblyFileVersionAttribute("2.6.1")] -[assembly: System.Reflection.AssemblyVersionAttribute("2.6.1")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("2.7.0")] +[assembly: System.Reflection.AssemblyVersionAttribute("2.7.0")] [assembly: System.Runtime.InteropServices.ComVisibleAttribute(false)] [assembly: System.CLSCompliantAttribute(false)] diff --git a/src/DataProtection/DataProtection.Autorest/UX/Microsoft.DataProtection/backupVaults-backupInstances-recoveryPoints.json b/src/DataProtection/DataProtection.Autorest/UX/Microsoft.DataProtection/backupVaults-backupInstances-recoveryPoints.json index 7735d564fbdb..83b41bee27e9 100644 --- a/src/DataProtection/DataProtection.Autorest/UX/Microsoft.DataProtection/backupVaults-backupInstances-recoveryPoints.json +++ b/src/DataProtection/DataProtection.Autorest/UX/Microsoft.DataProtection/backupVaults-backupInstances-recoveryPoints.json @@ -1,6 +1,6 @@ { "resourceType": "backupVaults/backupInstances/recoveryPoints", - "apiVersion": "2025-01-01", + "apiVersion": "2025-07-01", "learnMore": { "url": "https://learn.microsoft.com/powershell/module/az.dataprotection" }, diff --git a/src/DataProtection/DataProtection.Autorest/UX/Microsoft.DataProtection/backupVaults-backupInstances.json b/src/DataProtection/DataProtection.Autorest/UX/Microsoft.DataProtection/backupVaults-backupInstances.json index d42de1e14df3..e9e04c852f8c 100644 --- a/src/DataProtection/DataProtection.Autorest/UX/Microsoft.DataProtection/backupVaults-backupInstances.json +++ b/src/DataProtection/DataProtection.Autorest/UX/Microsoft.DataProtection/backupVaults-backupInstances.json @@ -1,6 +1,6 @@ { "resourceType": "backupVaults/backupInstances", - "apiVersion": "2025-01-01", + "apiVersion": "2025-07-01", "learnMore": { "url": "https://learn.microsoft.com/powershell/module/az.dataprotection" }, diff --git a/src/DataProtection/DataProtection.Autorest/UX/Microsoft.DataProtection/backupVaults-backupJobs.json b/src/DataProtection/DataProtection.Autorest/UX/Microsoft.DataProtection/backupVaults-backupJobs.json index 6fb9491295a0..a2ce3a7e0fe8 100644 --- a/src/DataProtection/DataProtection.Autorest/UX/Microsoft.DataProtection/backupVaults-backupJobs.json +++ b/src/DataProtection/DataProtection.Autorest/UX/Microsoft.DataProtection/backupVaults-backupJobs.json @@ -1,6 +1,6 @@ { "resourceType": "backupVaults/backupJobs", - "apiVersion": "2025-01-01", + "apiVersion": "2025-07-01", "learnMore": { "url": "https://learn.microsoft.com/powershell/module/az.dataprotection" }, diff --git a/src/DataProtection/DataProtection.Autorest/UX/Microsoft.DataProtection/backupVaults-backupPolicies.json b/src/DataProtection/DataProtection.Autorest/UX/Microsoft.DataProtection/backupVaults-backupPolicies.json index afbcb466bbef..a3f1791d66bb 100644 --- a/src/DataProtection/DataProtection.Autorest/UX/Microsoft.DataProtection/backupVaults-backupPolicies.json +++ b/src/DataProtection/DataProtection.Autorest/UX/Microsoft.DataProtection/backupVaults-backupPolicies.json @@ -1,6 +1,6 @@ { "resourceType": "backupVaults/backupPolicies", - "apiVersion": "2025-01-01", + "apiVersion": "2025-07-01", "learnMore": { "url": "https://learn.microsoft.com/powershell/module/az.dataprotection" }, diff --git a/src/DataProtection/DataProtection.Autorest/UX/Microsoft.DataProtection/backupVaults-backupResourceGuardProxies.json b/src/DataProtection/DataProtection.Autorest/UX/Microsoft.DataProtection/backupVaults-backupResourceGuardProxies.json index 3332ab53cd5f..73d4219d57ea 100644 --- a/src/DataProtection/DataProtection.Autorest/UX/Microsoft.DataProtection/backupVaults-backupResourceGuardProxies.json +++ b/src/DataProtection/DataProtection.Autorest/UX/Microsoft.DataProtection/backupVaults-backupResourceGuardProxies.json @@ -1,6 +1,6 @@ { "resourceType": "backupVaults/backupResourceGuardProxies", - "apiVersion": "2025-01-01", + "apiVersion": "2025-07-01", "learnMore": { "url": "https://learn.microsoft.com/powershell/module/az.dataprotection" }, diff --git a/src/DataProtection/DataProtection.Autorest/UX/Microsoft.DataProtection/backupVaults-deletedBackupInstances.json b/src/DataProtection/DataProtection.Autorest/UX/Microsoft.DataProtection/backupVaults-deletedBackupInstances.json index 011b5ce897db..ed67577d8208 100644 --- a/src/DataProtection/DataProtection.Autorest/UX/Microsoft.DataProtection/backupVaults-deletedBackupInstances.json +++ b/src/DataProtection/DataProtection.Autorest/UX/Microsoft.DataProtection/backupVaults-deletedBackupInstances.json @@ -1,6 +1,6 @@ { "resourceType": "backupVaults/deletedBackupInstances", - "apiVersion": "2025-01-01", + "apiVersion": "2025-07-01", "learnMore": { "url": "https://learn.microsoft.com/powershell/module/az.dataprotection" }, diff --git a/src/DataProtection/DataProtection.Autorest/UX/Microsoft.DataProtection/backupVaults.json b/src/DataProtection/DataProtection.Autorest/UX/Microsoft.DataProtection/backupVaults.json index 9059ad6cdaaf..485ba58a402b 100644 --- a/src/DataProtection/DataProtection.Autorest/UX/Microsoft.DataProtection/backupVaults.json +++ b/src/DataProtection/DataProtection.Autorest/UX/Microsoft.DataProtection/backupVaults.json @@ -1,6 +1,6 @@ { "resourceType": "backupVaults", - "apiVersion": "2025-01-01", + "apiVersion": "2025-07-01", "learnMore": { "url": "https://learn.microsoft.com/powershell/module/az.dataprotection" }, diff --git a/src/DataProtection/DataProtection.Autorest/UX/Microsoft.DataProtection/locations-operationStatus.json b/src/DataProtection/DataProtection.Autorest/UX/Microsoft.DataProtection/locations-operationStatus.json index bcf52a51adf2..19d4cec8719b 100644 --- a/src/DataProtection/DataProtection.Autorest/UX/Microsoft.DataProtection/locations-operationStatus.json +++ b/src/DataProtection/DataProtection.Autorest/UX/Microsoft.DataProtection/locations-operationStatus.json @@ -1,6 +1,6 @@ { "resourceType": "locations/operationStatus", - "apiVersion": "2025-01-01", + "apiVersion": "2025-07-01", "learnMore": { "url": "https://learn.microsoft.com/powershell/module/az.dataprotection" }, diff --git a/src/DataProtection/DataProtection.Autorest/UX/Microsoft.DataProtection/resourceGuards.json b/src/DataProtection/DataProtection.Autorest/UX/Microsoft.DataProtection/resourceGuards.json index c299bb34b0b2..d7d1c0d1347a 100644 --- a/src/DataProtection/DataProtection.Autorest/UX/Microsoft.DataProtection/resourceGuards.json +++ b/src/DataProtection/DataProtection.Autorest/UX/Microsoft.DataProtection/resourceGuards.json @@ -1,6 +1,6 @@ { "resourceType": "resourceGuards", - "apiVersion": "2025-01-01", + "apiVersion": "2025-07-01", "learnMore": { "url": "https://learn.microsoft.com/powershell/module/az.dataprotection" }, diff --git a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/BackupInstance/Initialize-AzDataProtectionBackupInstance.ps1 b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/BackupInstance/Initialize-AzDataProtectionBackupInstance.ps1 index 7593e7772964..eadf2a439509 100644 --- a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/BackupInstance/Initialize-AzDataProtectionBackupInstance.ps1 +++ b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/BackupInstance/Initialize-AzDataProtectionBackupInstance.ps1 @@ -40,7 +40,7 @@ [System.String] ${FriendlyName}, - [Parameter(Mandatory=$false, HelpMessage='Backup configuration for backup. Use this parameter to configure protection for AzureKubernetesService,AzureBlob.')] + [Parameter(Mandatory=$false, HelpMessage='Backup configuration for backup. Use this parameter to configure protection for AzureKubernetesService, AzureBlob, AzureDataLakeStorage.')] [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.IBackupDatasourceParameters] ${BackupConfiguration}, diff --git a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/BackupInstance/New-AzDataProtectionBackupConfigurationClientObject.ps1 b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/BackupInstance/New-AzDataProtectionBackupConfigurationClientObject.ps1 index 8aee6f5dae8d..c2e1fd8c3e5a 100644 --- a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/BackupInstance/New-AzDataProtectionBackupConfigurationClientObject.ps1 +++ b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/BackupInstance/New-AzDataProtectionBackupConfigurationClientObject.ps1 @@ -7,7 +7,7 @@ function New-AzDataProtectionBackupConfigurationClientObject{ param( [Parameter(Mandatory, HelpMessage='Datasource Type')] [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DatasourceTypes] - [ValidateSet('AzureKubernetesService', 'AzureBlob')] + [ValidateSet('AzureKubernetesService', 'AzureBlob', 'AzureDataLakeStorage')] ${DatasourceType}, [Parameter(Mandatory=$false, HelpMessage='List of resource types to be excluded from backup')] @@ -134,6 +134,45 @@ function New-AzDataProtectionBackupConfigurationClientObject{ throw $message } } + + if($DatasourceType.ToString() -eq "AzureDataLakeStorage"){ + $dataSourceParam = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.AdlsBlobBackupDatasourceParameters]::new() + $dataSourceParam.ObjectType = "AdlsBlobBackupDatasourceParameters" + + if($VaultedBackupContainer -ne $null){ + + # exclude containers which start with $ except $web, $root + $unsupportedContainers = $VaultedBackupContainer | Where-Object { $_ -like '$*' -and $_ -ne "`$root" -and $_ -ne "`$web"} + if($unsupportedContainers.Count -gt 0){ + $message = "Following containers are not allowed for configure protection with AzureDataLakeStorage - $unsupportedContainers. Please remove them and proceed." + throw $message + } + + $dataSourceParam.ContainersList = $VaultedBackupContainer + } + elseif($IncludeAllContainer){ + if($StorageAccountName -eq $null -or $StorageAccountResourceGroupName -eq $null){ + $message = "Please input StorageAccountName and StorageAccountResourceGroupName parameters for fetching all vaulted containers." + throw $message + } + + CheckStorageModuleDependency + $storageAccount = Get-AzStorageAccount -ResourceGroupName $StorageAccountResourceGroupName -Name $StorageAccountName + $containers = Get-AzStorageContainer -Context $storageAccount.Context + + # exclude containers which start with $ except $web, $root + $allContainers = $containers.Name | Where-Object { -not($_ -like '$*' -and $_ -ne "`$root" -and $_ -ne "`$web")} + $dataSourceParam.ContainersList = $allContainers + } + 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){ + $message = "Invalid parameters ExcludedResourceType, IncludedResourceType, ExcludedNamespace, IncludedNamespace, LabelSelector, SnapshotVolume, IncludeClusterScopeResource for given DatasourceType." + throw $message + } + else { + $message = "Please input VaultedBackupContainer or IncludeAllContainer parameters for given workload type." + throw $message + } + } $dataSourceParam } diff --git a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/BackupInstance/Update-AzDataProtectionBackupInstance.ps1 b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/BackupInstance/Update-AzDataProtectionBackupInstance.ps1 index 7ca776169eef..917f45dd0ea5 100644 --- a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/BackupInstance/Update-AzDataProtectionBackupInstance.ps1 +++ b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/BackupInstance/Update-AzDataProtectionBackupInstance.ps1 @@ -36,7 +36,7 @@ function Update-AzDataProtectionBackupInstance [System.String] ${UserAssignedIdentityArmId}, - [Parameter(Mandatory=$false, HelpMessage='List of containers to be backed up inside the VaultStore. Use this parameter for DatasourceType AzureBlob.')] + [Parameter(Mandatory=$false, HelpMessage='List of containers to be backed up inside the VaultStore. Use this parameter for DatasourceType AzureBlob and AzureDataLakeStorage.')] [System.String[]] ${VaultedBackupContainer}, @@ -135,7 +135,7 @@ function Update-AzDataProtectionBackupInstance if($hasVaultedBackupContainer){ - if($DatasourceType -ne "AzureBlob"){ + if($DatasourceType -ne "AzureBlob" -and $DatasourceType -ne "AzureDataLakeStorage"){ $err = "Parameter VaultedBackupContainer isn't supported for given Datasource" throw $err } @@ -143,18 +143,24 @@ function Update-AzDataProtectionBackupInstance # exclude containers which start with $ except $web, $root $unsupportedContainers = $VaultedBackupContainer | Where-Object { $_ -like '$*' -and $_ -ne "`$root" -and $_ -ne "`$web"} if($unsupportedContainers.Count -gt 0){ - $message = "Following containers are not allowed for configure protection with AzureBlob - $unsupportedContainers. Please remove them and try again." + $message = "Following containers are not allowed for configure protection with AzureBlob and AzureDataLakeStorage - $unsupportedContainers. Please remove them and try again." throw $message } $datasourceParam = $instance.Property.PolicyInfo.PolicyParameter.BackupDatasourceParametersList - if($datasourceParam -ne $null -and $datasourceParam[0].ObjectType -eq "BlobBackupDatasourceParameters"){ + if($datasourceParam -ne $null -and $datasourceParam[0].ObjectType -eq "BlobBackupDatasourceParameters" -or $datasourceParam[0].ObjectType -eq "AdlsBlobBackupDatasourceParameters"){ $instance.Property.PolicyInfo.PolicyParameter.BackupDatasourceParametersList[0].ContainersList = $VaultedBackupContainer } elseif($datasourceParam -eq $null){ - $backupConfiguration = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.BlobBackupDatasourceParameters]::new() - $backupConfiguration.ObjectType = "BlobBackupDatasourceParameters" + if ($DatasourceType -eq "AzureBlob"){ + $backupConfiguration = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.BlobBackupDatasourceParameters]::new() + $backupConfiguration.ObjectType = "BlobBackupDatasourceParameters" + } + elseif ($DatasourceType -eq "AzureDataLakeStorage"){ + $backupConfiguration = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.AdlsBlobBackupDatasourceParameters]::new() + $backupConfiguration.ObjectType = "AdlsBlobBackupDatasourceParameters" + } $backupConfiguration.ContainersList = $VaultedBackupContainer $instance.Property.PolicyInfo.PolicyParameter.BackupDatasourceParametersList += @($backupConfiguration) diff --git a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/Restore/Initialize-AzDataProtectionRestoreRequest.ps1 b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/Restore/Initialize-AzDataProtectionRestoreRequest.ps1 index 99487f2facac..7ac0aefc9d71 100644 --- a/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/Restore/Initialize-AzDataProtectionRestoreRequest.ps1 +++ b/src/DataProtection/DataProtection.Autorest/custom/Cmdlets/Platform/Restore/Initialize-AzDataProtectionRestoreRequest.ps1 @@ -107,6 +107,10 @@ [Hashtable] ${PrefixMatch}, + [Parameter(ParameterSetName="AlternateLocationILR", Mandatory=$false, HelpMessage='Use this parameter to rename container(s) for alternate location ILR. Input for this parameter is a hashtable where each key is the original container name and each value is the new name for the corresponding container.')] + [Hashtable] + ${RenameTo}, + [Parameter(ParameterSetName="OriginalLocationILR", Mandatory=$false, HelpMessage='Specify the blob restore start range for PITR. You can use this option to specify the starting range for a subset of blobs in each container to restore. use a forward slash (/) to separate the container name from the blob prefix pattern.')] # [Parameter(ParameterSetName="AlternateLocationILR", Mandatory=$false, HelpMessage='Minimum matching value for Item Level Recovery.')] [System.String[]] @@ -296,6 +300,7 @@ if(($RecoveryPoint -ne $null) -and ($RecoveryPoint -ne "") -and $ContainersList.length -gt 0){ $hasPrefixMatch = $PSBoundParameters.Remove("PrefixMatch") + $hasRenameTo = $PSBoundParameters.Remove("RenameTo") for($i = 0; $i -lt $ContainersList.length; $i++){ $restoreCriteria = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20250701.ItemPathBasedRestoreCriteria]::new() @@ -312,6 +317,17 @@ $restoreCriteria.SubItemPathPrefix = $pathPrefix } + if($manifest.renameContainersEnabled -eq $true -and $hasRenameTo){ + $renameToValue = $RenameTo[$ContainersList[$i]] + if($renameToValue -ne $null -and ($renameToValue -is [Array])){ + throw "value for RenameTo must be a string for each container" + } + $restoreCriteria.RenameTo = $renameToValue + } + elseif( ($manifest.renameContainersEnabled -ne $true) -and ($hasRenameTo)){ + throw "DatasourceType $DatasourceType does not support renaming containers" + } + # adding a criteria for each container given $restoreCriteriaList += ($restoreCriteria) } diff --git a/src/DataProtection/DataProtection.Autorest/custom/Enums/Enums.cs b/src/DataProtection/DataProtection.Autorest/custom/Enums/Enums.cs index 75748ec2fc32..1d34eafa8431 100644 --- a/src/DataProtection/DataProtection.Autorest/custom/Enums/Enums.cs +++ b/src/DataProtection/DataProtection.Autorest/custom/Enums/Enums.cs @@ -8,6 +8,7 @@ public enum DatasourceTypes AzureDisk = 0, AzureBlob, AzureDatabaseForPostgreSQL, + AzureDataLakeStorage, AzureKubernetesService, AzureDatabaseForPGFlexServer, AzureDatabaseForMySQL diff --git a/src/DataProtection/DataProtection.Autorest/custom/manifests/AzureBlob.json b/src/DataProtection/DataProtection.Autorest/custom/manifests/AzureBlob.json index 81e296221200..919a8f7e0005 100644 --- a/src/DataProtection/DataProtection.Autorest/custom/manifests/AzureBlob.json +++ b/src/DataProtection/DataProtection.Autorest/custom/manifests/AzureBlob.json @@ -23,6 +23,7 @@ "customFriendlyNameAllowed": false, "supportSecretStoreAuthentication": false, "supportCrossRegionRestore": false, + "renameContainersEnabled": true, "policySettings": { "supportedRetentionTags": [ "Weekly", "Monthly", "Yearly" ], "supportedDatastoreTypes": [ "OperationalStore", "VaultStore" ], diff --git a/src/DataProtection/DataProtection.Autorest/custom/manifests/AzureDataLakeStorage.json b/src/DataProtection/DataProtection.Autorest/custom/manifests/AzureDataLakeStorage.json new file mode 100644 index 000000000000..fade1ec06f65 --- /dev/null +++ b/src/DataProtection/DataProtection.Autorest/custom/manifests/AzureDataLakeStorage.json @@ -0,0 +1,92 @@ +{ + "datasourcePermissions": [ "Storage Account Backup Contributor" ], + "datasourceRGPermissions": [], + "snapshotRGPermissions": [], + "keyVaultPermissions": [], + "dataSourceOverSnapshotRGPermissions": [], + "supportRestoreGrantPermission": false, + "datasourcePermissionsForRestore": [], + "storageAccountPermissionsForRestore": [], + "isProxyResource": false, + "enableDataSourceSetInfo": false, + "resourceType": "Microsoft.Storage/storageAccounts", + "parentResourceType": "Microsoft.Storage/storageAccounts", + "datasourceType": "Microsoft.Storage/storageAccounts/adlsBlobServices", + "allowedRestoreModes": [ "RecoveryPointBased" ], + "allowedRestoreTargetTypes": [ "AlternateLocation" ], + "itemLevelRecoveyEnabled": true, + "fileNamePrefixDisabled": false, + "addBackupDatasourceParametersList": true, + "backupConfigurationRequired": false, + "addDataStoreParametersList": false, + "friendlyNameRequired": false, + "customFriendlyNameAllowed": false, + "supportSecretStoreAuthentication": false, + "supportCrossRegionRestore": false, + "renameContainersEnabled": true, + "policySettings": { + "supportedRetentionTags": [ "Weekly", "Monthly", "Yearly" ], + "supportedDatastoreTypes": [ "VaultStore" ], + "disableAddRetentionRule": false, + "disableCustomRetentionTag": false, + "backupScheduleSupported": true, + "supportedBackupFrequency": [ "Daily", "Weekly" ], + "defaultPolicy": { + "policyRules": [ + { + "backupParameters": { + "backupType": "Discrete", + "objectType": "AzureBackupParams" + }, + "trigger": { + "schedule": { + "repeatingTimeIntervals": [ + "R/2023-03-26T13:00:00+00:00/P1W" + ], + "timeZone": "UTC" + }, + "taggingCriteria": [ + { + "tagInfo": { + "tagName": "Default", + "id": "Default_" + }, + "taggingPriority": 99, + "isDefault": true + } + ], + "objectType": "ScheduleBasedTriggerContext" + }, + "dataStore": { + "dataStoreType": "VaultStore", + "objectType": "DataStoreInfoBase" + }, + "name": "BackupWeekly", + "objectType": "AzureBackupRule" + }, + { + "lifecycles": [ + { + "deleteAfter": { + "objectType": "AbsoluteDeleteOption", + "duration": "P7D" + }, + "sourceDataStore": { + "dataStoreType": "VaultStore", + "objectType": "DataStoreInfoBase" + } + } + ], + "isDefault": true, + "name": "Default", + "objectType": "AzureRetentionRule" + } + ], + "name": "AdlsBlobPolicy1", + "datasourceTypes": [ + "Microsoft.Storage/storageAccounts/adlsBlobServices" + ], + "objectType": "BackupPolicy" + } + } +} \ No newline at end of file diff --git a/src/DataProtection/DataProtection.Autorest/custom/manifests/DatasourceTypesInfo.json b/src/DataProtection/DataProtection.Autorest/custom/manifests/DatasourceTypesInfo.json index 75f840eedb26..79ab1973253c 100644 --- a/src/DataProtection/DataProtection.Autorest/custom/manifests/DatasourceTypesInfo.json +++ b/src/DataProtection/DataProtection.Autorest/custom/manifests/DatasourceTypesInfo.json @@ -12,6 +12,10 @@ "serviceDatasourceType": "Microsoft.Storage/storageAccounts/blobServices", "clientDatasourceType": "AzureBlob" }, + { + "serviceDatasourceType": "Microsoft.Storage/storageAccounts/adlsBlobServices", + "clientDatasourceType": "AzureDataLakeStorage" + }, { "serviceDatasourceType": "Microsoft.ContainerService/managedClusters", "clientDatasourceType": "AzureKubernetesService" diff --git a/src/DataProtection/DataProtection.Autorest/test/AdlsBlobHardeningScenario.Tests.ps1 b/src/DataProtection/DataProtection.Autorest/test/AdlsBlobHardeningScenario.Tests.ps1 new file mode 100644 index 000000000000..e2facb0e94e3 --- /dev/null +++ b/src/DataProtection/DataProtection.Autorest/test/AdlsBlobHardeningScenario.Tests.ps1 @@ -0,0 +1,285 @@ +$loadEnvPath = Join-Path $PSScriptRoot 'loadEnv.ps1' +if (-Not (Test-Path -Path $loadEnvPath)) { + $loadEnvPath = Join-Path $PSScriptRoot '..\loadEnv.ps1' +} +. ($loadEnvPath) +$TestRecordingFile = Join-Path $PSScriptRoot 'AdlsBlobHardeningScenario.Recording.json' +$currentPath = $PSScriptRoot +while(-not $mockingPath) { + $mockingPath = Get-ChildItem -Path $currentPath -Recurse -Include 'HttpPipelineMocking.ps1' -File + $currentPath = Split-Path -Path $currentPath -Parent +} +. ($mockingPath | Select-Object -First 1).FullName + +Describe 'AdlsBlobHardeningScenario' -Tag 'LiveOnly' { + It 'AdlsBlobVaultedILR' { + $subId = $env.TestAdlsBlobHardeningScenario.SubscriptionId + $resourceGroupName = $env.TestAdlsBlobHardeningScenario.ResourceGroupName + $vaultName = $env.TestAdlsBlobHardeningScenario.VaultName + + $storageAccountName = $env.TestAdlsBlobHardeningScenario.StorageAccountName + $targetStorageAccId = $env.TestAdlsBlobHardeningScenario.TargetStorageAccId + $targetStorageAccountRGName = $env.TestAdlsBlobHardeningScenario.TargetStorageAccountRGName + $targetStorageAccountName = $env.TestAdlsBlobHardeningScenario.TargetStorageAccountName + + $vault = Get-AzDataProtectionBackupVault -SubscriptionId $subId -ResourceGroupName $resourceGroupName -VaultName $vaultName + + $instance = Get-AzDataProtectionBackupInstance -SubscriptionId $subId -ResourceGroupName $resourceGroupName -VaultName $vaultName | Where-Object { $_.Name -match $storageAccountName } + + $rp = Get-AzDataProtectionRecoveryPoint -SubscriptionId $subId -ResourceGroupName $resourceGroupName -VaultName $vaultName -BackupInstanceName $instance.Name + + $backedUpContainers = $instance.Property.PolicyInfo.PolicyParameter.BackupDatasourceParametersList[0].ContainersList + + # remove containers in target storage account + Set-AzContext -SubscriptionId $subId + $targetStorageAccount = Get-AzStorageAccount -ResourceGroupName $targetStorageAccountRGName -Name $targetStorageAccountName + $targetContainers = Get-AzStorageContainer -Context $targetStorageAccount.Context | Where-Object { $_.Name -match "^con" } + foreach($containerName in $targetContainers.Name){ + Remove-AzStorageContainer -Context $targetStorageAccount.Context -Name $containerName -Confirm:$false -Force + } + + $prefMatch = @{ + $backedUpContainers[0] = @("a", "B") + $backedUpContainers[1]= @("c") + } + + $renameTo = @{ + $backedUpContainers[0] = "con1renamed" + $backedUpContainers[1]= "con2renamed" + } + + # Initialize Restore + $restoreReq = Initialize-AzDataProtectionRestoreRequest -DatasourceType AzureDataLakeStorage -SourceDataStore VaultStore -RestoreLocation $vault.Location -RecoveryPoint $rp[0].Name -ItemLevelRecovery -RestoreType AlternateLocation -TargetResourceId $targetStorageAccId -ContainersList $backedUpContainers[0,1] -PrefixMatch $prefMatch -RenameTo $renameTo + + $validateRestore = Test-AzDataProtectionBackupInstanceRestore -Name $instance.Name -ResourceGroupName $resourceGroupName -SubscriptionId $subId -VaultName $vaultName -RestoreRequest $restoreReq + $validateRestore.ObjectType | Should be "OperationJobExtendedInfo" + + $restoreJob = Start-AzDataProtectionBackupInstanceRestore -SubscriptionId $subId -ResourceGroupName $resourceGroupName -VaultName $vaultName -BackupInstanceName $instance.Name -Parameter $restoreReq + + $jobid = $restoreJob.JobId.Split("/")[-1] + ($jobid -ne $null) | Should be $true + + $currentjob = Get-AzDataProtectionJob -Id $jobid -SubscriptionId $subId -ResourceGroupName $resourceGroupName -VaultName $vaultName + + ($currentjob.Status -in "InProgress", "Completed") | Should be $true + + # Wait for job completion + Write-Host "Waiting for restore job to complete..." + $jobstatus = "InProgress" + $timeout = 1800 # 30 minutes timeout + $elapsed = 0 + while($jobstatus -eq "InProgress" -and $elapsed -lt $timeout) + { + #Start-TestSleep -Seconds 30 uncomment for PR + Start-Sleep -Seconds 30 + $elapsed += 30 + $currentjob = Get-AzDataProtectionJob -Id $jobid -SubscriptionId $subId -ResourceGroupName $resourceGroupName -VaultName $vaultName + $jobstatus = $currentjob.Status + Write-Host "Job Status: $jobstatus (Elapsed: $elapsed seconds)" + } + + # Validate job completed successfully + $jobstatus | Should be "Completed" + + # Validate renamed ILR containers exist in target storage account + Write-Host "Validating restored containers..." + $targetStorageAccount = Get-AzStorageAccount -ResourceGroupName $targetStorageAccountRGName -Name $targetStorageAccountName + $restoredContainers = Get-AzStorageContainer -Context $targetStorageAccount.Context + + $expectedRenamedContainers = $renameTo.Values | Sort-Object + $actualRestoredContainerNames = $restoredContainers.Name | Sort-Object + + Write-Host "Expected renamed containers: $($expectedRenamedContainers -join ', ')" + Write-Host "Actual restored containers: $($actualRestoredContainerNames -join ', ')" + + $expectedRenamedContainers.Count | Should be $actualRestoredContainerNames.Count + + # Check each expected container exists + foreach($expectedName in $expectedRenamedContainers) { + $actualRestoredContainerNames | Should -Contain $expectedName + } + + # Ensure no extra containers (since we deleted all containers upfront, only renamed ones should exist) + foreach($actualName in $actualRestoredContainerNames) { + $expectedRenamedContainers | Should -Contain $actualName + } + Write-Host "Container validation completed successfully." + + # Validate prefix match worked as expected within renamed containers + # Validate prefix matching in renamed containers + Write-Host "Validating prefix matching in renamed containers..." + foreach($originalContainerName in $prefMatch.Keys) { + # Get the renamed container name (string value, not array) + $renamedContainerName = $renameTo[$originalContainerName] + + if(-not $renamedContainerName) { + throw "No rename mapping found for container '$originalContainerName'" + } + + Write-Host "Checking blobs in renamed container: $renamedContainerName (original: $originalContainerName)" + + # Get all blobs in the renamed container + $blobsInContainer = Get-AzStorageBlob -Container $renamedContainerName -Context $targetStorageAccount.Context + + $blobsInContainer.Count | Should -BeGreaterThan 0 + + # Get the expected prefixes for this container + $expectedPrefixes = $prefMatch[$originalContainerName] + + Write-Host "Expected prefixes for container: $($expectedPrefixes -join ', ')" + Write-Host "Found $($blobsInContainer.Count) blobs in container" + + # Validate EVERY blob matches at least one of the expected prefixes + $invalidBlobs = @() + foreach($blob in $blobsInContainer) { + $blobName = $blob.Name + $matchesPrefix = $false + + foreach($prefix in $expectedPrefixes) { + if($blobName.StartsWith($prefix)) { + $matchesPrefix = $true + break + } + } + + if(-not $matchesPrefix) { + $invalidBlobs += $blobName + } + } + + # Fail if any blobs don't match the prefix filter + if($invalidBlobs.Count -gt 0) { + throw "Found $($invalidBlobs.Count) blob(s) that don't match any expected prefix in container '$renamedContainerName': $($invalidBlobs -join ', '). Expected prefixes: $($expectedPrefixes -join ', ')" + } + + Write-Host "All $($blobsInContainer.Count) blobs in container '$renamedContainerName' match expected prefixes" + } + + Write-Host "AdlsBlobVaultedILR test completed successfully - all validations passed!" + } + + It 'ConfigureBackup' -skip { + $subId = $env.TestAdlsBlobHardeningScenario.SubscriptionId + $location = $env.TestAdlsBlobHardeningScenario.Location + $resourceGroupName = $env.TestAdlsBlobHardeningScenario.ResourceGroupName + $vaultName = $env.TestAdlsBlobHardeningScenario.VaultName + $policyName = $env.TestAdlsBlobHardeningScenario.PolicyName + $storageAccountName = $env.TestAdlsBlobHardeningScenario.StorageAccountName + $storageAccId = $env.TestAdlsBlobHardeningScenario.StorageAccId + + $vault = Get-AzDataProtectionBackupVault -SubscriptionId $subId -ResourceGroupName $resourceGroupName -VaultName $vaultName + $pol = Get-AzDataProtectionBackupPolicy -SubscriptionId $subId -VaultName $vaultName -ResourceGroupName $resourceGroupName | Where-Object { $_.Name -match $policyName } + + $instance = Get-AzDataProtectionBackupInstance -SubscriptionId $subId -ResourceGroupName $resourceGroupName -VaultName $vaultName | Where-Object { $_.Name -match $storageAcountName } + + # Remove-BI + if($instance -ne $null){ + Remove-AzDataProtectionBackupInstance -Name $instance[0].Name -SubscriptionId $subId -ResourceGroupName $resourceGroupName -VaultName $vaultName + } + + Start-TestSleep -Seconds 8 + + # new backup config and initialize BI + + $storageAccount = Get-AzStorageAccount -ResourceGroupName $resourceGroupName -Name $storageAccountName + $containers=Get-AzStorageContainer -Context $storageAccount.Context + + $backupConfig = New-AzDataProtectionBackupConfigurationClientObject -DatasourceType AzureDataLakeStorage -VaultedBackupContainer $containers.Name + $backupConfig.ContainersList = $backupConfig.ContainersList[1,3,4] + + $backupInstanceClientObject = Initialize-AzDataProtectionBackupInstance -DatasourceType AzureDataLakeStorage -DatasourceLocation $vault.Location -PolicyId $pol[0].Id -DatasourceId $storageAccId -BackupConfiguration $backupConfig + + # assign permissions and validate + Set-AzDataProtectionMSIPermission -VaultResourceGroup $resourceGroupName -VaultName $vaultName -BackupInstance $backupInstanceClientObject -PermissionsScope ResourceGroup + + $operationResponse = Test-AzDataProtectionBackupInstanceReadiness -ResourceGroupName $resourceGroupName -VaultName $vaultName -SubscriptionId $subId -BackupInstance $backupInstanceClientObject.Property -NoWait + $operationId = $operationResponse.Target.Split("/")[-1].Split("?")[0] + + While((Get-AzDataProtectionOperationStatus -OperationId $operationId -Location $vault.Location -SubscriptionId $subId).Status -eq "Inprogress"){ + Start-TestSleep -Seconds 10 + } + + # backup + $backupnstanceCreate = New-AzDataProtectionBackupInstance -ResourceGroupName $resourceGroupName -VaultName $vaultName -SubscriptionId $subId -BackupInstance $backupInstanceClientObject + + $instance = Get-AzDataProtectionBackupInstance -SubscriptionId $subId -ResourceGroupName $resourceGroupName -VaultName $vaultName | Where-Object { $_.Name -match $storageAcountName } + + while($instance.Property.CurrentProtectionState -ne "ProtectionConfigured"){ + Start-TestSleep -Seconds 10 + $instance = Get-AzDataProtectionBackupInstance -SubscriptionId $subId -ResourceGroupName $resourceGroupName -VaultName $vaultName | Where-Object { $_.Name -match $storageAcountName } + } + + $instance[0].Name -match $storageAcountName | Should be $true + + # Trigger Backup + $backupJob = Backup-AzDataProtectionBackupInstanceAdhoc -BackupInstanceName $instance.Name -ResourceGroupName $resourceGroupName -SubscriptionId $subId -VaultName $vaultName -BackupRuleOptionRuleName $pol[0].Property.PolicyRule[-1].Name -TriggerOptionRetentionTagOverride $pol[0].Property.PolicyRule[-1].Trigger.TaggingCriterion[0].TagInfoTagName + + $jobid = $backupJob.JobId.Split("/")[-1] + $jobid -ne $null | Should be $true + + $jobstatus = "InProgress" + while($jobstatus -eq "InProgress") + { + Start-TestSleep -Seconds 10 + $currentjob = Get-AzDataProtectionJob -Id $jobid -SubscriptionId $subId -ResourceGroupName $resourceGroupName -VaultName $vaultName + $jobstatus = $currentjob.Status + } + $jobstatus | Should be "Completed" + } + + It 'TriggerRestore' -skip { + # TODO: OLR should throw an error in case of vaulted backups + + $subId = $env.TestAdlsBlobHardeningScenario.SubscriptionId + $crossSubscriptionId = $env.TestAdlsBlobHardeningScenario.CrossSubscriptionId + $location = $env.TestAdlsBlobHardeningScenario.Location + $resourceGroupName = $env.TestAdlsBlobHardeningScenario.ResourceGroupName + $vaultName = $env.TestAdlsBlobHardeningScenario.VaultName + $policyName = $env.TestAdlsBlobHardeningScenario.PolicyName + $storageAccountName = $env.TestAdlsBlobHardeningScenario.StorageAccountName + $storageAccId = $env.TestAdlsBlobHardeningScenario.StorageAccId + $targetStorageAccId = $env.TestAdlsBlobHardeningScenario.TargetStorageAccId + $targetCrossSubStorageAccId = $env.TestAdlsBlobHardeningScenario.TargetCrossSubStorageAccId + $targetStorageAccountName = $env.TestAdlsBlobHardeningScenario.TargetStorageAccountName + $targetStorageAccountRGName = $env.TestAdlsBlobHardeningScenario.TargetStorageAccountRGName + $targetCrossSubStorageAccountName = $env.TestAdlsBlobHardeningScenario.TargetCrossSubStorageAccountName + $targetCrossSubStorageAccountRGName = $env.TestAdlsBlobHardeningScenario.TargetCrossSubStorageAccountRGName + + $vault = Get-AzDataProtectionBackupVault -SubscriptionId $subId -ResourceGroupName $resourceGroupName -VaultName $vaultName + $instance = Get-AzDataProtectionBackupInstance -SubscriptionId $subId -ResourceGroupName $resourceGroupName -VaultName $vaultName | Where-Object { $_.Name -match $storageAcountName } + $rp = Get-AzDataProtectionRecoveryPoint -SubscriptionId $subId -ResourceGroupName $resourceGroupName -VaultName $vaultName -BackupInstanceName $instance.Name + + $backedUpContainers = $instance.Property.PolicyInfo.PolicyParameter.BackupDatasourceParametersList[0].ContainersList + + # remove containers in target cross sub storage account + Set-AzContext -SubscriptionId $crossSubscriptionId + $targetCrossSubStorageAccount = Get-AzStorageAccount -ResourceGroupName $targetCrossSubStorageAccountRGName -Name $targetCrossSubStorageAccountName + $targetCrossSubContainers = Get-AzStorageContainer -Context $targetCrossSubStorageAccount.Context | Where-Object { $_.Name -match "con" } + foreach($crossSubContainerName in $targetCrossSubContainers.Name){ + Remove-AzStorageContainer -Context $targetCrossSubStorageAccount.Context -Name $crossSubContainerName -Confirm:$false -Force + } + + # remove containers in target storage account + Set-AzContext -SubscriptionId $subId + $targetStorageAccount = Get-AzStorageAccount -ResourceGroupName $targetStorageAccountRGName -Name $targetStorageAccountName + $targetContainers = Get-AzStorageContainer -Context $targetStorageAccount.Context | Where-Object { $_.Name -match "con" } + foreach($containerName in $targetContainers.Name){ + Remove-AzStorageContainer -Context $targetStorageAccount.Context -Name $containerName -Confirm:$false -Force + } + + # Initialize Restore + $restoreReq = Initialize-AzDataProtectionRestoreRequest -DatasourceType AzureDataLakeStorage -SourceDataStore VaultStore -RestoreLocation $vault.Location -RecoveryPoint $rp[0].Name -ItemLevelRecovery -RestoreType AlternateLocation -TargetResourceId $targetStorageAccId -ContainersList $backedUpContainers[0,1] + + $validateRestore = Test-AzDataProtectionBackupInstanceRestore -Name $instance[0].Name -ResourceGroupName $resourceGroupName -SubscriptionId $subId -VaultName $vaultName -RestoreRequest $restoreReq + $validateRestore.ObjectType | Should be "OperationJobExtendedInfo" + + $restoreJob = Start-AzDataProtectionBackupInstanceRestore -SubscriptionId $subId -ResourceGroupName $resourceGroupName -VaultName $vaultName -BackupInstanceName $instance.Name -Parameter $restoreReq + + $restoreReqCSR = Initialize-AzDataProtectionRestoreRequest -DatasourceType AzureDataLakeStorage -SourceDataStore VaultStore -RestoreLocation $vault.Location -RecoveryPoint $rp[0].Name -ItemLevelRecovery -RestoreType AlternateLocation -TargetResourceId $targetCrossSubStorageAccId -ContainersList $backedUpContainers[0,1] + + $validateRestore = Test-AzDataProtectionBackupInstanceRestore -Name $instance[0].Name -ResourceGroupName $resourceGroupName -SubscriptionId $subId -VaultName $vaultName -RestoreRequest $restoreReqCSR + $validateRestore.ObjectType | Should be "OperationJobExtendedInfo" + + $restoreJobCSR = Start-AzDataProtectionBackupInstanceRestore -SubscriptionId $subId -ResourceGroupName $resourceGroupName -VaultName $vaultName -BackupInstanceName $instance.Name -Parameter $restoreReqCSR + } +} \ No newline at end of file diff --git a/src/DataProtection/DataProtection.Autorest/test/BlobHardeningScenario.Tests.ps1 b/src/DataProtection/DataProtection.Autorest/test/BlobHardeningScenario.Tests.ps1 index c3a3ca45bd69..029051341cfb 100644 --- a/src/DataProtection/DataProtection.Autorest/test/BlobHardeningScenario.Tests.ps1 +++ b/src/DataProtection/DataProtection.Autorest/test/BlobHardeningScenario.Tests.ps1 @@ -11,7 +11,7 @@ while(-not $mockingPath) { } . ($mockingPath | Select-Object -First 1).FullName -Describe 'BlobHardeningScenario' -Tag 'LiveOnly' { +Describe 'BlobHardeningScenario' { It 'BlobVaultedILR' { $subId = $env.TestBlobHardeningScenario.SubscriptionId $resourceGroupName = $env.TestBlobHardeningScenario.ResourceGroupName @@ -24,12 +24,16 @@ Describe 'BlobHardeningScenario' -Tag 'LiveOnly' { $vault = Get-AzDataProtectionBackupVault -SubscriptionId $subId -ResourceGroupName $resourceGroupName -VaultName $vaultName - $instance = Get-AzDataProtectionBackupInstance -SubscriptionId $subId -ResourceGroupName $resourceGroupName -VaultName $vaultName | Where-Object { $_.Name -match $storageAcountName } - + Write-Host "Vault name: $($vault.Name)" + Write-Host "Storage account name: $($storageAccountName)" + Write-Host "Resource group name: $($resourceGroupName)" + $instance = Get-AzDataProtectionBackupInstance -SubscriptionId $subId -ResourceGroupName $resourceGroupName -VaultName $vaultName | Where-Object { $_.Name -match $storageAccountName } + Write-Host "Backup instance name: $($instance.Name)" + # Write-Host "Backup instance name at first index: $($instance[0].Name)" $rp = Get-AzDataProtectionRecoveryPoint -SubscriptionId $subId -ResourceGroupName $resourceGroupName -VaultName $vaultName -BackupInstanceName $instance.Name $backedUpContainers = $instance.Property.PolicyInfo.PolicyParameter.BackupDatasourceParametersList[0].ContainersList - + # remove containers in target storage account Set-AzContext -SubscriptionId $subId $targetStorageAccount = Get-AzStorageAccount -ResourceGroupName $targetStorageAccountRGName -Name $targetStorageAccountName @@ -39,17 +43,24 @@ Describe 'BlobHardeningScenario' -Tag 'LiveOnly' { } $prefMatch = @{ - $backedUpContainers[0] = @("Su", "PS") - $backedUpContainers[1]= @("Su", "PS") + $backedUpContainers[0] = @("a", "B") + $backedUpContainers[1]= @("c") + } + + $renameTo = @{ + $backedUpContainers[0] = "con1renamed" + $backedUpContainers[1]= "con2renamed" } # Initialize Restore - $restoreReq = Initialize-AzDataProtectionRestoreRequest -DatasourceType AzureBlob -SourceDataStore VaultStore -RestoreLocation $vault.Location -RecoveryPoint $rp[0].Name -ItemLevelRecovery -RestoreType AlternateLocation -TargetResourceId $targetStorageAccId -ContainersList $backedUpContainers[0,1] -PrefixMatch $prefMatch - - $validateRestore = Test-AzDataProtectionBackupInstanceRestore -Name $instance[0].Name -ResourceGroupName $resourceGroupName -SubscriptionId $subId -VaultName $vaultName -RestoreRequest $restoreReq + $restoreReq = Initialize-AzDataProtectionRestoreRequest -DatasourceType AzureDataLakeStorage -SourceDataStore VaultStore -RestoreLocation $vault.Location -RecoveryPoint $rp[0].Name -ItemLevelRecovery -RestoreType AlternateLocation -TargetResourceId $targetStorageAccId -ContainersList $backedUpContainers[0,1] -PrefixMatch $prefMatch -RenameTo $renameTo + + $validateRestore = Test-AzDataProtectionBackupInstanceRestore -Name $instance.Name -ResourceGroupName $resourceGroupName -SubscriptionId $subId -VaultName $vaultName -RestoreRequest $restoreReq + Write-Host "Backup instance name: $($instance.Name)" + Write-Host "Backup instance name at first index: $($instance[0].Name)" $validateRestore.ObjectType | Should be "OperationJobExtendedInfo" - $restoreJob = Start-AzDataProtectionBackupInstanceRestore -SubscriptionId $subId -ResourceGroupName $resourceGroupName -VaultName $vaultName -BackupInstanceName $instance.BackupInstanceName -Parameter $restoreReq + $restoreJob = Start-AzDataProtectionBackupInstanceRestore -SubscriptionId $subId -ResourceGroupName $resourceGroupName -VaultName $vaultName -BackupInstanceName $instance.Name -Parameter $restoreReq $jobid = $restoreJob.JobId.Split("/")[-1] ($jobid -ne $null) | Should be $true @@ -57,9 +68,103 @@ Describe 'BlobHardeningScenario' -Tag 'LiveOnly' { $currentjob = Get-AzDataProtectionJob -Id $jobid -SubscriptionId $subId -ResourceGroupName $resourceGroupName -VaultName $vaultName ($currentjob.Status -in "InProgress", "Completed") | Should be $true + + # Wait for job completion + Write-Host "Waiting for restore job to complete..." + $jobstatus = "InProgress" + $timeout = 1800 # 30 minutes timeout + $elapsed = 0 + while($jobstatus -eq "InProgress" -and $elapsed -lt $timeout) + { + #Start-TestSleep -Seconds 30 uncomment for PR + Start-Sleep -Seconds 30 + $elapsed += 30 + $currentjob = Get-AzDataProtectionJob -Id $jobid -SubscriptionId $subId -ResourceGroupName $resourceGroupName -VaultName $vaultName + $jobstatus = $currentjob.Status + Write-Host "Job Status: $jobstatus (Elapsed: $elapsed seconds)" + } + + # Validate job completed successfully + $jobstatus | Should be "Completed" + + # Validate renamed ILR containers exist in target storage account + Write-Host "Validating restored containers..." + $targetStorageAccount = Get-AzStorageAccount -ResourceGroupName $targetStorageAccountRGName -Name $targetStorageAccountName + $restoredContainers = Get-AzStorageContainer -Context $targetStorageAccount.Context + + $expectedRenamedContainers = $renameTo.Values | Sort-Object + $actualRestoredContainerNames = $restoredContainers.Name | Sort-Object + + Write-Host "Expected renamed containers: $($expectedRenamedContainers -join ', ')" + Write-Host "Actual restored containers: $($actualRestoredContainerNames -join ', ')" + + $expectedRenamedContainers.Count | Should be $actualRestoredContainerNames.Count + + # Check each expected container exists + foreach($expectedName in $expectedRenamedContainers) { + $actualRestoredContainerNames | Should -Contain $expectedName + } + + # Ensure no extra containers (since we deleted all containers upfront, only renamed ones should exist) + foreach($actualName in $actualRestoredContainerNames) { + $expectedRenamedContainers | Should -Contain $actualName + } + Write-Host "Container validation completed successfully." + + # Validate prefix match worked as expected within renamed containers + # Validate prefix matching in renamed containers + Write-Host "Validating prefix matching in renamed containers..." + foreach($originalContainerName in $prefMatch.Keys) { + # Get the renamed container name (string value, not array) + $renamedContainerName = $renameTo[$originalContainerName] + + if(-not $renamedContainerName) { + throw "No rename mapping found for container '$originalContainerName'" + } + + Write-Host "Checking blobs in renamed container: $renamedContainerName (original: $originalContainerName)" + + # Get all blobs in the renamed container + $blobsInContainer = Get-AzStorageBlob -Container $renamedContainerName -Context $targetStorageAccount.Context + + $blobsInContainer.Count | Should -BeGreaterThan 0 + + # Get the expected prefixes for this container + $expectedPrefixes = $prefMatch[$originalContainerName] + + Write-Host "Expected prefixes for container: $($expectedPrefixes -join ', ')" + Write-Host "Found $($blobsInContainer.Count) blobs in container" + + # Validate EVERY blob matches at least one of the expected prefixes + $invalidBlobs = @() + foreach($blob in $blobsInContainer) { + $blobName = $blob.Name + $matchesPrefix = $false + + foreach($prefix in $expectedPrefixes) { + if($blobName.StartsWith($prefix)) { + $matchesPrefix = $true + break + } + } + + if(-not $matchesPrefix) { + $invalidBlobs += $blobName + } + } + + # Fail if any blobs don't match the prefix filter + if($invalidBlobs.Count -gt 0) { + throw "Found $($invalidBlobs.Count) blob(s) that don't match any expected prefix in container '$renamedContainerName': $($invalidBlobs -join ', '). Expected prefixes: $($expectedPrefixes -join ', ')" + } + + Write-Host "All $($blobsInContainer.Count) blobs in container '$renamedContainerName' match expected prefixes" + } + + Write-Host "BlobVaultedILR test completed successfully - all validations passed!" } - It 'ConfigureBackup' -skip { + It 'ConfigureBackup' { $subId = $env.TestBlobHardeningScenario.SubscriptionId $location = $env.TestBlobHardeningScenario.Location $resourceGroupName = $env.TestBlobHardeningScenario.ResourceGroupName @@ -113,6 +218,8 @@ Describe 'BlobHardeningScenario' -Tag 'LiveOnly' { $instance[0].Name -match $storageAcountName | Should be $true # Trigger Backup + Write-Host "Backup instance name: $($instance.Name)" + Write-Host "Backup instance name at first index: $($instance[0].Name)" $backupJob = Backup-AzDataProtectionBackupInstanceAdhoc -BackupInstanceName $instance.Name -ResourceGroupName $resourceGroupName -SubscriptionId $subId -VaultName $vaultName -BackupRuleOptionRuleName $pol[0].Property.PolicyRule[-1].Name -TriggerOptionRetentionTagOverride $pol[0].Property.PolicyRule[-1].Trigger.TaggingCriterion[0].TagInfoTagName $jobid = $backupJob.JobId.Split("/")[-1] @@ -128,7 +235,7 @@ Describe 'BlobHardeningScenario' -Tag 'LiveOnly' { $jobstatus | Should be "Completed" } - It 'TriggerRestore' -skip { + It 'TriggerRestore' { # TODO: OLR should throw an error in case of vaulted backups $subId = $env.TestBlobHardeningScenario.SubscriptionId @@ -148,6 +255,8 @@ Describe 'BlobHardeningScenario' -Tag 'LiveOnly' { $vault = Get-AzDataProtectionBackupVault -SubscriptionId $subId -ResourceGroupName $resourceGroupName -VaultName $vaultName $instance = Get-AzDataProtectionBackupInstance -SubscriptionId $subId -ResourceGroupName $resourceGroupName -VaultName $vaultName | Where-Object { $_.Name -match $storageAcountName } + Write-Host "Backup instance name: $instance.Name" + Write-Host "Backup instance name at first index: $instance[0].Name" $rp = Get-AzDataProtectionRecoveryPoint -SubscriptionId $subId -ResourceGroupName $resourceGroupName -VaultName $vaultName -BackupInstanceName $instance.Name $backedUpContainers = $instance.Property.PolicyInfo.PolicyParameter.BackupDatasourceParametersList[0].ContainersList @@ -173,14 +282,15 @@ Describe 'BlobHardeningScenario' -Tag 'LiveOnly' { $validateRestore = Test-AzDataProtectionBackupInstanceRestore -Name $instance[0].Name -ResourceGroupName $resourceGroupName -SubscriptionId $subId -VaultName $vaultName -RestoreRequest $restoreReq $validateRestore.ObjectType | Should be "OperationJobExtendedInfo" - - $restoreJob = Start-AzDataProtectionBackupInstanceRestore -SubscriptionId $subId -ResourceGroupName $resourceGroupName -VaultName $vaultName -BackupInstanceName $instance.BackupInstanceName -Parameter $restoreReq + Write-Host "Backup instance name: $instance.Name" + Write-Host "Backup instance name at first index: $instance[0].Name" + $restoreJob = Start-AzDataProtectionBackupInstanceRestore -SubscriptionId $subId -ResourceGroupName $resourceGroupName -VaultName $vaultName -BackupInstanceName $instance.Name -Parameter $restoreReq $restoreReqCSR = Initialize-AzDataProtectionRestoreRequest -DatasourceType AzureBlob -SourceDataStore VaultStore -RestoreLocation $vault.Location -RecoveryPoint $rp[0].Name -ItemLevelRecovery -RestoreType AlternateLocation -TargetResourceId $targetCrossSubStorageAccId -ContainersList $backedUpContainers[0,1] $validateRestore = Test-AzDataProtectionBackupInstanceRestore -Name $instance[0].Name -ResourceGroupName $resourceGroupName -SubscriptionId $subId -VaultName $vaultName -RestoreRequest $restoreReqCSR $validateRestore.ObjectType | Should be "OperationJobExtendedInfo" - $restoreJobCSR = Start-AzDataProtectionBackupInstanceRestore -SubscriptionId $subId -ResourceGroupName $resourceGroupName -VaultName $vaultName -BackupInstanceName $instance.BackupInstanceName -Parameter $restoreReqCSR + $restoreJobCSR = Start-AzDataProtectionBackupInstanceRestore -SubscriptionId $subId -ResourceGroupName $resourceGroupName -VaultName $vaultName -BackupInstanceName $instance.Name -Parameter $restoreReqCSR } -} +} \ No newline at end of file diff --git a/src/DataProtection/DataProtection.Autorest/test/env.json b/src/DataProtection/DataProtection.Autorest/test/env.json index caa440b9eef7..18252229d117 100644 --- a/src/DataProtection/DataProtection.Autorest/test/env.json +++ b/src/DataProtection/DataProtection.Autorest/test/env.json @@ -1,228 +1,253 @@ { - "RecordDate": "31-03-2025-3-11-11", - "Tenant": "72f988bf-86f1-41af-91ab-2d7cd011db47", - "TestBackupJob": { - "ResourceGroupName": "sarath-rg", - "VaultName": "sarath-vault" + "TestSoftDelete": { + "DiskId": "/subscriptions/38304e13-357e-405e-9e9a-220351dcce8c/resourceGroups/pstest-diskrg/providers/Microsoft.Compute/disks/pstest-disk2", + "VaultName": "pstest-disk-vault2", + "BackupRuleName": "BackupDaily", + "ResourceGroupName": "pstest-diskrg", + "SubscriptionId": "38304e13-357e-405e-9e9a-220351dcce8c" + }, + "SubscriptionId": "349ea464-dc60-42e9-8c5d-46fa013b9546", + "TestMUA": { + "ResourceGuardId": "/subscriptions/62b829ee-7936-40c9-a1c9-47a93f9f3965/resourceGroups/hiaga-rg/providers/Microsoft.DataProtection/ResourceGuards/mua-pstest-dpp-ccy-resguard", + "Location": "centraluseuap", + "ResourceGuardRGName": "hiaga-rg", + "ResourceGuardName": "mua-pstest-dpp-ccy-resguard", + "SubscriptionId": "38304e13-357e-405e-9e9a-220351dcce8c", + "VaultName": "mua-pstest-backupvault", + "BackupInstanceName": "alrpstestvm-datadisk-000-20220808-115835", + "ResourceGuardSubscription": "62b829ee-7936-40c9-a1c9-47a93f9f3965", + "ResourceGroupName": "hiagarg" }, "TestAksRestoreScenario": { - "SubscriptionId": "f0c630e0-2995-4853-b056-0b3c09cb673f", - "NewPolicyName": "", + "PolicyName": "azk8ssvcs-ad-policy-backupecy", "DataSourceLocation": "eastus2euap", - "SnapshotResourceGroupId": "/subscriptions/f0c630e0-2995-4853-b056-0b3c09cb673f/resourceGroups/MC_azk8ssvcs-cluster-r-ecy_azk8ssvcs-cluster-ecy_eastus2euap", + "SubscriptionId": "f0c630e0-2995-4853-b056-0b3c09cb673f", + "VaultName": "azk8ssvcs-vault-ecy", + "ClusterName": "azk8ssvcs-bi-backupecy", "FriendlyName": "aksCluster3-ecy-araj-BI", - "SourceClusterId": "/subscriptions/f0c630e0-2995-4853-b056-0b3c09cb673f/resourcegroups/azk8ssvcs-cluster-r-ecy/providers/Microsoft.ContainerService/managedClusters/azk8ssvcs-cluster-ecy", - "PolicyName": "azk8ssvcs-ad-policy-backupecy", + "SnapshotResourceGroupId": "/subscriptions/f0c630e0-2995-4853-b056-0b3c09cb673f/resourceGroups/MC_azk8ssvcs-cluster-r-ecy_azk8ssvcs-cluster-ecy_eastus2euap", + "NewPolicyName": "", "ResourceGroupName": "azk8ssvcs-cluster-r-ecy", - "VaultName": "azk8ssvcs-vault-ecy", - "ClusterName": "azk8ssvcs-bi-backupecy" + "SourceClusterId": "/subscriptions/f0c630e0-2995-4853-b056-0b3c09cb673f/resourcegroups/azk8ssvcs-cluster-r-ecy/providers/Microsoft.ContainerService/managedClusters/azk8ssvcs-cluster-ecy" }, - "TestOssBackupScenario": { - "SubscriptionId": "38304e13-357e-405e-9e9a-220351dcce8c", - "OssDbName": "oss-pstest-db", - "VaultName": "oss-pstest-vault", - "TargetContainerURI": "https://osspstestsa.blob.core.windows.net/oss-pstest-container", - "PolicyName": "oss-pstest-policy", - "FileNamePrefix": "oss-pstest-restoreasfiles", - "OssServerName": "oss-pstest-server", - "KeyVault": "oss-pstest-keyvault", - "OssDbId": "/subscriptions/38304e13-357e-405e-9e9a-220351dcce8c/resourceGroups/hiagarg/providers/Microsoft.DBforPostgreSQL/servers/oss-pstest-server/databases/postgres", - "NewPolicyName": "oss-pstest-policy-archive", - "TargetResourceId": "/subscriptions/38304e13-357e-405e-9e9a-220351dcce8c/resourceGroups/hiagarg/providers/Microsoft.DBforPostgreSQL/servers/oss-pstest-server/databases/oss-pstest-dbrestore", - "SecretURI": "https://oss-pstest-keyvault.vault.azure.net/secrets/oss-pstest-secret", - "ResourceGroupName": "oss-pstest-rg" + "TestPGFlex": { + "PolicyName": "pgflexArchivePolicy1", + "TargetContainerURI": "https://vdhingra1psa.blob.core.windows.net/powershellpgflexrestore", + "SubscriptionId": "62b829ee-7936-40c9-a1c9-47a93f9f3965", + "ResourceGroupName": "vdhingraRG", + "VaultName": "vdhingraBackupVault", + "NewPolicyName": "pstest-pgflex-policy" }, - "TestDiskBackupScenario": { - "SubscriptionId": "38304e13-357e-405e-9e9a-220351dcce8c", + "TestTriggerBackup": { + "DiskId": "/subscriptions/38304e13-357e-405e-9e9a-220351dcce8c/resourceGroups/pstest-diskrg/providers/Microsoft.Compute/disks/pstest-disk", "VaultName": "pstest-disk-vault", - "SnapshotRG": "/subscriptions/38304e13-357e-405e-9e9a-220351dcce8c/resourceGroups/pstest-diskrg", - "DiskId": "/subscriptions/38304e13-357e-405e-9e9a-220351dcce8c/resourcegroups/pstest-diskrg/providers/Microsoft.Compute/disks/pstest-disk", - "RestoreRG": "/subscriptions/38304e13-357e-405e-9e9a-220351dcce8c/resourceGroups/pstest-diskrg", - "RestoreDiskId": "/subscriptions/38304e13-357e-405e-9e9a-220351dcce8c/resourceGroups/pstest-diskrg/providers/Microsoft.Compute/disks/pstest-restoreddisk-31-03-2025-3-11-11", - "NewPolicyName": "newdiskpolicy-31-03-2025-3-11-11", - "ResourceGroupName": "pstest-diskrg" + "BackupRuleName": "BackupHourly", + "ResourceGroupName": "pstest-diskrg", + "SubscriptionId": "38304e13-357e-405e-9e9a-220351dcce8c" + }, + "TestBackupInstance": { + "VaultName": "sarath-vault", + "ResourceGroupName": "sarath-rg", + "SubscriptionId": "62b829ee-7936-40c9-a1c9-47a93f9f3965" }, "TestGrantPermission": { - "SubscriptionId": "62b829ee-7936-40c9-a1c9-47a93f9f3965", - "VaultRG": "testBkpVaultRG", + "KeyURI": "https://rishitkeyvault3.vault.azure.net/secrets/rishitnewsecret", + "KeyVaultId": "/subscriptions/62b829ee-7936-40c9-a1c9-47a93f9f3965/resourcegroups/Sqlrg/providers/Microsoft.KeyVault/vaults/rishitkeyvault3", "VaultName": "TestBkpVault", - "Ossrg": "/subscriptions/62b829ee-7936-40c9-a1c9-47a93f9f3965/resourcegroups/Ossrg", + "VaultRG": "testBkpVaultRG", "Snapshotrg": "/subscriptions/62b829ee-7936-40c9-a1c9-47a93f9f3965/resourceGroups/testBkpVaultRG", - "KeyURI": "https://rishitkeyvault3.vault.azure.net/secrets/rishitnewsecret", - "BlobPolicyName": "blobBkpPolicy", - "OssPolicyName": "TestOSSPolicy2", - "DiskId": "/subscriptions/62b829ee-7936-40c9-a1c9-47a93f9f3965/resourceGroups/Diskrg/providers/Microsoft.Compute/disks/Mydisk2", + "OssId": "/subscriptions/62b829ee-7936-40c9-a1c9-47a93f9f3965/resourcegroups/Ossrg/providers/Microsoft.DBforPostgreSQL/servers/rishitserver3/databases/postgres", "BlobId": "/subscriptions/62b829ee-7936-40c9-a1c9-47a93f9f3965/resourceGroups/Blobrg/providers/Microsoft.Storage/storageAccounts/testblobacc4", - "DiskPolicyName": "diskBkpPolicy", + "BlobPolicyName": "blobBkpPolicy", "Diskrg": "/subscriptions/62b829ee-7936-40c9-a1c9-47a93f9f3965/resourceGroups/Diskrg", - "KeyVaultId": "/subscriptions/62b829ee-7936-40c9-a1c9-47a93f9f3965/resourcegroups/Sqlrg/providers/Microsoft.KeyVault/vaults/rishitkeyvault3", - "Blobrg": "/subscriptions/62b829ee-7936-40c9-a1c9-47a93f9f3965/resourceGroups/Blobrg", - "OssId": "/subscriptions/62b829ee-7936-40c9-a1c9-47a93f9f3965/resourcegroups/Ossrg/providers/Microsoft.DBforPostgreSQL/servers/rishitserver3/databases/postgres" - }, - "SubscriptionId": "38304e13-357e-405e-9e9a-220351dcce8c", - "TestCrossRegionRestoreScenario": { - "TargetContainerURI": "https://zftccypod01otds1.blob.core.windows.net/oss-crr-pstest", - "ResourceGroupName": "adigupt-rg", - "FileNamePrefix": "oss-pstest-crrasfiles-1", - "VaultName": "crr-wala-ecy-vault", + "OssPolicyName": "TestOSSPolicy2", "SubscriptionId": "62b829ee-7936-40c9-a1c9-47a93f9f3965", - "SecretURI": "https://crr-ccy-kv.vault.azure.net/secrets/secret-for-crr-ccy-1", - "TargetResourceId": "/subscriptions/62b829ee-7936-40c9-a1c9-47a93f9f3965/resourceGroups/DppCrrRG/providers/Microsoft.DBforPostgreSQL/servers/crr-ccy-1/databases/oss-pstestrun-crr-1" + "Ossrg": "/subscriptions/62b829ee-7936-40c9-a1c9-47a93f9f3965/resourcegroups/Ossrg", + "Blobrg": "/subscriptions/62b829ee-7936-40c9-a1c9-47a93f9f3965/resourceGroups/Blobrg", + "DiskPolicyName": "diskBkpPolicy", + "DiskId": "/subscriptions/62b829ee-7936-40c9-a1c9-47a93f9f3965/resourceGroups/Diskrg/providers/Microsoft.Compute/disks/Mydisk2" }, - "TestTriggerBackup": { - "BackupRuleName": "BackupHourly", + "TestBlobHardeningScenario": { + "PolicyName": "opvaultpol", + "TargetStorageAccId": "/subscriptions/38304e13-357e-405e-9e9a-220351dcce8c/resourceGroups/dataprotectionpstest-rg/providers/Microsoft.Storage/storageAccounts/blobtargetsa", + "ResourceGroupName": "dataprotectionpstest-rg", + "CrossSubscriptionId": "349ea464-dc60-42e9-8c5d-46fa013b9546", + "VaultName": "dataprotectionpstest-bv", + "StorageAccId": "/subscriptions/38304e13-357e-405e-9e9a-220351dcce8c/resourceGroups/dataprotectionpstest-rg/providers/Microsoft.Storage/storageAccounts/blobsourcesa1", + "TargetCrossSubStorageAccountName": "crrblobtargetsa", + "VaultPolicyName": "vaultpolicy", + "UpdatedContainersList": [ + "con1", + "con2", + "con3", + "con4", + "con5" + ], + "StorageAccountName": "blobsourcesa1", + "Location": "eastus", + "UpdatePolicyName": "opvaultpol2", "SubscriptionId": "38304e13-357e-405e-9e9a-220351dcce8c", - "VaultName": "pstest-disk-vault", - "ResourceGroupName": "pstest-diskrg", - "DiskId": "/subscriptions/38304e13-357e-405e-9e9a-220351dcce8c/resourceGroups/pstest-diskrg/providers/Microsoft.Compute/disks/pstest-disk" + "OperationalPolicyName": "operationalpol2", + "OperationalVaultedPolicyName": "opvaultpol", + "TargetCrossSubStorageAccountRGName": "dataprotectionpstest2-rg", + "TargetStorageAccountName": "blobtargetsa", + "TargetStorageAccountRGName": "dataprotectionpstest-rg", + "TargetCrossSubStorageAccId": "/subscriptions/349ea464-dc60-42e9-8c5d-46fa013b9546/resourceGroups/dataprotectionpstest2-rg/providers/Microsoft.Storage/storageAccounts/crrblobtargetsa" + }, + "TestAdlsBlobHardeningScenario": { + "PolicyName": "adlsvaultpolicy", + "TargetStorageAccId": "/subscriptions/38304e13-357e-405e-9e9a-220351dcce8c/resourceGroups/dataprotectionpstest-rg/providers/Microsoft.Storage/storageAccounts/adlsblobtargetsa", + "ResourceGroupName": "dataprotectionpstest-rg", + "CrossSubscriptionId": "349ea464-dc60-42e9-8c5d-46fa013b9546", + "VaultName": "dataprotectionpstest-bv", + "StorageAccId": "/subscriptions/38304e13-357e-405e-9e9a-220351dcce8c/resourceGroups/dataprotectionpstest-rg/providers/Microsoft.Storage/storageAccounts/adlsblobsourcesa", + "TargetCrossSubStorageAccountName": "crradlsblobtargetsa", + "VaultPolicyName": "adlsvaultpolicy", + "UpdatedContainersList": [ + "con1", + "con2", + "con3", + "con4", + "con5" + ], + "StorageAccountName": "adlsblobsourcesa", + "Location": "eastus", + "UpdatePolicyName": "adlsvaultpolicy2", + "SubscriptionId": "38304e13-357e-405e-9e9a-220351dcce8c", + "TargetCrossSubStorageAccountRGName": "dataprotectionpstest2-rg", + "TargetStorageAccountName": "adlsblobtargetsa", + "TargetStorageAccountRGName": "dataprotectionpstest-rg", + "TargetCrossSubStorageAccId": "/subscriptions/349ea464-dc60-42e9-8c5d-46fa013b9546/resourceGroups/dataprotectionpstest2-rg/providers/Microsoft.Storage/storageAccounts/crradlsblobtargetsa" }, - "TestCrossSubscriptionRestoreScenario": { - "TargetContainerURI": "https://akneemasaecy.blob.core.windows.net/oss-csr-container", - "ResourceGroupName": "CSRTestRg", - "FileNamePrefix": "oss-csr-pstest-restoreasfiles", - "TargetContainerArmId": "/subscriptions/38304e13-357e-405e-9e9a-220351dcce8c/resourceGroups/hiagarg/providers/Microsoft.Storage/storageAccounts/akneemasaecy/blobServices/default/containers/oss-csr-container", - "VaultName": "CSRPortalTestVault", - "SubscriptionId": "62b829ee-7936-40c9-a1c9-47a93f9f3965" + "TestDiskBackupScenario": { + "ResourceGroupName": "pstest-diskrg", + "VaultName": "pstest-disk-vault", + "SnapshotRG": "/subscriptions/38304e13-357e-405e-9e9a-220351dcce8c/resourceGroups/pstest-diskrg", + "NewPolicyName": "newdiskpolicy-31-03-2025-3-11-11", + "RestoreDiskId": "/subscriptions/38304e13-357e-405e-9e9a-220351dcce8c/resourceGroups/pstest-diskrg/providers/Microsoft.Compute/disks/pstest-restoreddisk-31-03-2025-3-11-11", + "RestoreRG": "/subscriptions/38304e13-357e-405e-9e9a-220351dcce8c/resourceGroups/pstest-diskrg", + "SubscriptionId": "38304e13-357e-405e-9e9a-220351dcce8c", + "DiskId": "/subscriptions/38304e13-357e-405e-9e9a-220351dcce8c/resourcegroups/pstest-diskrg/providers/Microsoft.Compute/disks/pstest-disk" }, + "Tenant": "72f988bf-86f1-41af-91ab-2d7cd011db47", "TestPGFlexRestore": { + "PolicyName": "OssFlexiblePolicy1", "TargetContainerURI": "https://akneemasaecy.blob.core.windows.net/oss-csr-container", + "BackupInstanceName": "zubair-pgflex-cli1", + "SubscriptionId": "38304e13-357e-405e-9e9a-220351dcce8c", "ResourceGroupName": "zubairRG", - "PolicyName": "OssFlexiblePolicy1", "VaultName": "zpgflex", - "SubscriptionId": "38304e13-357e-405e-9e9a-220351dcce8c", - "BackupInstanceName": "zubair-pgflex-cli1", "NewPolicyName": "pstest-pgflex-policy" }, - "TestBackupVault": { - "NewVaultName": "new-pstest-vault", - "CreateSubscriptionId": "38304e13-357e-405e-9e9a-220351dcce8c", - "ResourceGroupName": "sarath-rg", - "VaultName": "sarath-vault", - "SubscriptionId": "62b829ee-7936-40c9-a1c9-47a93f9f3965", - "NewCSRVault": "csr-pstest-vault" - }, "TestUpdateBIWithUAMI": { - "SubscriptionId": "38304e13-357e-405e-9e9a-220351dcce8c", "UserIdentityARMId": "/subscriptions/38304e13-357e-405e-9e9a-220351dcce8c/resourceGroups/hiagarg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/hiagaDiskUami2", "VaultName": "psbackupvault", + "BackupInstanceName": "psDiskBI", "ResourceGroupName": "hiagarg", - "BackupInstanceName": "psDiskBI" + "SubscriptionId": "38304e13-357e-405e-9e9a-220351dcce8c" }, - "TestMUA": { - "BackupInstanceName": "alrpstestvm-datadisk-000-20220808-115835", - "SubscriptionId": "38304e13-357e-405e-9e9a-220351dcce8c", - "ResourceGuardName": "mua-pstest-dpp-ccy-resguard", - "ResourceGuardRGName": "hiaga-rg", - "ResourceGuardSubscription": "62b829ee-7936-40c9-a1c9-47a93f9f3965", - "Location": "centraluseuap", + "TestResourceGuard": { + "ResourceGuardName": "pstest-resourceguard", "ResourceGroupName": "hiagarg", - "VaultName": "mua-pstest-backupvault", - "ResourceGuardId": "/subscriptions/62b829ee-7936-40c9-a1c9-47a93f9f3965/resourceGroups/hiaga-rg/providers/Microsoft.DataProtection/ResourceGuards/mua-pstest-dpp-ccy-resguard" - }, - "TestAksBackupScenario": { - "SubscriptionId": "62b829ee-7936-40c9-a1c9-47a93f9f3965", - "TargetClusterId": "/subscriptions/62b829ee-7936-40c9-a1c9-47a93f9f3965/resourceGroups/aksbackuptestrg-rajat/providers/Microsoft.ContainerService/managedClusters/aks-clitest-cluster", - "NewPolicyName": "pstest-aks-policy", - "DataSourceLocation": "eastus", - "SnapshotResourceGroupId": "/subscriptions/62b829ee-7936-40c9-a1c9-47a93f9f3965/resourceGroups/aksbackuptestrg-rajat", - "FriendlyName": "pstest-aks-cluster", - "SourceClusterId": "/subscriptions/62b829ee-7936-40c9-a1c9-47a93f9f3965/resourceGroups/aksbackuptestrg-rajat/providers/Microsoft.ContainerService/managedClusters/aks-pstest-cluster", - "PolicyName": "demoaksbackuppolicy", - "ResourceGroupName": "aksbackuptestrg-rajat", - "VaultName": "demobackupvault" - }, - "TestSoftDelete": { - "BackupRuleName": "BackupDaily", - "SubscriptionId": "38304e13-357e-405e-9e9a-220351dcce8c", - "VaultName": "pstest-disk-vault2", - "ResourceGroupName": "pstest-diskrg", - "DiskId": "/subscriptions/38304e13-357e-405e-9e9a-220351dcce8c/resourceGroups/pstest-diskrg/providers/Microsoft.Compute/disks/pstest-disk2" + "Location": "centraluseuap", + "SubscriptionId": "38304e13-357e-405e-9e9a-220351dcce8c" }, - "TestAksPolicyScenario": { - "SubscriptionId": "f0c630e0-2995-4853-b056-0b3c09cb673f", - "VaultName": "ps-vault", - "ResourceGroupName": "AKS-ps-shasha-test-source", - "NewVaultedPolicyName": "vaulted-aks-pspol", - "NewPolicyName": "pstest-aks-policy" + "TestBackupJob": { + "VaultName": "sarath-vault", + "ResourceGroupName": "sarath-rg" }, "TestMySQL": { + "PolicyName": "pstest-simple-mysql", "TargetContainerURI": "https://vdhingra1psa.blob.core.windows.net/powershellpgflexrestore", + "SubscriptionId": "62b829ee-7936-40c9-a1c9-47a93f9f3965", "ResourceGroupName": "vdhingraRG", - "PolicyName": "pstest-simple-mysql", "VaultName": "vdhingraBackupVault", - "SubscriptionId": "62b829ee-7936-40c9-a1c9-47a93f9f3965", "NewPolicyName": "pstest-mysql-policy" }, + "TestMySQLRestore": null, "TestCmkEncryption": { - "CmkEncryptionKeyUriUpdated": "https://jeevantestkeyvaultcmk.vault.azure.net/keys/pstest/3cd5235ad6ac4c11b40a6f35444bcbe1", - "ResourceGroupName": "jeevan-wrk-vms", "Location": "eastasia", - "VaultName": "pstestvault-automated", "CmkEncryptionKeyUri": "https://jeevantestkeyvaultcmk.vault.azure.net/keys/pstest/3cd5235ad6ac4c11b40a6f35444bcbe1", + "CmkUserAssignedIdentityId": "/subscriptions/191973cd-9c54-41e0-ac19-25dd9a92d5a8/resourcegroups/jeevan-wrk-vms/providers/Microsoft.ManagedIdentity/userAssignedIdentities/userMSIpstest", + "CmkEncryptionKeyUriUpdated": "https://jeevantestkeyvaultcmk.vault.azure.net/keys/pstest/3cd5235ad6ac4c11b40a6f35444bcbe1", "SubscriptionId": "191973cd-9c54-41e0-ac19-25dd9a92d5a8", - "CmkUserAssignedIdentityId": "/subscriptions/191973cd-9c54-41e0-ac19-25dd9a92d5a8/resourcegroups/jeevan-wrk-vms/providers/Microsoft.ManagedIdentity/userAssignedIdentities/userMSIpstest" - }, - "TestResourceGuard": { - "Location": "centraluseuap", - "SubscriptionId": "38304e13-357e-405e-9e9a-220351dcce8c", - "ResourceGroupName": "hiagarg", - "ResourceGuardName": "pstest-resourceguard" + "ResourceGroupName": "jeevan-wrk-vms", + "VaultName": "pstestvault-automated" }, "TestBackupConfig": { - "SubscriptionId": "38304e13-357e-405e-9e9a-220351dcce8c", "StorageAccountResourceGroup": "blob-pstest-rg", - "StorageAccountName": "blobpstestsa" + "StorageAccountName": "blobpstestsa", + "SubscriptionId": "38304e13-357e-405e-9e9a-220351dcce8c" }, - "TestBlobHardeningScenario": { - "VaultPolicyName": "vaulted-pstest-policy", - "TargetCrossSubStorageAccountRGName": "hiagaTestRG", - "TargetStorageAccountRGName": "hiagarg", + "TestOssBackupScenario": { + "OssServerName": "oss-pstest-server", + "OssDbName": "oss-pstest-db", "SubscriptionId": "38304e13-357e-405e-9e9a-220351dcce8c", - "TargetStorageAccId": "/subscriptions/38304e13-357e-405e-9e9a-220351dcce8c/resourceGroups/hiagarg/providers/Microsoft.Storage/storageAccounts/hiagaeussa", - "TargetStorageAccountName": "hiagaeussa", - "Location": "eastus", - "TargetCrossSubStorageAccId": "/subscriptions/62b829ee-7936-40c9-a1c9-47a93f9f3965/resourceGroups/hiagaTestRG/providers/Microsoft.Storage/storageAccounts/hiagatestsa", - "ResourceGroupName": "blob-eus-pstest-rg", - "StorageAccId": "/subscriptions/38304e13-357e-405e-9e9a-220351dcce8c/resourceGroups/blob-eus-pstest-rg/providers/Microsoft.Storage/storageAccounts/blobeuspstestsa", - "StorageAccountName": "blobeuspstestsa", - "TargetCrossSubStorageAccountName": "hiagatestsa", - "UpdatePolicyName": "op-vault-pstest-policy", - "UpdatedContainersList": [ - "conaaa", - "conabb", - "coneee", - "conwxy", - "conzzz" - ], - "OperationalVaultedPolicyName": "op-vault-pstest-policy", - "CrossSubscriptionId": "62b829ee-7936-40c9-a1c9-47a93f9f3965", - "OperationalPolicyName": "op-pstest-policy", - "VaultName": "blob-eus-pstest-vault", - "PolicyName": "operational-vaulted-policy" + "PolicyName": "oss-pstest-policy", + "FileNamePrefix": "oss-pstest-restoreasfiles", + "NewPolicyName": "oss-pstest-policy-archive", + "SecretURI": "https://oss-pstest-keyvault.vault.azure.net/secrets/oss-pstest-secret", + "KeyVault": "oss-pstest-keyvault", + "VaultName": "oss-pstest-vault", + "OssDbId": "/subscriptions/38304e13-357e-405e-9e9a-220351dcce8c/resourceGroups/hiagarg/providers/Microsoft.DBforPostgreSQL/servers/oss-pstest-server/databases/postgres", + "TargetResourceId": "/subscriptions/38304e13-357e-405e-9e9a-220351dcce8c/resourceGroups/hiagarg/providers/Microsoft.DBforPostgreSQL/servers/oss-pstest-server/databases/oss-pstest-dbrestore", + "TargetContainerURI": "https://osspstestsa.blob.core.windows.net/oss-pstest-container", + "ResourceGroupName": "oss-pstest-rg" }, - "TestMySQLRestore": null, - "TestBackupInstance": { + "TestBackupVault": { + "NewVaultName": "new-pstest-vault", + "CreateSubscriptionId": "38304e13-357e-405e-9e9a-220351dcce8c", "SubscriptionId": "62b829ee-7936-40c9-a1c9-47a93f9f3965", + "ResourceGroupName": "sarath-rg", "VaultName": "sarath-vault", - "ResourceGroupName": "sarath-rg" + "NewCSRVault": "csr-pstest-vault" }, - "TestPGFlex": { - "TargetContainerURI": "https://vdhingra1psa.blob.core.windows.net/powershellpgflexrestore", - "ResourceGroupName": "vdhingraRG", - "PolicyName": "pgflexArchivePolicy1", - "VaultName": "vdhingraBackupVault", + "RecordDate": "31-03-2025-3-11-11", + "TestBlobsRestore": { + "VaultName": "jecECYBlobVault", + "ResourceGroupName": "BlobBackup-BugBash", + "SubscriptionId": "62b829ee-7936-40c9-a1c9-47a93f9f3965" + }, + "TestAksPolicyScenario": { + "NewVaultedPolicyName": "vaulted-aks-pspol", + "VaultName": "ps-vault", + "ResourceGroupName": "AKS-ps-shasha-test-source", + "NewPolicyName": "pstest-aks-policy", + "SubscriptionId": "f0c630e0-2995-4853-b056-0b3c09cb673f" + }, + "TestCrossSubscriptionRestoreScenario": { + "FileNamePrefix": "oss-csr-pstest-restoreasfiles", + "TargetContainerURI": "https://akneemasaecy.blob.core.windows.net/oss-csr-container", "SubscriptionId": "62b829ee-7936-40c9-a1c9-47a93f9f3965", - "NewPolicyName": "pstest-pgflex-policy" + "ResourceGroupName": "CSRTestRg", + "VaultName": "CSRPortalTestVault", + "TargetContainerArmId": "/subscriptions/38304e13-357e-405e-9e9a-220351dcce8c/resourceGroups/hiagarg/providers/Microsoft.Storage/storageAccounts/akneemasaecy/blobServices/default/containers/oss-csr-container" }, - "TestBlobsRestore": { + "TestAksBackupScenario": { + "PolicyName": "demoaksbackuppolicy", + "DataSourceLocation": "eastus", "SubscriptionId": "62b829ee-7936-40c9-a1c9-47a93f9f3965", - "VaultName": "jecECYBlobVault", - "ResourceGroupName": "BlobBackup-BugBash" + "VaultName": "demobackupvault", + "TargetClusterId": "/subscriptions/62b829ee-7936-40c9-a1c9-47a93f9f3965/resourceGroups/aksbackuptestrg-rajat/providers/Microsoft.ContainerService/managedClusters/aks-clitest-cluster", + "FriendlyName": "pstest-aks-cluster", + "SnapshotResourceGroupId": "/subscriptions/62b829ee-7936-40c9-a1c9-47a93f9f3965/resourceGroups/aksbackuptestrg-rajat", + "NewPolicyName": "pstest-aks-policy", + "ResourceGroupName": "aksbackuptestrg-rajat", + "SourceClusterId": "/subscriptions/62b829ee-7936-40c9-a1c9-47a93f9f3965/resourceGroups/aksbackuptestrg-rajat/providers/Microsoft.ContainerService/managedClusters/aks-pstest-cluster" }, "TestBackupPolicy": { - "SubscriptionId": "62b829ee-7936-40c9-a1c9-47a93f9f3965", + "DiskNewPolicyName": "sarath-disk-generated-policy", "VaultName": "sarath-vault", "ResourceGroupName": "sarath-rg", - "DiskNewPolicyName": "sarath-disk-generated-policy" + "SubscriptionId": "62b829ee-7936-40c9-a1c9-47a93f9f3965" + }, + "TestCrossRegionRestoreScenario": { + "TargetContainerURI": "https://zftccypod01otds1.blob.core.windows.net/oss-crr-pstest", + "SubscriptionId": "62b829ee-7936-40c9-a1c9-47a93f9f3965", + "ResourceGroupName": "adigupt-rg", + "VaultName": "crr-wala-ecy-vault", + "TargetResourceId": "/subscriptions/62b829ee-7936-40c9-a1c9-47a93f9f3965/resourceGroups/DppCrrRG/providers/Microsoft.DBforPostgreSQL/servers/crr-ccy-1/databases/oss-pstestrun-crr-1", + "FileNamePrefix": "oss-pstest-crrasfiles-1", + "SecretURI": "https://crr-ccy-kv.vault.azure.net/secrets/secret-for-crr-ccy-1" } } diff --git a/src/DataProtection/DataProtection.Autorest/test/localEnv.json b/src/DataProtection/DataProtection.Autorest/test/localEnv.json index 47326eff84d9..64ff88440fc5 100644 --- a/src/DataProtection/DataProtection.Autorest/test/localEnv.json +++ b/src/DataProtection/DataProtection.Autorest/test/localEnv.json @@ -57,31 +57,56 @@ }, "Tenant": "72f988bf-86f1-41af-91ab-2d7cd011db47", "TestBlobHardeningScenario": { - "PolicyName": "operational-vaulted-policy", - "TargetStorageAccId": "/subscriptions/38304e13-357e-405e-9e9a-220351dcce8c/resourceGroups/hiagarg/providers/Microsoft.Storage/storageAccounts/hiagaeussa", - "ResourceGroupName": "blob-eus-pstest-rg", - "CrossSubscriptionId": "62b829ee-7936-40c9-a1c9-47a93f9f3965", - "VaultName": "blob-eus-pstest-vault", - "StorageAccId": "/subscriptions/38304e13-357e-405e-9e9a-220351dcce8c/resourceGroups/blob-eus-pstest-rg/providers/Microsoft.Storage/storageAccounts/blobeuspstestsa", - "TargetCrossSubStorageAccountName": "hiagatestsa", - "VaultPolicyName": "vaulted-pstest-policy", + "PolicyName": "opvaultpol", + "TargetStorageAccId": "/subscriptions/38304e13-357e-405e-9e9a-220351dcce8c/resourceGroups/dataprotectionpstest-rg/providers/Microsoft.Storage/storageAccounts/blobtargetsa", + "ResourceGroupName": "dataprotectionpstest-rg", + "CrossSubscriptionId": "349ea464-dc60-42e9-8c5d-46fa013b9546", + "VaultName": "dataprotectionpstest-bv", + "StorageAccId": "/subscriptions/38304e13-357e-405e-9e9a-220351dcce8c/resourceGroups/dataprotectionpstest-rg/providers/Microsoft.Storage/storageAccounts/blobsourcesa1", + "TargetCrossSubStorageAccountName": "crrblobtargetsa", + "VaultPolicyName": "vaultpolicy", "UpdatedContainersList": [ - "conaaa", - "conabb", - "coneee", - "conwxy", - "conzzz" + "con1", + "con2", + "con3", + "con4", + "con5" ], - "StorageAccountName": "blobeuspstestsa", + "StorageAccountName": "blobsourcesa1", "Location": "eastus", - "UpdatePolicyName": "op-vault-pstest-policy", + "UpdatePolicyName": "opvaultpol2", "SubscriptionId": "38304e13-357e-405e-9e9a-220351dcce8c", - "OperationalPolicyName": "op-pstest-policy", - "OperationalVaultedPolicyName": "op-vault-pstest-policy", - "TargetCrossSubStorageAccountRGName": "hiagaTestRG", - "TargetStorageAccountName": "hiagaeussa", - "TargetStorageAccountRGName": "hiagarg", - "TargetCrossSubStorageAccId": "/subscriptions/62b829ee-7936-40c9-a1c9-47a93f9f3965/resourceGroups/hiagaTestRG/providers/Microsoft.Storage/storageAccounts/hiagatestsa" + "OperationalPolicyName": "operationalpol2", + "OperationalVaultedPolicyName": "opvaultpol", + "TargetCrossSubStorageAccountRGName": "dataprotectionpstest2-rg", + "TargetStorageAccountName": "blobtargetsa", + "TargetStorageAccountRGName": "dataprotectionpstest-rg", + "TargetCrossSubStorageAccId": "/subscriptions/349ea464-dc60-42e9-8c5d-46fa013b9546/resourceGroups/dataprotectionpstest2-rg/providers/Microsoft.Storage/storageAccounts/crrblobtargetsa" + }, + "TestAdlsBlobHardeningScenario": { + "PolicyName": "adlsvaultpolicy", + "TargetStorageAccId": "/subscriptions/38304e13-357e-405e-9e9a-220351dcce8c/resourceGroups/dataprotectionpstest-rg/providers/Microsoft.Storage/storageAccounts/adlsblobtargetsa", + "ResourceGroupName": "dataprotectionpstest-rg", + "CrossSubscriptionId": "349ea464-dc60-42e9-8c5d-46fa013b9546", + "VaultName": "dataprotectionpstest-bv", + "StorageAccId": "/subscriptions/38304e13-357e-405e-9e9a-220351dcce8c/resourceGroups/dataprotectionpstest-rg/providers/Microsoft.Storage/storageAccounts/adlsblobsourcesa", + "TargetCrossSubStorageAccountName": "crradlsblobtargetsa", + "VaultPolicyName": "adlsvaultpolicy", + "UpdatedContainersList": [ + "con1", + "con2", + "con3", + "con4", + "con5" + ], + "StorageAccountName": "adlsblobsourcesa", + "Location": "eastus", + "UpdatePolicyName": "adlsvaultpolicy2", + "SubscriptionId": "38304e13-357e-405e-9e9a-220351dcce8c", + "TargetCrossSubStorageAccountRGName": "dataprotectionpstest2-rg", + "TargetStorageAccountName": "adlsblobtargetsa", + "TargetStorageAccountRGName": "dataprotectionpstest-rg", + "TargetCrossSubStorageAccId": "/subscriptions/349ea464-dc60-42e9-8c5d-46fa013b9546/resourceGroups/dataprotectionpstest2-rg/providers/Microsoft.Storage/storageAccounts/crradlsblobtargetsa" }, "TestDiskBackupScenario": { "SnapshotRG": "/subscriptions/38304e13-357e-405e-9e9a-220351dcce8c/resourceGroups/pstest-diskrg",