public AzureVMBackupBlobSasUris GenerateBlobSasUris(List<string> blobUris, CloudPageBlobObjectFactory cloudPageBlobObjectFactory) { AzureVMBackupBlobSasUris blobSASUris = new AzureVMBackupBlobSasUris(); for (int i = 0; i < blobUris.Count; i++) { string blobUri = blobUris[i]; BlobUri osBlobUri = null; if (BlobUri.TryParseUri(new Uri(blobUri), out osBlobUri)) { CloudPageBlob pageBlob = cloudPageBlobObjectFactory.Create(osBlobUri); SharedAccessBlobPolicy sasConstraints = new SharedAccessBlobPolicy(); sasConstraints.SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes(5); sasConstraints.Permissions = SharedAccessBlobPermissions.Write | SharedAccessBlobPermissions.List; string sasUri = osBlobUri.Uri + pageBlob.GetSharedAccessSignature(sasConstraints); blobSASUris.blobSASUri.Add(sasUri); } else { throw new AzureVMBackupException(AzureVMBackupErrorCodes.WrongBlobUriFormat,"the blob uri is not in correct format."); } } return blobSASUris; }
public AzureVMBackupBlobSasUris GenerateBlobSasUris(List<string> blobUris, AzureContext azContext) { AzureVMBackupBlobSasUris blobSASUris = new AzureVMBackupBlobSasUris(); for (int i = 0; i < blobUris.Count; i++) { string blobUri = blobUris[i]; BlobUri osBlobUri = null; if (BlobUri.TryParseUri(new Uri(blobUri), out osBlobUri)) { StorageManagementClient storageClient = AzureSession.ClientFactory.CreateArmClient<StorageManagementClient>(azContext, AzureEnvironment.Endpoint.ResourceManager); // Need to convert osBlobUri.StorageAccountName into corresponding resource group name var listResponse = storageClient.StorageAccounts.List(); var account = listResponse.First(accTemp => accTemp.Name.Equals(osBlobUri.StorageAccountName, StringComparison.InvariantCultureIgnoreCase)); string resourceGroupName = GetResourceGroupFromId(account.Id); StorageCredentialsFactory storageCredentialsFactory = new StorageCredentialsFactory(resourceGroupName, storageClient, azContext.Subscription); CloudPageBlobObjectFactory cloudPageBlobObjectFactory = new CloudPageBlobObjectFactory(storageCredentialsFactory, TimeSpan.FromMinutes(1)); CloudPageBlob pageBlob = cloudPageBlobObjectFactory.Create(osBlobUri); SharedAccessBlobPolicy sasConstraints = new SharedAccessBlobPolicy(); sasConstraints.SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes(5); sasConstraints.Permissions = SharedAccessBlobPermissions.Write | SharedAccessBlobPermissions.List; string sasUri = osBlobUri.Uri + pageBlob.GetSharedAccessSignature(sasConstraints); blobSASUris.blobSASUri.Add(sasUri); blobSASUris.pageBlobUri.Add(blobUri); blobSASUris.storageCredentialsFactory.Add(storageCredentialsFactory); } else { throw new AzureVMBackupException(AzureVMBackupErrorCodes.WrongBlobUriFormat, "the blob uri is not in correct format."); } } return blobSASUris; }