Skip to content

Commit

Permalink
New api version/asr2021 02 10 (#27)
Browse files Browse the repository at this point in the history
* Fixing PFO/TFO/UFO build errors

* mulltiple ip per nic - cmdlet changes

* review changes

* code review changes

* moved validaton to nicConfig cmdlet and review changes

* minor fix

* handled review comments

* parameter validation changes, logs

* design review changes

* Fixing PFO/TFO/UFO build errors

* mulltiple ip per nic - cmdlet changes

review changes

code review changes

moved validaton to nicConfig cmdlet and review changes

minor fix

handled review comments

parameter validation changes, logs

design review changes
subash's multiple IP per NIC PR changes

* Fixing B2A, E2A and E2E Tests and added recording

* [ASR][V2A/H2A] TargetVmSize, AvSet, Sql RP and ResourceTagging changes for V2A and H2A

* Minor fix

* vmss changes -1

* 2) vmss changes - MD files

* Addressed review comments and added new tests and recordings for B2A

* vmss changes

* Addressed review comments

* Minor fixes

* Added V2A tests and recordings

* PR comments

* Update New-AzRecoveryServicesAsrReplicationProtectedItem.md

* Minor Fix

* Adding null for OdataQuery as its default value is also null.

* V2A test record json files

* Fix for Resource Tagging to clear off tags

* Minor fix in playback mode for v2a unit tests

Co-authored-by: Arpita Gupta <arpgup@microsoft.com>
Co-authored-by: subashchandra31 <subash.chandra@microsoft.com>
Co-authored-by: subashchandra31 <66659771+subashchandra31@users.noreply.github.com>
Co-authored-by: Arpitaji <78065343+Arpitaji@users.noreply.github.com>
Co-authored-by: Vidyadhari Jami <vijami@microsoft.com>
Co-authored-by: vidyadharijami <57709079+vidyadharijami@users.noreply.github.com>
Co-authored-by: prmyaka <prmyaka@microsoft.com>
  • Loading branch information
8 people committed Apr 19, 2021
1 parent 5a79ab3 commit 74a6960
Show file tree
Hide file tree
Showing 109 changed files with 947,926 additions and 103,776 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
<PackageReference Include="Microsoft.Azure.Management.RecoveryServices" Version="4.3.1-preview" />
<PackageReference Include="Microsoft.Azure.Management.RecoveryServices.Backup" Version="4.1.5-preview" />
<PackageReference Include="Microsoft.Azure.Management.Storage" Version="14.3.0" />
<PackageReference Include="Microsoft.Azure.Management.RecoveryServices.SiteRecovery" Version="2.1.2-preview" />
<PackageReference Include="Microsoft.Azure.Management.RecoveryServices.SiteRecovery" Version="2.1.3-preview" />
</ItemGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -117,5 +117,12 @@ public void A2ARecoveryPlanReplication()
{
this.RunPowerShellTest(_logger, Constants.NewModel, "Test-RecoveryPlanReplication");
}

[Fact]
[Trait(Category.AcceptanceType, Category.CheckIn)]
public void A2AVMSSReplication()
{
this.RunPowerShellTest(_logger, Constants.NewModel, "Test-VMSSReplication");
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -924,4 +924,154 @@ function Test-RecoveryPlanReplication {
#Failover
$failoverjob = Start-AzRecoveryServicesAsrUnPlannedFailoverJob -RecoveryPlan $RecoveryPlan -Direction PrimaryToRecovery -PerformSourceSideAction
WaitForJobCompletion -JobId $failoverjob.Name
}

<#
.SYNOPSIS
Test VMSS replication new parametersets
#>

function Test-VMSSReplication {
param([string] $seed = '1227')
$primaryPolicyName = getPrimaryPolicy
$recoveryPolicyName = getRecoveryPolicy

$primaryContainerMappingName = getPrimaryContainerMapping
$recoveryContainerMappingName = getRecoveryContainerMapping

$primaryContainerName = getPrimaryContainer
$recoveryContainerName = getRecoveryContainer
$vaultRgLocation = getVaultRgLocation
$vaultName = getVaultName
$vaultLocation = getVaultLocation
$vaultRg = getVaultRg
$primaryLocation = getPrimaryLocation
$recoveryLocation = getRecoveryLocation
$primaryFabricName = getPrimaryFabric
$recoveryFabricName = getRecoveryFabric
$RecoveryReplicaDiskAccountType = "Premium_LRS"
$RecoveryTargetDiskAccountType = "Premium_LRS"
$policyName = getPrimaryPolicy
$mappingName = getPrimaryContainerMapping
$recMappingName = getRecoveryContainerMapping
$primaryNetMapping = getPrimaryNetworkMapping
$recoveryNetMapping = getRecoveryNetworkMapping

#create recovery side resources
$recRgName = getRecoveryResourceGroupName
New-AzResourceGroup -name $recRgName -location $recoveryLocation -force
[Microsoft.Rest.ClientRuntime.Azure.TestFramework.TestUtilities]::Wait(20 * 1000)
$RecoveryAzureNetworkId = createRecoveryNetworkId
$index = $RecoveryAzureNetworkId.IndexOf("/providers/")
$recRg = $RecoveryAzureNetworkId.Substring(0, $index)
#create virtual Machine scale set
$vmssConfig = New-AzVmssConfig -Location $recoveryLocation -PlatformFaultDomainCount 1 -SinglePlacementGroup 0
$recVmss = new-azvmss -resourcegroupname $recRgName -vmscalesetname 'vmss-asr' -virtualmachinescaleset $vmssConfig
$recVmss1 = new-azvmss -resourcegroupname $recRgName -vmscalesetname 'vmss1-asr' -virtualmachinescaleset $vmssConfig

#create primary
$vmName = getAzureVmName
New-AzResourceGroup -name $vmName -location $primaryLocation -force
[Microsoft.Rest.ClientRuntime.Azure.TestFramework.TestUtilities]::Wait(20 * 1000)
$logStg = createCacheStorageAccount
$recLogStg = createRecoveryCacheStorageAccount

$v2VmId = createAzureVm
$vm = get-azVm -ResourceGroupName $vmName -Name $vmName
$vhdid = $vm.StorageProfile.OSDisk.ManagedDisk.Id
$index = $vm.Id.IndexOf("/providers/")
$Rg = $vm.Id.Substring(0, $index)
$PrimaryAzureNetworkId = $Rg + "/providers/Microsoft.Network/virtualNetworks/" + $vmName

# vault Creation
New-AzResourceGroup -name $vaultRg -location $vaultRgLocation -force
[Microsoft.Rest.ClientRuntime.Azure.TestFramework.TestUtilities]::Wait(20 * 1000)
New-AzRecoveryServicesVault -ResourceGroupName $vaultRg -Name $vaultName -Location $vaultLocation
[Microsoft.Rest.ClientRuntime.Azure.TestFramework.TestUtilities]::Wait(20 * 1000)
$Vault = Get-AzRecoveryServicesVault -ResourceGroupName $vaultRg -Name $vaultName
Set-ASRVaultContext -Vault $Vault

# fabric Creation
$fabJob = New-AzRecoveryServicesAsrFabric -Azure -Name $primaryFabricName -Location $primaryLocation
WaitForJobCompletion -JobId $fabJob.Name
$fab = Get-AzRecoveryServicesAsrFabric -Name $primaryFabricName
Assert-true { $fab.name -eq $primaryFabricName }
Assert-AreEqual $fab.FabricSpecificDetails.Location $primaryLocation

$fabJob = New-AzRecoveryServicesAsrFabric -Azure -Name $recoveryFabricName -Location $recoveryLocation
WaitForJobCompletion -JobId $fabJob.Name
$fab = Get-AzRecoveryServicesAsrFabric -Name $recoveryFabricName
Assert-true { $fab.name -eq $recoveryFabricName }
Assert-AreEqual $fab.FabricSpecificDetails.Location $recoveryLocation
$pf = get-asrFabric -Name $primaryFabricName
$rf = get-asrFabric -Name $recoveryFabricName

#Container creation
$job = New-AzRecoveryServicesAsrProtectionContainer -Name $primaryContainerName -Fabric $pf
WaitForJobCompletion -JobId $Job.Name
$pc = Get-asrProtectionContainer -name $primaryContainerName -Fabric $pf
Assert-NotNull($pc)
$job = New-AzRecoveryServicesAsrProtectionContainer -Name $recoveryContainerName -Fabric $rf
WaitForJobCompletion -JobId $Job.Name
$rc = Get-asrProtectionContainer -name $recoveryContainerName -Fabric $rf
Assert-NotNull($rc)

#create policy and mapping
$job = New-AzRecoveryServicesAsrPolicy -Name $policyName -RecoveryPointRetentionInHours 12 -AzureToAzure
WaitForJobCompletion -JobId $job.Name
$policy = Get-AzRecoveryServicesAsrPolicy -Name $policyName
$job = New-AzRecoveryServicesAsrProtectionContainerMapping -Name $mappingName -Policy $policy -PrimaryProtectionContainer $pc -RecoveryProtectionContainer $rc
WaitForJobCompletion -JobId $job.Name
$mapping = Get-AzRecoveryServicesAsrProtectionContainerMapping -Name $mappingName -ProtectionContainer $pc

#network mapping
$job = New-AzRecoveryServicesAsrNetworkMapping -AzureToAzure -Name $primaryNetMapping -PrimaryFabric $pf -PrimaryAzureNetworkId $PrimaryAzureNetworkId -RecoveryFabric $rf -RecoveryAzureNetworkId $RecoveryAzureNetworkId
WaitForJobCompletion -JobId $job.Name

#Reverse Conatiner mapping
$job = New-AzRecoveryServicesAsrProtectionContainerMapping -Name $recMappingName -Policy $policy -PrimaryProtectionContainer $rc -RecoveryProtectionContainer $pc
WaitForJobCompletion -JobId $job.Name
$revMapping = Get-AzRecoveryServicesAsrProtectionContainerMapping -Name $recMappingName -ProtectionContainer $rc

#Reverse network mapping
$job = New-AzRecoveryServicesAsrNetworkMapping -AzureToAzure -Name $recoveryNetMapping -PrimaryFabric $rf -PrimaryAzureNetworkId $RecoveryAzureNetworkId -RecoveryFabric $pf -RecoveryAzureNetworkId $PrimaryAzureNetworkId
WaitForJobCompletion -JobId $job.Name

#enable Replication
$v = New-AzRecoveryServicesAsrAzureToAzureDiskReplicationConfig -managed -LogStorageAccountId $logStg `
-DiskId $vhdid -RecoveryResourceGroupId $recRg -RecoveryReplicaDiskAccountType $RecoveryReplicaDiskAccountType `
-RecoveryTargetDiskAccountType $RecoveryTargetDiskAccountType
$enableDRjob = New-AzRecoveryServicesAsrReplicationProtectedItem -AzureToAzure -AzureVmId $vm.Id -Name $vmName -ProtectionContainerMapping $mapping -RecoveryResourceGroupId $recRg -AzureToAzureDiskReplicationConfiguration $v -RecoveryVirtualMachineScaleSetId $recVmss.Id
WaitForJobCompletion -JobId $enableDRjob.Name
WaitForIRCompletion -affectedObjectId $enableDRjob.TargetObjectId

#Validate vmss Set in replicated vm properties
$pe = Get-AzRecoveryServicesAsrReplicationProtectedItem -ProtectionContainer $pc -Name $vmName
Assert-NotNull($pe.providerSpecificDetails.RecoveryVirtualMachineScaleSetId)

#Update Vmpropertie
$updateDRjob = Set-AzRecoveryServicesAsrReplicationProtectedItem -InputObject $pe -RecoveryVirtualMachineScaleSetId $recVmss1.Id
WaitForJobCompletion -JobId $updateDRjob.Name
$pe = Get-AzRecoveryServicesAsrReplicationProtectedItem -ProtectionContainer $pc -Name $vmName
Assert-NotNull($pe.providerSpecificDetails.RecoveryVirtualMachineScaleSetId)

#Failover
$failoverjob = Start-AzRecoveryServicesAsrUnPlannedFailoverJob -ReplicationProtectedItem $pe -Direction PrimaryToRecovery -PerformSourceSideAction
WaitForJobCompletion -JobId $failoverjob.Name
#Get recovery vm and verify
$recvm = get-azVm -ResourceGroupName $recRgName -Name $vmName
Assert-NotNull($recvm.virtualmachinescaleset.Id);

#Switch replication
$vm = get-azVm -ResourceGroupName $vmName -Name $vmName
$vhdid = $recvm.StorageProfile.OSDisk.ManagedDisk.Id
$v = New-AzRecoveryServicesAsrAzureToAzureDiskReplicationConfig -managed -LogStorageAccountId $recLogStg `
-DiskId $vhdid -RecoveryResourceGroupId $Rg -RecoveryReplicaDiskAccountType $RecoveryReplicaDiskAccountType `
-RecoveryTargetDiskAccountType $RecoveryTargetDiskAccountType
[Microsoft.Rest.ClientRuntime.Azure.TestFramework.TestUtilities]::Wait(600 * 1000)
$Switchjob = Update-AzureRmRecoveryServicesAsrProtectionDirection -AzureToAzure -ProtectionContainerMapping $revMapping[0] -RecoveryResourceGroupId $Rg -ReplicationProtectedItem $pe -RecoveryVirtualMachineScaleSetId $vm.virtualmachinescaleset.Id -AzureToAzureDiskReplicationConfiguration $v
WaitForJobCompletion -JobId $Switchjob.Name

$pe = Get-AzRecoveryServicesAsrReplicationProtectedItem -ProtectionContainer $rc -Name $vmName
Assert-NotNull($pe.providerSpecificDetails.RecoveryVirtualMachineScaleSetId)
}
Original file line number Diff line number Diff line change
Expand Up @@ -126,9 +126,6 @@ public void TestPlannedFailover()
Category.CheckIn)]
public void TestUpdateRPIWithDES()
{
this.VaultSettingsFilePath = System.IO.Path.Combine(
System.AppDomain.CurrentDomain.BaseDirectory,
"ScenarioTests", "B2A", "CMKInput", "B2A.VaultCredentials");
this.RunPowerShellTest(
_logger,
Constants.NewModel,
Expand All @@ -141,15 +138,12 @@ public void TestUpdateRPIWithDES()
[Trait(
Category.AcceptanceType,
Category.CheckIn)]
public void TestCreateRPIWithPPG()
public void TestCreateRPIWithAdditionalProperties()
{
this.VaultSettingsFilePath = System.IO.Path.Combine(
System.AppDomain.CurrentDomain.BaseDirectory,
"ScenarioTests", "B2A", "B2AInput", "B2A.VaultCredentials");
this.RunPowerShellTest(
_logger,
Constants.NewModel,
"Test-CreateRPIWithProximityPlacementGroup -vaultSettingsFilePath \"" +
"Test-CreateRPIWithAdditionalProperties -vaultSettingsFilePath \"" +
this.VaultSettingsFilePath +
"\"");
}
Expand All @@ -158,15 +152,12 @@ public void TestCreateRPIWithPPG()
[Trait(
Category.AcceptanceType,
Category.CheckIn)]
public void TestUpdateRPIWithPPG()
public void TestUpdateRPIWithAdditionalProperties()
{
this.VaultSettingsFilePath = System.IO.Path.Combine(
System.AppDomain.CurrentDomain.BaseDirectory,
"ScenarioTests", "B2A", "B2AInput", "B2A.VaultCredentials");
this.RunPowerShellTest(
_logger,
Constants.NewModel,
"Test-UpdateRPIWithProximityPlacementGroup -vaultSettingsFilePath \"" +
"Test-UpdateRPIWithAdditionalProperties -vaultSettingsFilePath \"" +
this.VaultSettingsFilePath +
"\"");
}
Expand All @@ -177,9 +168,6 @@ public void TestUpdateRPIWithPPG()
Category.CheckIn)]
public void TestCreateRPIWithAvZone()
{
this.VaultSettingsFilePath = System.IO.Path.Combine(
System.AppDomain.CurrentDomain.BaseDirectory,
"ScenarioTests", "B2A", "B2AInput", "B2A.VaultCredentials");
this.RunPowerShellTest(
_logger,
Constants.NewModel,
Expand All @@ -194,32 +182,12 @@ public void TestCreateRPIWithAvZone()
Category.CheckIn)]
public void TestUpdateRPIWithAvZone()
{
this.VaultSettingsFilePath = System.IO.Path.Combine(
System.AppDomain.CurrentDomain.BaseDirectory,
"ScenarioTests", "B2A", "B2AInput", "B2A.VaultCredentials");
this.RunPowerShellTest(
_logger,
Constants.NewModel,
"Test-UpdateRPIWithAvailabilityZone -vaultSettingsFilePath \"" +
this.VaultSettingsFilePath +
"\"");
}

[Fact]
[Trait(
Category.AcceptanceType,
Category.CheckIn)]
public void TestCreateRPIWithManagedDisk()
{
this.VaultSettingsFilePath = System.IO.Path.Combine(
System.AppDomain.CurrentDomain.BaseDirectory,
"ScenarioTests", "B2A", "B2AInput", "B2A.VaultCredentials");
this.RunPowerShellTest(
_logger,
Constants.NewModel,
"Test-CreateRPIWithManagedDisk -vaultSettingsFilePath \"" +
this.VaultSettingsFilePath +
"\"");
}
}
}
Loading

0 comments on commit 74a6960

Please sign in to comment.