internal override async Task <HttpResponseMessage> RunAsync(TimeSpan timeout, CancellationToken cancellationToken) { this.ThrowInvalidArgumentIfNull(this.backupPolicy); RetentionManager retentionManager = await RetentionManager.CreateOrGetRetentionManager(this.StatefulService); try { using (var transaction = this.StatefulService.StateManager.CreateTransaction()) { await this.BackupPolicyStore.AddAsync(this.backupPolicy.Name, BackupPolicyModel.FromBackupPolicyView(this.backupPolicy) , timeout, cancellationToken, transaction); await retentionManager.CreatePolicyAsync(BackupPolicyModel.FromBackupPolicyView(this.backupPolicy), timeout, cancellationToken, transaction); await transaction.CommitAsync(); } } catch (FabricBackupRestoreKeyAlreadyExisingException) { throw new FabricException(StringResources.BackupPolicyAlreayExists, FabricErrorCode.BackupPolicyAlreayExists); } FabricEvents.Events.BackupPolicyDetails(this.backupPolicy.Name, this.backupPolicy.MaxIncrementalBackups, this.backupPolicy.AutoRestoreOnDataLoss == true ? 1 : 0, this.backupPolicy.Schedule.ScheduleKind == Enums.BackupScheduleType.TimeBased ? 1 : 0, this.backupPolicy.Schedule.ScheduleKind == Enums.BackupScheduleType.FrequencyBased ? 1 : 0, this.backupPolicy.Storage.StorageKind == Enums.BackupStorageType.AzureBlobStore ? 1 : 0, this.backupPolicy.Storage.StorageKind == Enums.BackupStorageType.FileShare ? 1 : 0); return(new HttpResponseMessage(HttpStatusCode.Created)); }
internal override async Task <PagedBackupEntityList> RunAsync(TimeSpan timeout, CancellationToken cancellationToken) { this.ThrowInvalidArgumentIfNull(this.backupPolicyName); BackupPolicyModel backupPolicyModel = await this.BackupPolicyStore.GetValueAsync(this.backupPolicyName, timeout, cancellationToken); if (backupPolicyModel == null) { throw new FabricException(StringResources.BackupPolicyDoesNotExist, FabricErrorCode.BackupPolicyDoesNotExist); } List <BackupEntity> backupEntities = new List <BackupEntity>(); List <string> orderedBackupUriList = backupPolicyModel.BackupEnabledSet.ToList(); orderedBackupUriList.Sort(); List <string> filteredOrderedBackupUriList = orderedBackupUriList.Where(key => key.CompareTo(continuationToken) > 0).ToList(); string continuationTokenToSend = null; long counter = 0; foreach (var backupedUri in filteredOrderedBackupUriList) { backupEntities.Add(BackupEntity.GetBackupEntityFromFabricKey(backupedUri)); counter++; if (maxResults != 0 && counter == maxResults) { if (counter < filteredOrderedBackupUriList.Count) { continuationTokenToSend = backupedUri; } break; } } return(new PagedBackupEntityList() { Items = backupEntities, ContinuationToken = continuationTokenToSend }); }