Skip to content

Commit 581cb90

Browse files
[Backup] az backup restore restore-disks: Add new parameter --cvm-os-des-id to specify the Disk Encryption Set ID to use for OS disk encryption (#31853)
1 parent 931a450 commit 581cb90

File tree

5 files changed

+1312
-4
lines changed

5 files changed

+1312
-4
lines changed

src/azure-cli/azure/cli/command_modules/backup/_params.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -403,6 +403,7 @@ def load_arguments(self, _):
403403
c.argument('tenant_id', help='ID of the tenant if the Resource Guard protecting the vault exists in a different tenant.')
404404
c.argument('disk_access_option', arg_type=get_enum_type(allowed_disk_access_options), help='Specify the disk access option for target disks.')
405405
c.argument('target_disk_access_id', help='Specify the target disk access ID when --disk-access-option is set to EnablePrivateAccessForAllDisks')
406+
c.argument('cvm_os_des_id', options_list=['--cvm-os-des-id', '--cvm-os-disk-encryption-set-id'], help='Specify the Disk Encryption Set ID to use for OS disk encryption during restore of a Confidential VM. This is applicable only for Confidential VMs with managed disks. Please ensure that Disk Encryption Set has access to the Key vault.')
406407

407408
with self.argument_context('backup restore restore-azurefileshare') as c:
408409
c.argument('resolve_conflict', resolve_conflict_type)

src/azure-cli/azure/cli/command_modules/backup/custom.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@
2727
BackupResourceVaultConfig, BackupResourceVaultConfigResource, DiskExclusionProperties, ExtendedProperties, \
2828
MoveRPAcrossTiersRequest, RecoveryPointRehydrationInfo, IaasVMRestoreWithRehydrationRequest, IdentityInfo, \
2929
BackupStatusRequest, ListRecoveryPointsRecommendedForMoveRequest, IdentityBasedRestoreDetails, ScheduleRunType, \
30-
UnlockDeleteRequest, ResourceGuardProxyBase, ResourceGuardProxyBaseResource, TargetDiskNetworkAccessSettings
30+
UnlockDeleteRequest, ResourceGuardProxyBase, ResourceGuardProxyBaseResource, TargetDiskNetworkAccessSettings, \
31+
SecuredVMDetails
3132
from azure.mgmt.recoveryservicesbackup.passivestamp.models import CrrJobRequest, CrossRegionRestoreRequest
3233

3334
import azure.cli.command_modules.backup._validators as validators
@@ -1405,7 +1406,7 @@ def restore_disks(cmd, client, resource_group_name, vault_name, container_name,
14051406
mi_user_assigned=None, target_zone=None, restore_mode='AlternateLocation', target_vm_name=None,
14061407
target_vnet_name=None, target_vnet_resource_group=None, target_subnet_name=None,
14071408
target_subscription_id=None, storage_account_resource_group=None, restore_to_edge_zone=None,
1408-
tenant_id=None, disk_access_option=None, target_disk_access_id=None):
1409+
tenant_id=None, disk_access_option=None, target_disk_access_id=None, cvm_os_des_id=None):
14091410
vault = vaults_cf(cmd.cli_ctx).get(resource_group_name, vault_name)
14101411
vault_location = vault.location
14111412
vault_identity = vault.identity
@@ -1540,6 +1541,11 @@ def restore_disks(cmd, client, resource_group_name, vault_name, container_name,
15401541
cust_help.get_resource_guard_operation_request(
15411542
cmd.cli_ctx, resource_group_name, vault_name, "RecoveryServicesRestore")]
15421543

1544+
if cvm_os_des_id is not None:
1545+
trigger_restore_request.properties.secured_vm_details = SecuredVMDetails(
1546+
secured_vmos_disk_encryption_set_id=cvm_os_des_id
1547+
)
1548+
15431549
# Trigger restore
15441550
result = client.begin_trigger(vault_name, resource_group_name, fabric_name, container_uri, item_uri, rp_name,
15451551
trigger_restore_request, cls=cust_help.get_pipeline_response, polling=False).result()

src/azure-cli/azure/cli/command_modules/backup/custom_base.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -420,7 +420,8 @@ def restore_disks(cmd, client, resource_group_name, vault_name, container_name,
420420
mi_user_assigned=None, target_zone=None, restore_mode='AlternateLocation', target_vm_name=None,
421421
target_vnet_name=None, target_vnet_resource_group=None, target_subnet_name=None,
422422
target_subscription_id=None, storage_account_resource_group=None, restore_to_edge_zone=None,
423-
tenant_id=None, disk_access_option=None, target_disk_access_id=None):
423+
tenant_id=None, disk_access_option=None, target_disk_access_id=None,
424+
cvm_os_des_id=None):
424425

425426
if rehydration_duration < 10 or rehydration_duration > 30:
426427
raise InvalidArgumentValueError('--rehydration-duration must have a value between 10 and 30 (both inclusive).')
@@ -438,7 +439,7 @@ def restore_disks(cmd, client, resource_group_name, vault_name, container_name,
438439
mi_system_assigned, mi_user_assigned, target_zone, restore_mode, target_vm_name,
439440
target_vnet_name, target_vnet_resource_group, target_subnet_name,
440441
target_subscription_id, storage_account_resource_group, restore_to_edge_zone,
441-
tenant_id, disk_access_option, target_disk_access_id)
442+
tenant_id, disk_access_option, target_disk_access_id, cvm_os_des_id)
442443

443444

444445
def enable_for_azurefileshare(cmd, client, resource_group_name, vault_name, policy_name, storage_account,

0 commit comments

Comments
 (0)