public override void ExecuteCmdlet() { base.ExecuteCmdlet(); PSBlobRestoreRange range = new PSBlobRestoreRange(this.StartRange, this.EndRange); WriteObject(range); }
public override void ExecuteCmdlet() { base.ExecuteCmdlet(); switch (ParameterSetName) { case AccountObjectParameterSet: this.ResourceGroupName = StorageAccount.ResourceGroupName; this.StorageAccountName = StorageAccount.StorageAccountName; break; case AccountResourceIdParameterSet: ResourceIdentifier accountResource = new ResourceIdentifier(ResourceId); this.ResourceGroupName = accountResource.ResourceGroupName; this.StorageAccountName = accountResource.ResourceName; break; default: // For AccountNameParameterSet, the ResourceGroupName and StorageAccountName can get from input directly break; } if (ShouldProcess(this.StorageAccountName, "Restore Blob Range")) { if (waitForComplete) { Task <AzureOperationResponse <BlobRestoreStatus> > beginTask = this.StorageClient.StorageAccounts.BeginRestoreBlobRangesWithHttpMessagesAsync( this.ResourceGroupName, this.StorageAccountName, this.TimeToRestore, PSBlobRestoreRange.ParseBlobRestoreRanges(this.BlobRestoreRange)); beginTask.Wait(); AzureOperationResponse <BlobRestoreStatus> response = beginTask.Result; WriteWarning(string.Format("Restore blob ranges with Id '{0}' started. Restore blob ranges time to complete is dependent on the size of the restore.", response.Body is null ? "" : response.Body.RestoreId)); Task <AzureOperationResponse <BlobRestoreStatus> > waitTask = ((StorageManagementClient)this.StorageClient).GetPostOrDeleteOperationResultAsync(response, null, new System.Threading.CancellationToken()); try { waitTask.Wait(); } catch (System.AggregateException ex) when(ex.InnerException is CloudException) { throw new InvalidJobStateException(string.Format("Blob ranges restore failed with information: '{0}'.", ((CloudException)ex.InnerException).Response.Content)); } AzureOperationResponse <BlobRestoreStatus> result = waitTask.Result; WriteObject(new PSBlobRestoreStatus(result.Body)); } else { BlobRestoreStatus status = this.StorageClient.StorageAccounts.BeginRestoreBlobRanges( this.ResourceGroupName, this.StorageAccountName, this.TimeToRestore, PSBlobRestoreRange.ParseBlobRestoreRanges(this.BlobRestoreRange)); WriteObject(new PSBlobRestoreStatus(status)); if (status != null && status.Status == BlobRestoreProgressStatus.Failed) { throw new InvalidJobStateException("Blob ranges restore failed."); } } } }