0
# Restore Operations
1
2
Comprehensive restore capabilities including full restore, file-level restore, and recovery point management. Supports various restore targets and scenarios with detailed restore job tracking, flexible recovery point selection, and advanced restore configurations across all Azure Backup workload types.
3
4
## Capabilities
5
6
### Restore Execution
7
8
Core operations for triggering and managing restore operations across all supported workload types.
9
10
```python { .api }
11
class RestoresOperations:
12
def trigger(
13
self,
14
resource_group_name: str,
15
vault_name: str,
16
fabric_name: str,
17
container_name: str,
18
protected_item_name: str,
19
recovery_point_id: str,
20
parameters: RestoreRequestResource,
21
**kwargs
22
) -> None:
23
"""
24
Trigger a restore operation for a protected item.
25
26
Parameters:
27
- resource_group_name: Resource group containing the vault
28
- vault_name: Recovery Services vault name
29
- fabric_name: Fabric name (usually "Azure")
30
- container_name: Container hosting the protected item
31
- protected_item_name: Name of the protected item
32
- recovery_point_id: ID of the recovery point to restore from
33
- parameters: Restore request configuration
34
- kwargs: Additional options
35
36
Returns:
37
None (operation is asynchronous - monitor via job operations)
38
"""
39
```
40
41
Usage example:
42
43
```python
44
from azure.mgmt.recoveryservicesbackup.activestamp.models import (
45
RestoreRequestResource,
46
IaasVMRestoreRequest
47
)
48
49
# Restore VM to original location
50
restore_request = RestoreRequestResource(
51
properties=IaasVMRestoreRequest(
52
recovery_point_id="recovery-point-id-12345",
53
recovery_type="OriginalLocation",
54
create_new_cloud_service=False,
55
original_storage_account_option=False,
56
encryption_details={
57
"encryption_enabled": False
58
}
59
)
60
)
61
62
client.restores.trigger(
63
resource_group_name="my-rg",
64
vault_name="my-vault",
65
fabric_name="Azure",
66
container_name="iaasvmcontainer;iaasvmcontainerv2;vm-rg;my-vm",
67
protected_item_name="vm;iaasvmcontainerv2;vm-rg;my-vm",
68
recovery_point_id="recovery-point-id-12345",
69
parameters=restore_request
70
)
71
72
print("Restore operation triggered successfully")
73
```
74
75
### Recovery Point Management
76
77
Operations for discovering, listing, and managing recovery points available for restore.
78
79
```python { .api }
80
class RecoveryPointsOperations:
81
def list(
82
self,
83
resource_group_name: str,
84
vault_name: str,
85
fabric_name: str,
86
container_name: str,
87
protected_item_name: str,
88
**kwargs
89
) -> Iterable[RecoveryPointResource]:
90
"""
91
List recovery points for a protected item.
92
93
Parameters:
94
- resource_group_name: Resource group containing the vault
95
- vault_name: Recovery Services vault name
96
- fabric_name: Fabric name (usually "Azure")
97
- container_name: Container hosting the protected item
98
- protected_item_name: Name of the protected item
99
- kwargs: Filter options (start_date, end_date, etc.)
100
101
Returns:
102
Iterable of RecoveryPointResource objects
103
"""
104
105
def get(
106
self,
107
resource_group_name: str,
108
vault_name: str,
109
fabric_name: str,
110
container_name: str,
111
protected_item_name: str,
112
recovery_point_id: str,
113
**kwargs
114
) -> RecoveryPointResource:
115
"""
116
Get details of a specific recovery point.
117
118
Parameters:
119
- resource_group_name: Resource group containing the vault
120
- vault_name: Recovery Services vault name
121
- fabric_name: Fabric name (usually "Azure")
122
- container_name: Container hosting the protected item
123
- protected_item_name: Name of the protected item
124
- recovery_point_id: ID of the recovery point
125
- kwargs: Additional options
126
127
Returns:
128
RecoveryPointResource with detailed recovery point information
129
"""
130
```
131
132
Usage example:
133
134
```python
135
# List recovery points for a VM
136
recovery_points = client.recovery_points.list(
137
"my-rg", "my-vault", "Azure",
138
"iaasvmcontainer;iaasvmcontainerv2;vm-rg;my-vm",
139
"vm;iaasvmcontainerv2;vm-rg;my-vm"
140
)
141
142
for rp in recovery_points:
143
print(f"Recovery Point: {rp.name}, Time: {rp.properties.recovery_point_time}")
144
145
# Get specific recovery point details
146
latest_rp = client.recovery_points.get(
147
"my-rg", "my-vault", "Azure",
148
"iaasvmcontainer;iaasvmcontainerv2;vm-rg;my-vm",
149
"vm;iaasvmcontainerv2;vm-rg;my-vm",
150
"recovery-point-id-12345"
151
)
152
153
print(f"Recovery Point Type: {latest_rp.properties.recovery_point_type}")
154
print(f"Consistency Type: {latest_rp.properties.recovery_point_additional_info}")
155
```
156
157
## Restore Request Types
158
159
### IaaS VM Restore Request
160
161
Restore request for Azure virtual machines with various restore scenarios.
162
163
```python { .api }
164
class IaasVMRestoreRequest:
165
def __init__(
166
self,
167
recovery_point_id: Optional[str] = None,
168
recovery_type: Optional[str] = None,
169
source_resource_id: Optional[str] = None,
170
target_virtual_machine_id: Optional[str] = None,
171
target_resource_group_id: Optional[str] = None,
172
storage_account_id: Optional[str] = None,
173
virtual_network_id: Optional[str] = None,
174
subnet_id: Optional[str] = None,
175
target_domain_name_id: Optional[str] = None,
176
region: Optional[str] = None,
177
affinity_group: Optional[str] = None,
178
create_new_cloud_service: Optional[bool] = None,
179
original_storage_account_option: Optional[bool] = None,
180
encryption_details: Optional[EncryptionDetails] = None,
181
restore_disk_lun_list: Optional[List[int]] = None,
182
restore_with_managed_disks: Optional[bool] = None,
183
disk_encryption_set_id: Optional[str] = None,
184
zones: Optional[List[str]] = None,
185
identity_info: Optional[IdentityInfo] = None,
186
identity_based_restore_details: Optional[IdentityBasedRestoreDetails] = None,
187
**kwargs
188
):
189
"""
190
IaaS VM restore request.
191
192
Parameters:
193
- recovery_point_id: ID of the recovery point to restore from
194
- recovery_type: "OriginalLocation", "AlternateLocation", "RestoreDisks"
195
- source_resource_id: Resource ID of the source VM
196
- target_virtual_machine_id: Target VM resource ID (for alternate location)
197
- target_resource_group_id: Target resource group ID
198
- storage_account_id: Storage account for restore operation
199
- virtual_network_id: Target virtual network ID
200
- subnet_id: Target subnet ID
201
- target_domain_name_id: Target domain name ID
202
- region: Target Azure region
203
- affinity_group: Affinity group for the restore
204
- create_new_cloud_service: Whether to create a new cloud service
205
- original_storage_account_option: Use original storage account
206
- encryption_details: Encryption configuration for restored VM
207
- restore_disk_lun_list: List of disk LUNs to restore
208
- restore_with_managed_disks: Whether to restore as managed disks
209
- disk_encryption_set_id: Disk encryption set ID
210
- zones: Availability zones for the restored VM
211
- identity_info: Managed identity information
212
- identity_based_restore_details: Identity-based restore configuration
213
"""
214
215
recovery_point_id: Optional[str]
216
recovery_type: Optional[str]
217
source_resource_id: Optional[str]
218
target_virtual_machine_id: Optional[str]
219
target_resource_group_id: Optional[str]
220
storage_account_id: Optional[str]
221
virtual_network_id: Optional[str]
222
subnet_id: Optional[str]
223
target_domain_name_id: Optional[str]
224
region: Optional[str]
225
affinity_group: Optional[str]
226
create_new_cloud_service: Optional[bool]
227
original_storage_account_option: Optional[bool]
228
encryption_details: Optional[EncryptionDetails]
229
restore_disk_lun_list: Optional[List[int]]
230
restore_with_managed_disks: Optional[bool]
231
disk_encryption_set_id: Optional[str]
232
zones: Optional[List[str]]
233
identity_info: Optional[IdentityInfo]
234
identity_based_restore_details: Optional[IdentityBasedRestoreDetails]
235
```
236
237
### Azure File Share Restore Request
238
239
Restore request for Azure file shares with file-level and share-level restore options.
240
241
```python { .api }
242
class AzureFileShareRestoreRequest:
243
def __init__(
244
self,
245
recovery_type: Optional[str] = None,
246
source_resource_id: Optional[str] = None,
247
copy_options: Optional[str] = None,
248
restore_request_type: Optional[str] = None,
249
restore_file_specs: Optional[List[RestoreFileSpecs]] = None,
250
target_details: Optional[TargetAFSRestoreInfo] = None,
251
**kwargs
252
):
253
"""
254
Azure file share restore request.
255
256
Parameters:
257
- recovery_type: "OriginalLocation", "AlternateLocation"
258
- source_resource_id: Resource ID of the source file share
259
- copy_options: "CreateCopy", "Skip", "Overwrite", "FailOnConflict"
260
- restore_request_type: "FullShareRestore", "ItemLevelRestore"
261
- restore_file_specs: List of files/folders to restore (for item-level)
262
- target_details: Target file share details (for alternate location)
263
"""
264
265
recovery_type: Optional[str]
266
source_resource_id: Optional[str]
267
copy_options: Optional[str]
268
restore_request_type: Optional[str]
269
restore_file_specs: Optional[List[RestoreFileSpecs]]
270
target_details: Optional[TargetAFSRestoreInfo]
271
```
272
273
### Azure Workload Restore Request
274
275
Restore request for workloads running inside Azure VMs (SQL Server, SAP HANA, etc.).
276
277
```python { .api }
278
class AzureWorkloadRestoreRequest:
279
def __init__(
280
self,
281
recovery_type: Optional[str] = None,
282
source_resource_id: Optional[str] = None,
283
property_bag: Optional[Dict[str, str]] = None,
284
target_info: Optional[TargetRestoreInfo] = None,
285
recovery_mode: Optional[str] = None,
286
target_virtual_machine_id: Optional[str] = None,
287
**kwargs
288
):
289
"""
290
Azure workload restore request.
291
292
Parameters:
293
- recovery_type: "OriginalLocation", "AlternateLocation"
294
- source_resource_id: Resource ID of the source workload
295
- property_bag: Additional properties for the restore
296
- target_info: Target workload details
297
- recovery_mode: "FileRecovery", "WorkloadRecovery"
298
- target_virtual_machine_id: Target VM resource ID
299
"""
300
301
recovery_type: Optional[str]
302
source_resource_id: Optional[str]
303
property_bag: Optional[Dict[str, str]]
304
target_info: Optional[TargetRestoreInfo]
305
recovery_mode: Optional[str]
306
target_virtual_machine_id: Optional[str]
307
```
308
309
### Azure Workload SQL Point In Time Restore Request
310
311
Specialized restore request for SQL databases with point-in-time recovery.
312
313
```python { .api }
314
class AzureWorkloadSQLPointInTimeRestoreRequest:
315
def __init__(
316
self,
317
recovery_type: Optional[str] = None,
318
source_resource_id: Optional[str] = None,
319
property_bag: Optional[Dict[str, str]] = None,
320
target_info: Optional[TargetRestoreInfo] = None,
321
recovery_mode: Optional[str] = None,
322
target_virtual_machine_id: Optional[str] = None,
323
point_in_time: Optional[datetime] = None,
324
**kwargs
325
):
326
"""
327
Azure workload SQL point-in-time restore request.
328
329
Parameters:
330
- recovery_type: "OriginalLocation", "AlternateLocation"
331
- source_resource_id: Resource ID of the source SQL database
332
- property_bag: Additional properties for the restore
333
- target_info: Target database details
334
- recovery_mode: "FileRecovery", "WorkloadRecovery"
335
- target_virtual_machine_id: Target VM resource ID
336
- point_in_time: Point in time to restore to
337
"""
338
339
recovery_type: Optional[str]
340
source_resource_id: Optional[str]
341
property_bag: Optional[Dict[str, str]]
342
target_info: Optional[TargetRestoreInfo]
343
recovery_mode: Optional[str]
344
target_virtual_machine_id: Optional[str]
345
point_in_time: Optional[datetime]
346
```
347
348
## Recovery Point Types
349
350
### IaaS VM Recovery Point
351
352
Recovery point information for Azure virtual machines.
353
354
```python { .api }
355
class IaasVMRecoveryPoint:
356
def __init__(
357
self,
358
recovery_point_type: Optional[str] = None,
359
recovery_point_time: Optional[datetime] = None,
360
recovery_point_additional_info: Optional[str] = None,
361
source_vm_storage_type: Optional[str] = None,
362
is_source_vm_encrypted: Optional[bool] = None,
363
key_and_secret: Optional[KeyAndSecretDetails] = None,
364
is_instant_ilr_session_active: Optional[bool] = None,
365
recovery_point_tier_details: Optional[List[RecoveryPointTierInformation]] = None,
366
is_managed_virtual_machine: Optional[bool] = None,
367
virtual_machine_size: Optional[str] = None,
368
original_storage_account_option: Optional[bool] = None,
369
os_type: Optional[str] = None,
370
recovery_point_disk_configuration: Optional[RecoveryPointDiskConfiguration] = None,
371
zones: Optional[List[str]] = None,
372
**kwargs
373
):
374
"""
375
IaaS VM recovery point.
376
377
Parameters:
378
- recovery_point_type: "AppConsistent", "CrashConsistent", "FileSystemConsistent"
379
- recovery_point_time: Time when the recovery point was created
380
- recovery_point_additional_info: Additional recovery point information
381
- source_vm_storage_type: Storage type of the source VM
382
- is_source_vm_encrypted: Whether the source VM is encrypted
383
- key_and_secret: Encryption key and secret details
384
- is_instant_ilr_session_active: Whether instant ILR session is active
385
- recovery_point_tier_details: Tier information for the recovery point
386
- is_managed_virtual_machine: Whether VM uses managed disks
387
- virtual_machine_size: Size of the virtual machine
388
- original_storage_account_option: Original storage account option
389
- os_type: Operating system type
390
- recovery_point_disk_configuration: Disk configuration details
391
- zones: Availability zones
392
"""
393
394
recovery_point_type: Optional[str]
395
recovery_point_time: Optional[datetime]
396
recovery_point_additional_info: Optional[str]
397
source_vm_storage_type: Optional[str]
398
is_source_vm_encrypted: Optional[bool]
399
key_and_secret: Optional[KeyAndSecretDetails]
400
is_instant_ilr_session_active: Optional[bool]
401
recovery_point_tier_details: Optional[List[RecoveryPointTierInformation]]
402
is_managed_virtual_machine: Optional[bool]
403
virtual_machine_size: Optional[str]
404
original_storage_account_option: Optional[bool]
405
os_type: Optional[str]
406
recovery_point_disk_configuration: Optional[RecoveryPointDiskConfiguration]
407
zones: Optional[List[str]]
408
```
409
410
### Azure File Share Recovery Point
411
412
Recovery point information for Azure file shares.
413
414
```python { .api }
415
class AzureFileShareRecoveryPoint:
416
def __init__(
417
self,
418
recovery_point_type: Optional[str] = None,
419
recovery_point_time: Optional[datetime] = None,
420
file_share_snapshot_uri: Optional[str] = None,
421
recovery_point_size_in_gb: Optional[int] = None,
422
recovery_point_tier_details: Optional[List[RecoveryPointTierInformation]] = None,
423
**kwargs
424
):
425
"""
426
Azure file share recovery point.
427
428
Parameters:
429
- recovery_point_type: Type of recovery point
430
- recovery_point_time: Time when the recovery point was created
431
- file_share_snapshot_uri: URI of the file share snapshot
432
- recovery_point_size_in_gb: Size of the recovery point in GB
433
- recovery_point_tier_details: Tier information for the recovery point
434
"""
435
436
recovery_point_type: Optional[str]
437
recovery_point_time: Optional[datetime]
438
file_share_snapshot_uri: Optional[str]
439
recovery_point_size_in_gb: Optional[int]
440
recovery_point_tier_details: Optional[List[RecoveryPointTierInformation]]
441
```
442
443
### Azure Workload Recovery Point
444
445
Recovery point information for workloads running inside Azure VMs.
446
447
```python { .api }
448
class AzureWorkloadRecoveryPoint:
449
def __init__(
450
self,
451
recovery_point_time_in_utc: Optional[datetime] = None,
452
type: Optional[str] = None,
453
recovery_point_tier_details: Optional[List[RecoveryPointTierInformation]] = None,
454
recovery_point_move_readiness_info: Optional[Dict[str, RecoveryPointMoveReadinessInfo]] = None,
455
**kwargs
456
):
457
"""
458
Azure workload recovery point.
459
460
Parameters:
461
- recovery_point_time_in_utc: UTC time when recovery point was created
462
- type: Type of recovery point ("Full", "Log", "Differential")
463
- recovery_point_tier_details: Tier information for the recovery point
464
- recovery_point_move_readiness_info: Move readiness information
465
"""
466
467
recovery_point_time_in_utc: Optional[datetime]
468
type: Optional[str]
469
recovery_point_tier_details: Optional[List[RecoveryPointTierInformation]]
470
recovery_point_move_readiness_info: Optional[Dict[str, RecoveryPointMoveReadinessInfo]]
471
```
472
473
## Usage Examples
474
475
### Restore VM to Original Location
476
477
```python
478
from azure.mgmt.recoveryservicesbackup.activestamp.models import (
479
RestoreRequestResource,
480
IaasVMRestoreRequest
481
)
482
483
# Restore VM to its original location
484
restore_request = RestoreRequestResource(
485
properties=IaasVMRestoreRequest(
486
recovery_point_id="recovery-point-id-12345",
487
recovery_type="OriginalLocation",
488
source_resource_id="/subscriptions/sub-id/resourceGroups/vm-rg/providers/Microsoft.Compute/virtualMachines/my-vm",
489
create_new_cloud_service=False,
490
original_storage_account_option=True,
491
encryption_details={"encryption_enabled": False}
492
)
493
)
494
495
client.restores.trigger(
496
resource_group_name="my-rg",
497
vault_name="my-vault",
498
fabric_name="Azure",
499
container_name="iaasvmcontainer;iaasvmcontainerv2;vm-rg;my-vm",
500
protected_item_name="vm;iaasvmcontainerv2;vm-rg;my-vm",
501
recovery_point_id="recovery-point-id-12345",
502
parameters=restore_request
503
)
504
```
505
506
### Restore VM to Alternate Location
507
508
```python
509
# Restore VM to different resource group/location
510
alternate_restore = RestoreRequestResource(
511
properties=IaasVMRestoreRequest(
512
recovery_point_id="recovery-point-id-12345",
513
recovery_type="AlternateLocation",
514
source_resource_id="/subscriptions/sub-id/resourceGroups/vm-rg/providers/Microsoft.Compute/virtualMachines/my-vm",
515
target_resource_group_id="/subscriptions/sub-id/resourceGroups/restored-vms",
516
storage_account_id="/subscriptions/sub-id/resourceGroups/storage-rg/providers/Microsoft.Storage/storageAccounts/restorestorage",
517
virtual_network_id="/subscriptions/sub-id/resourceGroups/network-rg/providers/Microsoft.Network/virtualNetworks/restore-vnet",
518
subnet_id="/subscriptions/sub-id/resourceGroups/network-rg/providers/Microsoft.Network/virtualNetworks/restore-vnet/subnets/default",
519
region="eastus2",
520
restore_with_managed_disks=True
521
)
522
)
523
524
client.restores.trigger(
525
resource_group_name="my-rg",
526
vault_name="my-vault",
527
fabric_name="Azure",
528
container_name="iaasvmcontainer;iaasvmcontainerv2;vm-rg;my-vm",
529
protected_item_name="vm;iaasvmcontainerv2;vm-rg;my-vm",
530
recovery_point_id="recovery-point-id-12345",
531
parameters=alternate_restore
532
)
533
```
534
535
### Restore Specific Files from File Share
536
537
```python
538
from azure.mgmt.recoveryservicesbackup.activestamp.models import (
539
RestoreRequestResource,
540
AzureFileShareRestoreRequest,
541
RestoreFileSpecs
542
)
543
544
# Restore specific files from Azure file share
545
file_restore = RestoreRequestResource(
546
properties=AzureFileShareRestoreRequest(
547
recovery_type="OriginalLocation",
548
source_resource_id="/subscriptions/sub-id/resourceGroups/storage-rg/providers/Microsoft.Storage/storageAccounts/mystorageaccount/fileServices/default/fileshares/myfileshare",
549
copy_options="Overwrite",
550
restore_request_type="ItemLevelRestore",
551
restore_file_specs=[
552
RestoreFileSpecs(
553
path="documents/important.docx",
554
file_spec_type="File",
555
target_folder_path="restored/"
556
),
557
RestoreFileSpecs(
558
path="data/",
559
file_spec_type="Folder",
560
target_folder_path="restored/"
561
)
562
]
563
)
564
)
565
566
client.restores.trigger(
567
resource_group_name="my-rg",
568
vault_name="my-vault",
569
fabric_name="Azure",
570
container_name="storagecontainer;storage;storage-rg;mystorageaccount",
571
protected_item_name="azurefileshare;myfileshare",
572
recovery_point_id="recovery-point-id-12345",
573
parameters=file_restore
574
)
575
```
576
577
### SQL Database Point-in-Time Restore
578
579
```python
580
from azure.mgmt.recoveryservicesbackup.activestamp.models import (
581
RestoreRequestResource,
582
AzureWorkloadSQLPointInTimeRestoreRequest
583
)
584
from datetime import datetime
585
586
# Restore SQL database to specific point in time
587
sql_restore = RestoreRequestResource(
588
properties=AzureWorkloadSQLPointInTimeRestoreRequest(
589
recovery_type="AlternateLocation",
590
source_resource_id="/subscriptions/sub-id/resourceGroups/vm-rg/providers/Microsoft.Compute/virtualMachines/sql-vm",
591
target_virtual_machine_id="/subscriptions/sub-id/resourceGroups/vm-rg/providers/Microsoft.Compute/virtualMachines/sql-vm",
592
point_in_time=datetime(2024, 1, 15, 14, 30, 0),
593
recovery_mode="WorkloadRecovery",
594
target_info={
595
"overwrite_option": "AlternateDatabase",
596
"database_name": "RestoredDatabase",
597
"container_id": "vmappcontainer;compute;vm-rg;sql-vm"
598
}
599
)
600
)
601
602
client.restores.trigger(
603
resource_group_name="my-rg",
604
vault_name="my-vault",
605
fabric_name="Azure",
606
container_name="vmappcontainer;compute;vm-rg;sql-vm",
607
protected_item_name="sqldatabase;mssqlserver;originaldb",
608
recovery_point_id="point-in-time-recovery",
609
parameters=sql_restore
610
)
611
```