Skip to content

Commit ce1ff8f

Browse files
monikajainmsLeiWang3
authored andcommitted
Adding identityBasedRestoreDetails optional property for the customers to be able to specify target storage account id when wanting to do restore using managed identities. (Azure#15933)
1 parent 89514ca commit ce1ff8f

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)