Skip to content
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,11 @@ function getRecoveryCacheStorageAccountName{
function getRecoveryResourceGroupName{
return "recRG"+ $seed;
}

function getRecoveryNicName{
return "A2ArecNICName"+ $seed;
}

function Get-RandomSuffix(
[int] $size = 8)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,13 @@ public void A2AReplicateProximityPlacementGroupVm()
this.RunPowerShellTest(_logger, Constants.NewModel, "Test-ReplicateProximityPlacementGroupVm");
}

[Fact]
[Trait(Category.AcceptanceType, Category.CheckIn)]
public void A2AVMNicConfig()
{
this.RunPowerShellTest(_logger, Constants.NewModel, "Test-VMNicConfig");
}

[Fact]
[Trait(Category.AcceptanceType, Category.CheckIn)]
public void A2AZoneToZoneRecoveryPlanReplication()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -549,6 +549,143 @@ function Test-ReplicateProximityPlacementGroupVm{
Assert-NotNull($pe.providerSpecificDetails.RecoveryProximityPlacementGroupId)
}

<#
.SYNOPSIS
Test VMNicConfig new parametersets
#>

function Test-VMNicConfig{
param([string] $seed ='330')
$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 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
WaitForJobCompletion -JobId $enableDRjob.Name
WaitForIRCompletion -affectedObjectId $enableDRjob.TargetObjectId

#Validate PE
$pe = Get-AzRecoveryServicesAsrReplicationProtectedItem -ProtectionContainer $pc -Name $vmName
Assert-NotNull($pe)

#Update VM Nic properties
$pe = Get-AzRecoveryServicesAsrReplicationProtectedItem -ProtectionContainer $pc -Name $vmName
$nicId = $pe.NicDetailsList[0].NicId
$recNicName = getRecoveryNicName
$nicConfig = New-AzRecoveryServicesAsrVMNicConfig -NicId $nicId -ReplicationProtectedItem $pe -RecoveryNicName $recNicName -RecoveryNicResourceGroupName $recRgName -ReuseExistingNic

$updateDRjob = Set-AzRecoveryServicesAsrReplicationProtectedItem -InputObject $pe -ASRVMNicConfiguration $nicConfig
WaitForJobCompletion -JobId $updateDRjob.Name
$pe = Get-AzRecoveryServicesAsrReplicationProtectedItem -ProtectionContainer $pc -Name $vmName
Assert-NotNull($pe.NicDetailsList[0].RecoveryNicName)
Assert-NotNull($pe.NicDetailsList[0].RecoveryNicResourceGroupName)
Assert-NotNull($pe.NicDetailsList[0].ReuseExistingNic)

#Failover
$failoverjob = Start-AzRecoveryServicesAsrUnPlannedFailoverJob -ReplicationProtectedItem $pe -Direction PrimaryToRecovery -PerformSourceSideAction
WaitForJobCompletion -JobId $failoverjob.Name
}

<#
.SYNOPSIS
Test ZoneToZoneRecoveryPlanReplication new parametersets
Expand Down
Loading