From 048eb2cf3d908eb854065c2589348968c8dee293 Mon Sep 17 00:00:00 2001 From: Shraddha Jain Date: Thu, 7 May 2026 10:32:06 +0530 Subject: [PATCH] azurebackup: Fix RSV CRR idempotency - reliable pre-check via BackupResourceConfig API The RSV ConfigureCrossRegionRestoreAsync failed in CI when CRR was already enabled because the Vault GET RedundancySettings.CrossRegionRestore property is not populated when CRR was set via the legacy BackupResourceConfig API. Fix: Add pre-check using BackupResourceConfig.EnableCrossRegionRestore (the same API already being called to set CRR). This property reliably returns the CRR state regardless of how it was originally configured. --- .../src/Services/RsvBackupOperations.cs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tools/Azure.Mcp.Tools.AzureBackup/src/Services/RsvBackupOperations.cs b/tools/Azure.Mcp.Tools.AzureBackup/src/Services/RsvBackupOperations.cs index 291ca85c13..4c278f36a4 100644 --- a/tools/Azure.Mcp.Tools.AzureBackup/src/Services/RsvBackupOperations.cs +++ b/tools/Azure.Mcp.Tools.AzureBackup/src/Services/RsvBackupOperations.cs @@ -1002,6 +1002,13 @@ public async Task ConfigureCrossRegionRestoreAsync( var currentConfig = await configResource.GetAsync(cancellationToken); var data = currentConfig.Value.Data; + + // The BackupResourceConfig GET reliably returns the CRR state even when the + // Vault GET RedundancySettings.CrossRegionRestore property is not populated. + if (data.Properties.EnableCrossRegionRestore == true) + { + return new OperationResult("Succeeded", null, $"Cross-Region Restore is already enabled for vault '{vaultName}'."); + } data.Properties.EnableCrossRegionRestore = true; var rgId = ResourceGroupResource.CreateResourceIdentifier(subscription, resourceGroup);