Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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 @@ -1061,7 +1061,7 @@ private RestAzureNS.AzureOperationResponse<ProtectedItemResource> EnableOrModify
PolicyBase policy = ProviderData.ContainsKey(ItemParams.Policy) ?
(PolicyBase)ProviderData[ItemParams.Policy] : null;

ItemBase itemBase = (ItemBase)ProviderData[ItemParams.Item];
ItemBase itemBase = ProviderData.ContainsKey(ItemParams.Item) ? (ItemBase)ProviderData[ItemParams.Item] : null;

AzureFileShareItem item = (AzureFileShareItem)ProviderData[ItemParams.Item];

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -991,13 +991,19 @@ public void RegisterContainer()

List<ProtectableContainerResource> unregisteredVmContainers =
GetUnRegisteredVmContainers(vaultName, vaultResourceGroupName);

Logger.Instance.WriteDebug("containerName: "+ containerName + ", vmResourceGroupName: " + vmResourceGroupName
+ ", unregisteredVMContainers.Count: " + unregisteredVmContainers?.Count);

ProtectableContainerResource unregisteredVmContainer = unregisteredVmContainers.Find(
vmContainer => {
string[] containerNameSplit = vmContainer.Name.Split(';');
int containerNameSplitLen = containerNameSplit.Length;
bool vmNameMatch = string.Compare(containerNameSplit[containerNameSplitLen - 1], containerName, true) == 0;
bool vmNameMatch = string.Compare(containerNameSplit[containerNameSplitLen - 1], containerName.Split(';').Last(), true) == 0;
bool rgNameMatch = string.Compare(containerNameSplit[containerNameSplitLen - 2], vmResourceGroupName, true) == 0;


Logger.Instance.WriteDebug("Unregistered Container Name: " + vmContainer.Name + ", vmNameMatch: " + vmNameMatch + ", rgNameMatch: " + rgNameMatch);

return vmNameMatch && rgNameMatch;
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,17 +74,17 @@ public RestAzureNS.AzureOperationResponse<ProtectedItemResource> EnableProtectio
string vaultName = (string)ProviderData[VaultParams.VaultName];
string resourceGroupName = (string)ProviderData[VaultParams.ResourceGroupName];
string azureVMName = (string)ProviderData[ItemParams.ItemName];
string azureVMCloudServiceName = (string)ProviderData[ItemParams.AzureVMCloudServiceName];
string azureVMCloudServiceName = ProviderData.ContainsKey(ItemParams.AzureVMCloudServiceName) ? (string)ProviderData[ItemParams.AzureVMCloudServiceName] : null;
string azureVMResourceGroupName = (string)ProviderData[ItemParams.AzureVMResourceGroupName];
string parameterSetName = (string)ProviderData[ItemParams.ParameterSetName];
string[] inclusionDisksList = (string[])ProviderData[ItemParams.InclusionDisksList];
string[] exclusionDisksList = (string[])ProviderData[ItemParams.ExclusionDisksList];
SwitchParameter resetDiskExclusionSetting = (SwitchParameter)ProviderData[ItemParams.ResetExclusionSettings];
bool excludeAllDataDisks = (bool)ProviderData[ItemParams.ExcludeAllDataDisks];
string[] inclusionDisksList = ProviderData.ContainsKey(ItemParams.InclusionDisksList) ? (string[])ProviderData[ItemParams.InclusionDisksList] : null;
string[] exclusionDisksList = ProviderData.ContainsKey(ItemParams.ExclusionDisksList) ? (string[])ProviderData[ItemParams.ExclusionDisksList] : null;
SwitchParameter resetDiskExclusionSetting = ProviderData.ContainsKey(ItemParams.ResetExclusionSettings) ? (SwitchParameter)ProviderData[ItemParams.ResetExclusionSettings] : new SwitchParameter(false);
bool excludeAllDataDisks = ProviderData.ContainsKey(ItemParams.ExcludeAllDataDisks) ? (bool)ProviderData[ItemParams.ExcludeAllDataDisks] : false;
PolicyBase policy = (PolicyBase)ProviderData[ItemParams.Policy];
ItemBase itemBase = (ItemBase)ProviderData[ItemParams.Item];
AzureVmItem item = (AzureVmItem)ProviderData[ItemParams.Item];

ItemBase itemBase = ProviderData.ContainsKey(ItemParams.Item) ? (ItemBase)ProviderData[ItemParams.Item] : null;
AzureVmItem item = ProviderData.ContainsKey(ItemParams.Item) ? (AzureVmItem)ProviderData[ItemParams.Item] : null;
string auxiliaryAccessToken = ProviderData.ContainsKey(ResourceGuardParams.Token) ? (string)ProviderData[ResourceGuardParams.Token] : null;
bool isMUAOperation = ProviderData.ContainsKey(ResourceGuardParams.IsMUAOperation) ? (bool)ProviderData[ResourceGuardParams.IsMUAOperation] : false;

Expand Down Expand Up @@ -327,7 +327,7 @@ public RestAzureNS.AzureOperationResponse<ProtectedItemResource> DisableProtecti
{
string vaultName = (string)ProviderData[VaultParams.VaultName];
string resourceGroupName = (string)ProviderData[VaultParams.ResourceGroupName];
bool deleteBackupData = (bool)ProviderData[ItemParams.DeleteBackupData];
bool deleteBackupData = ProviderData.ContainsKey(ItemParams.DeleteBackupData) ? (bool)ProviderData[ItemParams.DeleteBackupData] : false;

ItemBase itemBase = (ItemBase)ProviderData[ItemParams.Item];

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -351,5 +351,17 @@ public void TestAzureRestoreWithCVMOsDiskEncryptionSetId()
"Test-AzureRestoreWithCVMOsDiskEncryptionSetId"
);
}

[Fact]
[Trait(Category.AcceptanceType, Category.CheckIn)]
[Trait(TestConstants.Workload, TestConstants.AzureVM)]
public void TestAzureVMRedoProtection()
{
TestRunner.RunTestScript(
$"Import-Module {_IaasVmcommonModule.AsAbsoluteLocation()}",
$"Import-Module {_IaasVmtestModule.AsAbsoluteLocation()}",
"Test-AzureVMRedoProtection"
);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,40 @@
# limitations under the License.
# ----------------------------------------------------------------------------------

function Test-AzureVMRedoProtection
{
$resourceGroupName = "hiagarg"
$vaultName = "hiagaVault"
$targetVaultName = "hiagaVault2"
$vmContainerSuffix = "hiaga-adhoc-vm"
$policyName = "DefaultPolicy"

try
{
# Step 1: Move protection from hiagaVault to hiagaVault2
$vault = Get-AzRecoveryServicesVault -ResourceGroupName $resourceGroupName -Name $vaultName
$items = Get-AzRecoveryServicesBackupItem -BackupManagementType AzureVM -WorkloadType AzureVM -VaultId $vault.ID | Where-Object { $_.ContainerName.EndsWith($vmContainerSuffix) }
$targetVault = Get-AzRecoveryServicesVault -ResourceGroupName $resourceGroupName -Name $targetVaultName
$policy = Get-AzRecoveryServicesBackupProtectionPolicy -Name $policyName -VaultId $targetVault.ID

$redoJob = Redo-AzRecoveryServicesBackupProtection -Item $items[-1] -TargetVaultId $targetVault.ID -TargetPolicy $policy -VaultId $vault.ID -Force -Confirm:$false
Assert-True { $redoJob.Status -eq "Completed" }

# Step 2: Reverse - move protection back to hiagaVault
$vault = Get-AzRecoveryServicesVault -ResourceGroupName $resourceGroupName -Name $targetVaultName
$targetVault = Get-AzRecoveryServicesVault -ResourceGroupName $resourceGroupName -Name $vaultName
$policy = Get-AzRecoveryServicesBackupProtectionPolicy -Name $policyName -VaultId $targetVault.ID
$items = Get-AzRecoveryServicesBackupItem -BackupManagementType AzureVM -WorkloadType AzureVM -VaultId $vault.ID | Where-Object { $_.ContainerName.EndsWith($vmContainerSuffix) }

$redoJob = Redo-AzRecoveryServicesBackupProtection -Item $items[-1] -TargetVaultId $targetVault.ID -TargetPolicy $policy -VaultId $vault.ID -Force -Confirm:$false
Assert-True { $redoJob.Status -eq "Completed" }
}
finally
{
# Optional cleanup if needed
}
}

function Test-AzurePERestore
{
$subId = "f2edfd5d-5496-4683-b94f-b3588c579009"
Expand Down
Loading