< Summary

Class:Azure.Security.KeyVault.Administration.KeyVaultBackupClient
Assembly:Azure.Security.KeyVault.Administration
File(s):C:\Git\azure-sdk-for-net\sdk\keyvault\Azure.Security.KeyVault.Administration\src\KeyVaultBackupClient.cs
Covered lines:57
Uncovered lines:58
Coverable lines:115
Total lines:340
Line coverage:49.5% (57 of 115)
Covered branches:1
Total branches:2
Branch coverage:50% (1 of 2)

Metrics

MethodCyclomatic complexity Line coverage Branch coverage
get_VaultUri()-100%100%
.ctor()-100%100%
.ctor(...)-0%100%
.ctor(...)-100%50%
StartBackupAsync()-75%100%
StartBackup(...)-72.73%100%
StartRestoreAsync()-76.92%100%
StartRestore(...)-72.73%100%
StartSelectiveRestoreAsync()-0%100%
StartSelectiveRestore(...)-0%100%
GetRestoreDetailsAsync()-57.14%100%
GetRestoreDetails(...)-0%100%
GetBackupDetailsAsync()-57.14%100%
GetBackupDetails(...)-0%100%

File(s)

C:\Git\azure-sdk-for-net\sdk\keyvault\Azure.Security.KeyVault.Administration\src\KeyVaultBackupClient.cs

#LineLine coverage
 1// Copyright (c) Microsoft Corporation. All rights reserved.
 2// Licensed under the MIT License.
 3
 4using System;
 5using System.Threading;
 6using System.Threading.Tasks;
 7using Azure.Core;
 8using Azure.Core.Pipeline;
 9using Azure.Security.KeyVault.Administration.Models;
 10
 11namespace Azure.Security.KeyVault.Administration
 12{
 13    /// <summary>
 14    /// The KeyVaultBackupClient provides synchronous and asynchronous methods to perform full backup and restore of the
 15    /// </summary>
 16    public class KeyVaultBackupClient
 17    {
 18        private readonly ClientDiagnostics _diagnostics;
 19        private readonly BackupRestoreRestClient _restClient;
 20
 21        /// <summary>
 22        /// The vault Uri.
 23        /// </summary>
 24        /// <value></value>
 3025        public virtual Uri VaultUri { get; }
 26
 27        /// <summary>
 28        /// Initializes a new instance of the <see cref="KeyVaultBackupClient"/> class for mocking.
 29        /// </summary>
 830        protected KeyVaultBackupClient()
 831        { }
 32
 33        /// <summary>
 34        /// Initializes a new instance of the <see cref="KeyVaultBackupClient"/> class for the specified vault.
 35        /// </summary>
 36        /// <param name="vaultUri">A <see cref="Uri"/> to the vault on which the client operates. Appears as "DNS Name" 
 37        /// <param name="credential">A <see cref="TokenCredential"/> used to authenticate requests to the vault, such as
 38        /// <exception cref="ArgumentNullException"><paramref name="vaultUri"/> or <paramref name="credential"/> is null
 39        public KeyVaultBackupClient(Uri vaultUri, TokenCredential credential)
 040            : this(vaultUri, credential, null)
 041        { }
 42
 43        /// <summary>
 44        /// Initializes a new instance of the <see cref="KeyVaultBackupClient"/> class for the specified vault.
 45        /// </summary>
 46        /// <param name="vaultUri">A <see cref="Uri"/> to the vault on which the client operates. Appears as "DNS Name" 
 47        /// <param name="credential">A <see cref="TokenCredential"/> used to authenticate requests to the vault, such as
 48        /// <param name="options"><see cref="KeyVaultBackupClientOptions"/> that allow to configure the management of th
 49        /// <exception cref="ArgumentNullException"><paramref name="vaultUri"/> or <paramref name="credential"/> is null
 850        public KeyVaultBackupClient(Uri vaultUri, TokenCredential credential, KeyVaultBackupClientOptions options)
 51        {
 852            Argument.AssertNotNull(vaultUri, nameof(vaultUri));
 853            Argument.AssertNotNull(credential, nameof(credential));
 54
 855            VaultUri = vaultUri;
 56
 857            options ??= new KeyVaultBackupClientOptions();
 858            string apiVersion = options.GetVersionString();
 59
 860            HttpPipeline pipeline = HttpPipelineBuilder.Build(options,
 861                    new ChallengeBasedAuthenticationPolicy(credential));
 62
 863            _diagnostics = new ClientDiagnostics(options);
 864            _restClient = new BackupRestoreRestClient(_diagnostics, pipeline, apiVersion);
 865        }
 66
 67        /// <summary>
 68        /// Initiates a full backup of the Key Vault.
 69        /// </summary>
 70        /// <param name="blobStorageUri">The <see cref="Uri"/> for the blob storage resource.</param>
 71        /// <param name="sasToken">A Shared Access Signature (SAS) token to authorize access to the blob.</param>
 72        /// <param name="cancellationToken">A <see cref="CancellationToken"/> controlling the request lifetime.</param>
 73        /// <exception cref="ArgumentNullException"><paramref name="blobStorageUri"/> or <paramref name="sasToken"/> is 
 74        /// <exception cref="RequestFailedException">The server returned an error. See <see cref="Exception.Message"/> f
 75        /// <returns>A <see cref="BackupOperation"/> to wait on this long-running operation.</returns>
 76        public virtual async Task<BackupOperation> StartBackupAsync(Uri blobStorageUri, string sasToken, CancellationTok
 77        {
 278            using DiagnosticScope scope = _diagnostics.CreateScope($"{nameof(KeyVaultBackupClient)}.{nameof(StartBackup)
 279            scope.Start();
 80            try
 81            {
 282                var response = await _restClient.FullBackupAsync(
 283                    VaultUri.AbsoluteUri,
 284                    new SASTokenParameter(blobStorageUri.AbsoluteUri, sasToken),
 285                    cancellationToken)
 286                    .ConfigureAwait(false);
 87
 288                return new BackupOperation(this, response);
 89            }
 090            catch (Exception ex)
 91            {
 092                scope.Failed(ex);
 093                throw;
 94            }
 295        }
 96
 97        /// <summary>
 98        /// Initiates a full backup of the Key Vault.
 99        /// </summary>
 100        /// <param name="blobStorageUri">The <see cref="Uri"/> for the blob storage resource.</param>
 101        /// <param name="sasToken">A Shared Access Signature (SAS) token to authorize access to the blob.</param>
 102        /// <param name="cancellationToken">A <see cref="CancellationToken"/> controlling the request lifetime.</param>
 103        /// <exception cref="ArgumentNullException"><paramref name="blobStorageUri"/> or <paramref name="sasToken"/> is 
 104        /// <exception cref="RequestFailedException">The server returned an error. See <see cref="Exception.Message"/> f
 105        /// <returns>A <see cref="BackupOperation"/> to wait on this long-running operation.</returns>
 106        public virtual BackupOperation StartBackup(Uri blobStorageUri, string sasToken, CancellationToken cancellationTo
 107        {
 2108            using DiagnosticScope scope = _diagnostics.CreateScope($"{nameof(KeyVaultBackupClient)}.{nameof(StartBackup)
 2109            scope.Start();
 110            try
 111            {
 2112                var response = _restClient.FullBackup(
 2113                    VaultUri.AbsoluteUri,
 2114                    new SASTokenParameter(blobStorageUri.AbsoluteUri, sasToken),
 2115                    cancellationToken);
 116
 2117                return new BackupOperation(this, response);
 118            }
 0119            catch (Exception ex)
 120            {
 0121                scope.Failed(ex);
 0122                throw;
 123            }
 2124        }
 125
 126        /// <summary>
 127        /// Initiates a full restore of the Key Vault.
 128        /// </summary>
 129        /// <param name="blobStorageUri">The <see cref="Uri"/> for the blob storage resource.</param>
 130        /// <param name="sasToken">A Shared Access Signature (SAS) token to authorize access to the blob.</param>
 131        /// <param name="folderName">The name of the container containing the backup data to restore.</param>
 132        /// <param name="cancellationToken">A <see cref="CancellationToken"/> controlling the request lifetime.</param>
 133        /// <exception cref="ArgumentNullException"><paramref name="blobStorageUri"/> or <paramref name="sasToken"/> is 
 134        /// <exception cref="RequestFailedException">The server returned an error. See <see cref="Exception.Message"/> f
 135        /// <returns>A <see cref="RestoreOperation"/> to wait on this long-running operation.</returns>
 136        public virtual async Task<RestoreOperation> StartRestoreAsync(Uri blobStorageUri, string sasToken, string folder
 137        {
 2138            using DiagnosticScope scope = _diagnostics.CreateScope($"{nameof(KeyVaultBackupClient)}.{nameof(StartRestore
 2139            scope.Start();
 140            try
 141            {
 2142                var response = await _restClient.FullRestoreOperationAsync(
 2143                    VaultUri.AbsoluteUri,
 2144                    new RestoreOperationParameters(
 2145                    new SASTokenParameter(blobStorageUri.AbsoluteUri, sasToken),
 2146                    folderName),
 2147                    cancellationToken).ConfigureAwait(false);
 148
 2149                return new RestoreOperation(this, response);
 150            }
 0151            catch (Exception ex)
 152            {
 0153                scope.Failed(ex);
 0154                throw;
 155            }
 2156        }
 157
 158        /// <summary>
 159        /// Initiates a full Restore of the Key Vault.
 160        /// </summary>
 161        /// <param name="blobStorageUri">The <see cref="Uri"/> for the blob storage resource.</param>
 162        /// <param name="sasToken">A Shared Access Signature (SAS) token to authorize access to the blob.</param>
 163        /// <param name="folderName">The name of the container containing the backup data to restore.</param>
 164        /// <param name="cancellationToken">A <see cref="CancellationToken"/> controlling the request lifetime.</param>
 165        /// <exception cref="ArgumentNullException"><paramref name="blobStorageUri"/> or <paramref name="sasToken"/> is 
 166        /// <exception cref="RequestFailedException">The server returned an error. See <see cref="Exception.Message"/> f
 167        /// <returns>A <see cref="RestoreOperation"/> to wait on this long-running operation.</returns>
 168        public virtual RestoreOperation StartRestore(Uri blobStorageUri, string sasToken, string folderName = default, C
 169        {
 2170            using DiagnosticScope scope = _diagnostics.CreateScope($"{nameof(KeyVaultBackupClient)}.{nameof(StartRestore
 2171            scope.Start();
 172            try
 173            {
 2174                var response = _restClient.FullRestoreOperation(
 2175                    VaultUri.AbsoluteUri,
 2176                    new RestoreOperationParameters(new SASTokenParameter(blobStorageUri.AbsoluteUri, sasToken), folderNa
 2177                    cancellationToken);
 178
 2179                return new RestoreOperation(this, response);
 180            }
 0181            catch (Exception ex)
 182            {
 0183                scope.Failed(ex);
 0184                throw;
 185            }
 2186        }
 187
 188        /// <summary>
 189        /// Initiates a selective restore of the Key Vault.
 190        /// </summary>
 191        /// <param name="keyName">The name of the key to be restored from the supplied backup.</param>
 192        /// <param name="blobStorageUri">The <see cref="Uri"/> for the blob storage resource.</param>
 193        /// <param name="sasToken">A Shared Access Signature (SAS) token to authorize access to the blob.</param>
 194        /// <param name="folderName">The name of the container containing the backup data to restore.</param>
 195        /// <param name="cancellationToken">A <see cref="CancellationToken"/> controlling the request lifetime.</param>
 196        /// <exception cref="ArgumentNullException"><paramref name="blobStorageUri"/> or <paramref name="sasToken"/> is 
 197        /// <exception cref="RequestFailedException">The server returned an error. See <see cref="Exception.Message"/> f
 198        /// <returns>A <see cref="RestoreOperation"/> to wait on this long-running operation.</returns>
 199        public virtual async Task<RestoreOperation> StartSelectiveRestoreAsync(string keyName, Uri blobStorageUri, strin
 200        {
 0201            using DiagnosticScope scope = _diagnostics.CreateScope($"{nameof(KeyVaultBackupClient)}.{nameof(StartSelecti
 0202            scope.Start();
 203            try
 204            {
 0205                var response = await _restClient.SelectiveKeyRestoreOperationAsync(
 0206                    VaultUri.AbsoluteUri,
 0207                    keyName,
 0208                    new SelectiveKeyRestoreOperationParameters(new SASTokenParameter(blobStorageUri.AbsoluteUri, sasToke
 0209                    cancellationToken).ConfigureAwait(false);
 210
 0211                return new RestoreOperation(this, response);
 212            }
 0213            catch (Exception ex)
 214            {
 0215                scope.Failed(ex);
 0216                throw;
 217            }
 0218        }
 219
 220        /// <summary>
 221        /// Initiates a selective Restore of the Key Vault.
 222        /// </summary>
 223        /// <param name="keyName">The name of the key to be restored from the supplied backup.</param>
 224        /// <param name="blobStorageUri">The <see cref="Uri"/> for the blob storage resource.</param>
 225        /// <param name="sasToken">A Shared Access Signature (SAS) token to authorize access to the blob.</param>
 226        /// <param name="folderName">The name of the container containing the backup data to restore.</param>
 227        /// <param name="cancellationToken">A <see cref="CancellationToken"/> controlling the request lifetime.</param>
 228        /// <exception cref="ArgumentNullException"><paramref name="blobStorageUri"/> or <paramref name="sasToken"/> is 
 229        /// <exception cref="RequestFailedException">The server returned an error. See <see cref="Exception.Message"/> f
 230        /// <returns>A <see cref="RestoreOperation"/> to wait on this long-running operation.</returns>
 231        public virtual RestoreOperation StartSelectiveRestore(string keyName, Uri blobStorageUri, string sasToken, strin
 232        {
 0233            using DiagnosticScope scope = _diagnostics.CreateScope($"{nameof(KeyVaultBackupClient)}.{nameof(StartSelecti
 0234            scope.Start();
 235            try
 236            {
 0237                var response = _restClient.SelectiveKeyRestoreOperation(
 0238                    VaultUri.AbsoluteUri,
 0239                    keyName,
 0240                    new SelectiveKeyRestoreOperationParameters(new SASTokenParameter(blobStorageUri.AbsoluteUri, sasToke
 0241                    cancellationToken);
 242
 0243                return new RestoreOperation(this, response);
 244            }
 0245            catch (Exception ex)
 246            {
 0247                scope.Failed(ex);
 0248                throw;
 249            }
 0250        }
 251
 252        /// <summary>
 253        /// Returns the details of full restore operation.
 254        /// </summary>
 255        /// <param name="jobId"> The Job Id returned part of the full restore operation. </param>
 256        /// <param name="cancellationToken"> The cancellation token to use. </param>
 257        /// <exception cref="ArgumentNullException"><paramref name="jobId"/> is null.</exception>
 258        /// <exception cref="RequestFailedException">The server returned an error. See <see cref="Exception.Message"/> f
 259        internal virtual async Task<Response<RestoreDetailsInternal>> GetRestoreDetailsAsync(string jobId, CancellationT
 260        {
 12261            using DiagnosticScope scope = _diagnostics.CreateScope($"{nameof(KeyVaultBackupClient)}.{nameof(GetRestoreDe
 12262            scope.Start();
 263            try
 264            {
 12265                return await _restClient.RestoreStatusAsync(VaultUri.AbsoluteUri, jobId, cancellationToken).ConfigureAwa
 266            }
 0267            catch (Exception ex)
 268            {
 0269                scope.Failed(ex);
 0270                throw;
 271            }
 12272        }
 273
 274        /// <summary>
 275        /// Returns the details of full restore operation.
 276        /// </summary>
 277        /// <param name="jobId"> The Job Id returned part of the full restore operation. </param>
 278        /// <param name="cancellationToken"> The cancellation token to use. </param>
 279        /// <exception cref="ArgumentNullException"><paramref name="jobId"/> is null.</exception>
 280        /// <exception cref="RequestFailedException">The server returned an error. See <see cref="Exception.Message"/> f
 281        internal virtual Response<RestoreDetailsInternal> GetRestoreDetails(string jobId, CancellationToken cancellation
 282        {
 0283            using DiagnosticScope scope = _diagnostics.CreateScope($"{nameof(KeyVaultBackupClient)}.{nameof(GetRestoreDe
 0284            scope.Start();
 285            try
 286            {
 0287                return _restClient.RestoreStatus(VaultUri.AbsoluteUri, jobId, cancellationToken);
 288            }
 0289            catch (Exception ex)
 290            {
 0291                scope.Failed(ex);
 0292                throw;
 293            }
 0294        }
 295
 296        /// <summary>
 297        /// Returns the details of full backup operation.
 298        /// </summary>
 299        /// <param name="jobId"> The Job Id returned part of the full backup operation. </param>
 300        /// <param name="cancellationToken"> The cancellation token to use. </param>
 301        /// <exception cref="ArgumentNullException"><paramref name="jobId"/> is null.</exception>
 302        /// <exception cref="RequestFailedException">The server returned an error. See <see cref="Exception.Message"/> f
 303        internal virtual async Task<Response<FullBackupDetailsInternal>> GetBackupDetailsAsync(string jobId, Cancellatio
 304        {
 10305            using DiagnosticScope scope = _diagnostics.CreateScope($"{nameof(KeyVaultBackupClient)}.{nameof(GetBackupDet
 10306            scope.Start();
 307            try
 308            {
 10309                return await _restClient.FullBackupStatusAsync(VaultUri.AbsoluteUri, jobId, cancellationToken).Configure
 310            }
 0311            catch (Exception ex)
 312            {
 0313                scope.Failed(ex);
 0314                throw;
 315            }
 10316        }
 317
 318        /// <summary>
 319        /// Returns the details of full backup operation.
 320        /// </summary>
 321        /// <param name="jobId"> The Job Id returned part of the full backup operation. </param>
 322        /// <param name="cancellationToken"> The cancellation token to use. </param>
 323        /// <exception cref="ArgumentNullException"><paramref name="jobId"/> is null.</exception>
 324        /// <exception cref="RequestFailedException">The server returned an error. See <see cref="Exception.Message"/> f
 325        internal virtual Response<FullBackupDetailsInternal> GetBackupDetails(string jobId, CancellationToken cancellati
 326        {
 0327            using DiagnosticScope scope = _diagnostics.CreateScope($"{nameof(KeyVaultBackupClient)}.{nameof(GetBackupDet
 0328            scope.Start();
 329            try
 330            {
 0331                return _restClient.FullBackupStatus(VaultUri.AbsoluteUri, jobId, cancellationToken);
 332            }
 0333            catch (Exception ex)
 334            {
 0335                scope.Failed(ex);
 0336                throw;
 337            }
 0338        }
 339    }
 340}