Skip to content

Commit 39fa4ce

Browse files
authored
Adding identityBasedRestoreDetails optional property for the customers to be able to specify target storage account id when wanting to do restore using managed identities. (#15933)
1 parent 42185a2 commit 39fa4ce

File tree

6 files changed

+254
-0
lines changed

6 files changed

+254
-0
lines changed

specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/stable/2018-12-20/bms.json

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,9 @@
185185
"x-ms-examples": {
186186
"Trigger Cross Region Restore": {
187187
"$ref": "./examples/AzureIaasVm/TriggerCrossRegionRestore_Post.json"
188+
},
189+
"Trigger Cross Region Restore with identityBasedRestoreDetails": {
190+
"$ref": "./examples/AzureIaasVm/TriggerCrossRegionRestore_IdentityBasedRestoreDetails_Post.json"
188191
}
189192
}
190193
}
@@ -3161,10 +3164,28 @@
31613164
"identityInfo": {
31623165
"$ref": "#/definitions/IdentityInfo",
31633166
"description": "Managed Identity information required to access customer storage account."
3167+
},
3168+
"identityBasedRestoreDetails": {
3169+
"$ref": "#/definitions/IdentityBasedRestoreDetails",
3170+
"description": "IaaS VM workload specific restore details for restores using managed identity."
31643171
}
31653172
},
31663173
"x-ms-discriminator-value": "IaasVMRestoreRequest"
31673174
},
3175+
"IdentityBasedRestoreDetails": {
3176+
"description": "IaaS VM workload specific restore details for restores using managed identity",
3177+
"type": "object",
3178+
"properties": {
3179+
"objectType": {
3180+
"description": "Gets the class type.",
3181+
"type": "string"
3182+
},
3183+
"targetStorageAccountId": {
3184+
"description": "Fully qualified ARM ID of the target storage account.",
3185+
"type": "string"
3186+
}
3187+
}
3188+
},
31683189
"IdentityInfo": {
31693190
"description": "Encapsulates Managed Identity related information",
31703191
"type": "object",
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
{
2+
"parameters": {
3+
"subscriptionId": "00000000-0000-0000-0000-000000000000",
4+
"azureRegion": "southeastasia",
5+
"api-version": "2018-12-20",
6+
"parameters": {
7+
"crossRegionRestoreAccessDetails": {
8+
"accessTokenString": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IkhqaUJHdVExa2lWV2hyc2lzLUhEckhyWVZNbyJ9.eyJVc2VySWRlbnRpdHlUeXBlIjoiQUFEIiwiQWFkVGVuYW50SWQiOiIzM2UwMTkyMS00ZDY0LTRmOGMtYTA1NS01YmRhZmZkNWUzM2QiLCJBYWRTUE9iamVjdElkIjoiOTMzMjc2ZmMtMWJiNy00ZWNiLTk0ZTYtYWY3ODMyNWY3MjZhIiwiUmVzdG9yZVBvaW50UGVybWlzc2lvbnMiOiJSZWFkIiwiUmVzdG9yZVBvaW50SUQiOiJyZXNvdXJjZXMvMTMzMDgzNzkwNjQxODEzODE2MC9wcm90ZWN0aW9uQ29udGFpbmVycy8xMTE0Ni9wcm90ZWN0ZWRJdGVtcy8xMTQyOTM3MDMxL3JlY292ZXJ5UG9pbnRzLzg3MTc4MzU1MzkyNzE2IiwiaXNzIjoiaHR0cHM6Ly9SZWNvdmVyeVNlcnZpY2UiLCJhdWQiOiJodHRwczovL1JlY292ZXJ5U2VydmljZXMvUHJvdGVjdGlvblNlcnZpY2UiLCJleHAiOjE1NzExMjE5ODYsIm5iZiI6MTU3MTAzNTI4Nn0.oNbeX8ueE6JRGU0IagFjkOlU-o48ez9gCeCrn1-8XEsaVtYJIFKq9FeHfPAoCMxiLQvwL7S0JTjDTjiEsZEvr_VM7tDVwW3sESo2oW-SZlxT_1dJiUBn0jVlQyfDcHEMzbkaTuZswgNWfowgOrnJ67y-ztSUcegf3eVKPEhN1enBBS7pIuL9bZ3SVwMuqznUen6dH54y9lN2w6H14X0UK2CwSN94Uh-spB27j9SbksxLY_tyZm6xsamZFTHpwbgZwR24-GDtElPSxpFL6n_tWLSCHQtN9s84o0X7PfFaMkVmGWbOf4AZmP9M6agagG0JLnlOwObr07YrzZRkg3s2eQ",
9+
"backupManagementType": "AzureIaasVM",
10+
"containerName": "iaasvmcontainerv2;srinivasccyrg;sriniccylinux",
11+
"containerType": "IaasVMContainer",
12+
"coordinatorServiceStampUri": "https://pod01-coord1.ccy.backup.windowsazure.com",
13+
"datasourceContainerName": "iaasvmcontainerv2;srinivasccyrg;sriniccylinux",
14+
"datasourceId": "1142937031",
15+
"datasourceName": "sriniccylinux",
16+
"datasourceType": "VM",
17+
"protectionServiceStampId": "90d98224-2ac6-4bda-9f35-33fb22841f2a",
18+
"protectionServiceStampUri": "https://pod01-prot1-int.ccy.backup.windowsazure.com",
19+
"recoveryPointId": "87178355392716",
20+
"recoveryPointTime": "10/9/2019 6:05:54 PM",
21+
"resourceGroupName": "srinivasccyrg",
22+
"resourceId": "1330837906418138160",
23+
"resourceName": "sriniccyvault",
24+
"subscriptionId": "f2edfd5d-5496-4683-b94f-b3588c579009",
25+
"tokenExtendedInformation": "<IaaSVMRecoveryPointMetadataBase xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\" i:type=\"IaaSVMRecoveryPointMetadata_V2015_09\" xmlns=\"http://windowscloudbackup.com/CloudCommon/V2011_09\"><MetadataVersion>V2015_09</MetadataVersion><ContainerType i:nil=\"true\" /><InstantRpGCId>f2edfd5d-5496-4683-b94f-b3588c579009;AzureBackup_sriniccylinux_1142937031;AzureBackup_20191009_060554;AzureBackupRG_centraluseuap_1</InstantRpGCId><IsBlockBlobEnabled>true</IsBlockBlobEnabled><IsManagedVirtualMachine>true</IsManagedVirtualMachine><OriginalSAOption>false</OriginalSAOption><OsType>Linux</OsType><ReadMetadaFromConfigBlob i:nil=\"true\" /><RecoveryPointConsistencyType>FileSystemConsistent</RecoveryPointConsistencyType><RpDiskDetails i:nil=\"true\" /><SourceIaaSVMRPKeyAndSecret i:nil=\"true\" /><SourceIaaSVMStorageType>PremiumVMOnPremiumStorage</SourceIaaSVMStorageType><VMSizeDescription>Standard_D2s_v3</VMSizeDescription></IaaSVMRecoveryPointMetadataBase>"
26+
},
27+
"restoreRequest": {
28+
"affinityGroup": "",
29+
"createNewCloudService": false,
30+
"encryptionDetails": {
31+
"encryptionEnabled": false
32+
},
33+
"identityInfo": {
34+
"isSystemAssignedIdentity": false,
35+
"managedIdentityResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/asmaskarRG1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/asmaskartestmsi"
36+
},
37+
"identityBasedRestoreDetails": {
38+
"targetStorageAccountId": "/subscriptions/f2edfd5d-5496-4683-b94f-b3588c579009/resourceGroups/00prjaiTestRg1/providers/Microsoft.Storage/storageAccounts/00prjaitestrg1disks993"
39+
},
40+
"objectType": "IaasVMRestoreRequest",
41+
"originalStorageAccountOption": false,
42+
"recoveryPointId": "87178355392716",
43+
"recoveryType": "AlternateLocation",
44+
"region": "eastus2euap",
45+
"sourceResourceId": "/subscriptions/f2edfd5d-5496-4683-b94f-b3588c579009/resourceGroups/srinivasccyrg/providers/Microsoft.Compute/virtualMachines/sriniccylinux",
46+
"subnetId": "/subscriptions/f2edfd5d-5496-4683-b94f-b3588c579009/resourceGroups/00networkAcklVaultCCY/providers/Microsoft.Network/virtualNetworks/00networkAcklVaultCCY-vnet/subnets/default",
47+
"targetDomainNameId": null,
48+
"targetResourceGroupId": "/subscriptions/f2edfd5d-5496-4683-b94f-b3588c579009/resourceGroups/00networkAckl",
49+
"targetVirtualMachineId": "/subscriptions/f2edfd5d-5496-4683-b94f-b3588c579009/resourceGroups/00networkAckl/providers/Microsoft.Compute/virtualMachines/gaallaVM",
50+
"virtualNetworkId": "/subscriptions/f2edfd5d-5496-4683-b94f-b3588c579009/resourceGroups/00networkAcklVaultCCY/providers/Microsoft.Network/virtualNetworks/00networkAcklVaultCCY-vnet",
51+
"zones": [
52+
"2"
53+
]
54+
}
55+
}
56+
},
57+
"responses": {
58+
"200": {},
59+
"202": {
60+
"headers": {
61+
"Location": "location: https://centraluseuap.management.azure.com/subscriptions/f2edfd5d-5496-4683-b94f-b3588c579009/providers/microsoft.recoveryservices/locations/eastus2euap/backupCrrOperationResults/MTMzMDgzNzkwNjQxODEzODE2MDtkMTY3MzM3Yy0yM2I1LTQ5ODgtODkwZC0xY2MyMmQ5MTYyZjA=?api-version=2018-12-20-preview",
62+
"Azure-AsyncOperation": "azure-asyncoperation: https://centraluseuap.management.azure.com/subscriptions/f2edfd5d-5496-4683-b94f-b3588c579009/providers/microsoft.recoveryservices/locations/eastus2euap/backupCrrOperationsStatus/MTMzMDgzNzkwNjQxODEzODE2MDtkMTY3MzM3Yy0yM2I1LTQ5ODgtODkwZC0xY2MyMmQ5MTYyZjA=?api-version=2018-12-20-preview",
63+
"Retry-After": 60
64+
}
65+
}
66+
}
67+
}

specification/recoveryservicesbackup/resource-manager/Microsoft.RecoveryServices/stable/2021-07-01/bms.json

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1823,12 +1823,18 @@
18231823
"Restore to New Azure IaasVm with IaasVMRestoreRequest": {
18241824
"$ref": "./examples/AzureIaasVm/TriggerRestore_ALR_IaasVMRestoreRequest.json"
18251825
},
1826+
"Restore to New Azure IaasVm with IaasVMRestoreRequest with identityBasedRestoreDetails": {
1827+
"$ref": "./examples/AzureIaasVm/TriggerRestore_ALR_IaasVMRestoreRequest_IdentityBasedRestoreDetails.json"
1828+
},
18261829
"Restore to New Azure IaasVm with IaasVMRestoreWithRehydrationRequest": {
18271830
"$ref": "./examples/AzureIaasVm/TriggerRestore_ALR_IaasVMRestoreWithRehydrationRequest.json"
18281831
},
18291832
"Restore Disks with IaasVMRestoreRequest": {
18301833
"$ref": "./examples/AzureIaasVm/TriggerRestore_RestoreDisks_IaasVMRestoreRequest.json"
18311834
},
1835+
"Restore Disks with IaasVMRestoreRequest with IdentityBasedRestoreDetails": {
1836+
"$ref": "./examples/AzureIaasVm/TriggerRestore_RestoreDisks_IaasVMRestoreRequest_IdentityBasedRestoreDetails.json"
1837+
},
18321838
"Restore Disks with IaasVMRestoreWithRehydrationRequest": {
18331839
"$ref": "./examples/AzureIaasVm/TriggerRestore_RestoreDisks_IaasVMRestoreWithRehydrationRequest.json"
18341840
}
@@ -2577,6 +2583,9 @@
25772583
"x-ms-examples": {
25782584
"Validate Operation": {
25792585
"$ref": "./examples/AzureIaasVm/ValidateOperation_RestoreDisk.json"
2586+
},
2587+
"Validate Operation with identityBasedRestoreDetails": {
2588+
"$ref": "./examples/AzureIaasVm/ValidateOperation_RestoreDisk_IdentityBasedRestoreDetails.json"
25802589
}
25812590
}
25822591
}
@@ -6647,6 +6656,20 @@
66476656
},
66486657
"x-ms-discriminator-value": "GenericProtectionPolicy"
66496658
},
6659+
"IdentityBasedRestoreDetails": {
6660+
"description": "IaaS VM workload specific restore details for restores using managed identity",
6661+
"type": "object",
6662+
"properties": {
6663+
"objectType": {
6664+
"description": "Gets the class type.",
6665+
"type": "string"
6666+
},
6667+
"targetStorageAccountId": {
6668+
"description": "Fully qualified ARM ID of the target storage account.",
6669+
"type": "string"
6670+
}
6671+
}
6672+
},
66506673
"IdentityInfo": {
66516674
"description": "Encapsulates Managed Identity related information",
66526675
"type": "object",
@@ -6947,6 +6970,10 @@
69476970
"identityInfo": {
69486971
"$ref": "#/definitions/IdentityInfo",
69496972
"description": "Managed Identity information required to access customer storage account."
6973+
},
6974+
"identityBasedRestoreDetails": {
6975+
"$ref": "#/definitions/IdentityBasedRestoreDetails",
6976+
"description": "IaaS VM workload specific restore details for restores using managed identity."
69506977
}
69516978
},
69526979
"x-ms-discriminator-value": "IaasVMRestoreRequest"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
{
2+
"parameters": {
3+
"subscriptionId": "00000000-0000-0000-0000-000000000000",
4+
"resourceGroupName": "netsdktestrg",
5+
"vaultName": "testVault",
6+
"fabricName": "Azure",
7+
"containerName": "IaasVMContainer;iaasvmcontainerv2;netsdktestrg;netvmtestv2vm1",
8+
"protectedItemName": "VM;iaasvmcontainerv2;netsdktestrg;netvmtestv2vm1",
9+
"recoveryPointId": "348916168024334",
10+
"api-version": "2021-07-01",
11+
"parameters": {
12+
"properties": {
13+
"objectType": "IaasVMRestoreRequest",
14+
"recoveryPointId": "348916168024334",
15+
"recoveryType": "AlternateLocation",
16+
"sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/netsdktestrg/providers/Microsoft.Compute/virtualMachines/netvmtestv2vm1",
17+
"targetVirtualMachineId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/netsdktestrg2/providers/Microsoft.Compute/virtualmachines/RSMDALRVM981435",
18+
"targetResourceGroupId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/netsdktestrg2",
19+
"virtualNetworkId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testRg/providers/Microsoft.Network/virtualNetworks/testNet",
20+
"subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testRg/providers/Microsoft.Network/virtualNetworks/testNet/subnets/default",
21+
"region": "southeastasia",
22+
"createNewCloudService": false,
23+
"originalStorageAccountOption": false,
24+
"encryptionDetails": {
25+
"encryptionEnabled": false
26+
},
27+
"identityInfo": {
28+
"isSystemAssignedIdentity": true
29+
},
30+
"identityBasedRestoreDetails": {
31+
"targetStorageAccountId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testRg/providers/Microsoft.Storage/storageAccounts/testingAccount"
32+
}
33+
}
34+
}
35+
},
36+
"responses": {
37+
"202": {
38+
"headers": {
39+
"Location": "https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/netsdktestrg/providers/Microsoft.RecoveryServices/vaults/testVault/backupFabrics/Azure/protectionContainers/iaasvmcontainer;iaasvmcontainerv2;netsdktestrg;netvmtestv2vm1/protectedItems/vm;iaasvmcontainerv2;netsdktestrg;netvmtestv2vm1/operationResults/00000000-0000-0000-0000-000000000000?api-version=2017-07-01",
40+
"Azure-AsyncOperation": "https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/netsdktestrg/providers/Microsoft.RecoveryServices/vaults/testVault/backupFabrics/Azure/protectionContainers/iaasvmcontainer;iaasvmcontainerv2;netsdktestrg;netvmtestv2vm1/protectedItems/vm;iaasvmcontainerv2;netsdktestrg;netvmtestv2vm1/operationsStatus/00000000-0000-0000-0000-000000000000?api-version=2017-07-01",
41+
"Retry-After": 60
42+
}
43+
}
44+
}
45+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
{
2+
"parameters": {
3+
"subscriptionId": "00000000-0000-0000-0000-000000000000",
4+
"resourceGroupName": "netsdktestrg",
5+
"vaultName": "testVault",
6+
"fabricName": "Azure",
7+
"containerName": "IaasVMContainer;iaasvmcontainerv2;netsdktestrg;netvmtestv2vm1",
8+
"protectedItemName": "VM;iaasvmcontainerv2;netsdktestrg;netvmtestv2vm1",
9+
"recoveryPointId": "348916168024334",
10+
"api-version": "2021-07-01",
11+
"parameters": {
12+
"properties": {
13+
"objectType": "IaasVMRestoreRequest",
14+
"recoveryPointId": "348916168024334",
15+
"recoveryType": "RestoreDisks",
16+
"sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/netsdktestrg/providers/Microsoft.Compute/virtualMachines/netvmtestv2vm1",
17+
"region": "southeastasia",
18+
"createNewCloudService": true,
19+
"originalStorageAccountOption": false,
20+
"encryptionDetails": {
21+
"encryptionEnabled": false
22+
},
23+
"identityInfo": {
24+
"isSystemAssignedIdentity": false,
25+
"managedIdentityResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/asmaskarRG1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/asmaskartestmsi"
26+
},
27+
"identityBasedRestoreDetails": {
28+
"targetStorageAccountId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testingRg/providers/Microsoft.Storage/storageAccounts/testAccount"
29+
}
30+
}
31+
}
32+
},
33+
"responses": {
34+
"202": {
35+
"headers": {
36+
"Location": "https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/netsdktestrg/providers/Microsoft.RecoveryServices/vaults/testVault/backupFabrics/Azure/protectionContainers/iaasvmcontainer;iaasVMContainerV2;netsdktestrg;netvmtestv2vm1/protectedItems/vm;iaasVMContainerV2;netsdktestrg;netvmtestv2vm1/operationResults/00000000-0000-0000-0000-000000000000?api-version=2020-09-01",
37+
"Azure-AsyncOperation": "https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/netsdktestrg/providers/Microsoft.RecoveryServices/vaults/testVault/backupFabrics/Azure/protectionContainers/iaasvmcontainer;iaasVMContainerV2;netsdktestrg;netvmtestv2vm1/protectedItems/vm;iaasVMContainerV2;netsdktestrg;netvmtestv2vm1/operationsStatus/00000000-0000-0000-0000-000000000000?api-version=2020-09-01",
38+
"Retry-After": 60
39+
}
40+
}
41+
}
42+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
{
2+
"parameters": {
3+
"subscriptionId": "00000000-0000-0000-0000-000000000000",
4+
"resourceGroupName": "testRG",
5+
"vaultName": "testVault",
6+
"fabricName": "Azure",
7+
"containerName": "IaasVMContainer;iaasvmcontainerv2;testRG;testvmName",
8+
"protectedItemName": "VM;iaasvmcontainerv2;testRG;testvmName",
9+
"recoveryPointId": "348916168024334",
10+
"api-version": "2021-07-01",
11+
"parameters": {
12+
"objectType": "ValidateIaasVMRestoreOperationRequest",
13+
"restoreRequest": {
14+
"recoveryPointId": "348916168024334",
15+
"objectType": "IaasVMRestoreRequest",
16+
"recoveryType": "RestoreDisks",
17+
"sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/netsdktestrg/providers/Microsoft.Compute/virtualMachines/netvmtestv2vm1",
18+
"region": "southeastasia",
19+
"createNewCloudService": true,
20+
"originalStorageAccountOption": false,
21+
"encryptionDetails": {
22+
"encryptionEnabled": false
23+
},
24+
"identityInfo": {
25+
"isSystemAssignedIdentity": false,
26+
"managedIdentityResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/asmaskarRG1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/asmaskartestmsi"
27+
},
28+
"identityBasedRestoreDetails": {
29+
"targetStorageAccountId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testingRg/providers/Microsoft.Storage/storageAccounts/testAccount"
30+
}
31+
}
32+
}
33+
},
34+
"responses": {
35+
"200": {
36+
"headers": {},
37+
"body": {
38+
"validateOperationResponse": {
39+
"validationResults": [
40+
{
41+
"code": "UserErrorCoreCountSubscriptionQuotaReached",
42+
"message": "Core Count subscription quota has been reached.",
43+
"recommendations": [
44+
"Contact Azure support to increase the limits."
45+
]
46+
}
47+
]
48+
}
49+
}
50+
}
51+
}
52+
}

0 commit comments

Comments
 (0)