protected internal BackupEntityConfigurationInfo(BackupEntityKind kind, string policyName, BackupEntityKind policyInheritedFrom, BackupSuspensionInfo suspensionInfo) { this.Kind = kind; this.PolicyInheritedFrom = policyInheritedFrom; this.PolicyName = policyName; this.SuspensionInfo = suspensionInfo; }
internal BackupSuspensionInfo(BackupEntityKind suspensionInheritedFrom, bool isSuspended) { this.IsSuspended = isSuspended; this.SuspensionInheritedFrom = suspensionInheritedFrom; }
internal BackupSuspensionInfo() { this.IsSuspended = false; this.SuspensionInheritedFrom = BackupEntityKind.Invalid; }
private async Task <List <BackupEntityConfigurationInfo> > GetOverriddenBackupConfigurationinfo(string applicationServiceNameUri, BackupSuspensionInfo inheritedBackupSuspensionInfo, TimeSpan timeout, CancellationToken cancellationToken, BRSContinuationToken brsContinuationToken, int maxResultsLocal = 0) { List <BackupEntityConfigurationInfo> backupConfigurationInfos = new List <BackupEntityConfigurationInfo>(); bool listSuspended = false; if (!String.IsNullOrEmpty(brsContinuationToken.IncomingContinuationToken)) { string[] array = brsContinuationToken.IncomingContinuationToken.Split(ContinuationTokenSeparatorChar); brsContinuationToken.IncomingContinuationToken = array[0]; if (array[1] == SuspendedContinuationToken) { // We need to check if we were listing suspended partitions previously or override. listSuspended = true; } } string continuationTokenForSuspendendPartitions = null; if (listSuspended) { // if we were listing overrides, then this continuationTokenForSuspendendPartitions should be null. continuationTokenForSuspendendPartitions = brsContinuationToken.IncomingContinuationToken; } var suspendStore = await SuspendStore.CreateOrGetSuspendStatusStore(this.StatefulService); List <string> suspendedEntities = await suspendStore.GetAllSuspensionWithFabricUri(applicationServiceNameUri, timeout, cancellationToken, continuationTokenForSuspendendPartitions); HashSet <string> suspendedEntitiesHashSet = new HashSet <string>(suspendedEntities); var overridesBackupMappings = await this.BackupMappingStore.GetAllProtectionWithFabricUri(applicationServiceNameUri, timeout, cancellationToken, brsContinuationToken.IncomingContinuationToken); string applicationNameUri = null; string serviceNameUri = null; string partitionId = null; int counter = 0; if (maxResultsLocal != 0) { // if maxResults is equal to zero, then we dont need to sort as we have already filtered the elements. overridesBackupMappings = overridesBackupMappings.OrderBy(backupMapping => backupMapping.ApplicationOrServiceUri).ToList(); } foreach (var overridesBackupMapping in overridesBackupMappings) { if (!applicationServiceNameUri.Equals(overridesBackupMapping.ApplicationOrServiceUri)) { BackupEntityConfigurationInfo backupConfigurationInfo = null; FabricBackupResourceType fabricBackupResourceType = UtilityHelper .GetApplicationAndServicePartitionUri( overridesBackupMapping.ApplicationOrServiceUri, out applicationNameUri, out serviceNameUri, out partitionId); BackupSuspensionInfo backupSuspensionInfo = inheritedBackupSuspensionInfo; switch (fabricBackupResourceType) { case FabricBackupResourceType.PartitionUri: if (suspendedEntitiesHashSet.Contains(overridesBackupMapping.ApplicationOrServiceUri)) { backupSuspensionInfo = new BackupSuspensionInfo(BackupEntityKind.Partition, true); suspendedEntitiesHashSet.Remove(overridesBackupMapping.ApplicationOrServiceUri); } if (listSuspended) { continue; } backupConfigurationInfo = new PartitionBackupConfigurationInfo(serviceNameUri, partitionId, overridesBackupMapping.BackupPolicyName, BackupEntityKind.Partition, backupSuspensionInfo); break; case FabricBackupResourceType.ServiceUri: if (suspendedEntitiesHashSet.Contains(overridesBackupMapping.ApplicationOrServiceUri)) { backupSuspensionInfo = new BackupSuspensionInfo(BackupEntityKind.Service, true); suspendedEntitiesHashSet.Remove(overridesBackupMapping.ApplicationOrServiceUri); } if (listSuspended) { continue; } backupConfigurationInfo = new ServiceBackupConfigurationInfo(serviceNameUri, overridesBackupMapping.BackupPolicyName, BackupEntityKind.Service, backupSuspensionInfo); break; case FabricBackupResourceType.ApplicationUri: if (suspendedEntitiesHashSet.Contains(overridesBackupMapping.ApplicationOrServiceUri)) { backupSuspensionInfo = new BackupSuspensionInfo(BackupEntityKind.Application, true); suspendedEntitiesHashSet.Remove(overridesBackupMapping.ApplicationOrServiceUri); } if (listSuspended) { continue; } backupConfigurationInfo = new ApplicationBackupConfigurationInfo(applicationNameUri, overridesBackupMapping.BackupPolicyName, BackupEntityKind.Application, backupSuspensionInfo); break; } if (backupConfigurationInfo != null) { backupConfigurationInfos.Add(backupConfigurationInfo); counter++; if (maxResultsLocal != 0 && counter == maxResultsLocal) { if (counter < overridesBackupMappings.Count || suspendedEntitiesHashSet.Count > 0) { // we need to check if there are more elements to be listed or not. brsContinuationToken.OutgoingContinuationToken = overridesBackupMapping.ApplicationOrServiceUri + ContinuationTokenSeparatorChar + OverrideContinuationToken; } return(backupConfigurationInfos); } } } } suspendedEntitiesHashSet.Remove(applicationServiceNameUri); foreach (var leftSuspendUri in suspendedEntitiesHashSet) { if (maxResultsLocal != 0) { // if maxResults is equal to zero, then we dont need to sort as we have already filtered the elements. suspendedEntitiesHashSet.ToList().Sort(); } FabricBackupResourceType leftSuspendUriType = UtilityHelper .GetApplicationAndServicePartitionUri( leftSuspendUri, out applicationNameUri, out serviceNameUri, out partitionId); BackupEntityConfigurationInfo backupConfigurationInfo = null; BackupMappingModel backupMapping = null; BackupEntityKind backupEntityKind = BackupEntityKind.Invalid; switch (leftSuspendUriType) { case FabricBackupResourceType.PartitionUri: backupMapping = await this.BackupMappingStore.GetValueAsync(serviceNameUri); backupEntityKind = backupMapping != null ? BackupEntityKind.Service : BackupEntityKind.Invalid; backupMapping = await this.BackupMappingStore.GetValueAsync(applicationNameUri); backupEntityKind = backupMapping != null ? BackupEntityKind.Application : BackupEntityKind.Invalid; backupConfigurationInfo = new PartitionBackupConfigurationInfo(serviceNameUri, partitionId, backupMapping.BackupPolicyName, backupEntityKind, new BackupSuspensionInfo(BackupEntityKind.Partition, true)); break; case FabricBackupResourceType.ServiceUri: backupMapping = await this.BackupMappingStore.GetValueAsync(applicationNameUri); backupEntityKind = backupMapping != null ? BackupEntityKind.Application : BackupEntityKind.Invalid; backupConfigurationInfo = new ServiceBackupConfigurationInfo(serviceNameUri, backupMapping.BackupPolicyName, backupEntityKind, new BackupSuspensionInfo(BackupEntityKind.Service, true)); break; case FabricBackupResourceType.ApplicationUri: backupMapping = await this.BackupMappingStore.GetValueAsync(applicationNameUri); backupEntityKind = backupMapping != null ? BackupEntityKind.Application : BackupEntityKind.Invalid; backupConfigurationInfo = new ApplicationBackupConfigurationInfo(applicationNameUri, backupMapping.BackupPolicyName, backupEntityKind, new BackupSuspensionInfo(BackupEntityKind.Application, true)); break; } if (backupMapping != null && backupEntityKind != BackupEntityKind.Invalid) { backupConfigurationInfos.Add(backupConfigurationInfo); counter++; if (maxResultsLocal != 0 && counter == maxResultsLocal) { if (counter < suspendedEntitiesHashSet.Count) { // we need to check if there are more elements to be listed or not. brsContinuationToken.OutgoingContinuationToken = leftSuspendUri + ContinuationTokenSeparatorChar + SuspendedContinuationToken; } break; } } } return(backupConfigurationInfos); }
public ApplicationBackupConfigurationInfo(string applicationName, string policyName, BackupEntityKind policyInheritedFrom, BackupSuspensionInfo suspensionInfo) : base(BackupEntityKind.Application, policyName, policyInheritedFrom, suspensionInfo) { this.ApplicationName = UtilityHelper.GetUriFromCustomUri(applicationName); }
public PartitionBackupConfigurationInfo(string serviceName, string partitionId, string policyName, BackupEntityKind policyInheritedFrom, BackupSuspensionInfo suspensionInfo) : base(BackupEntityKind.Partition, policyName, policyInheritedFrom, suspensionInfo) { this.ServiceName = UtilityHelper.GetUriFromCustomUri(serviceName); this.PartitionId = partitionId; }
protected internal BackupEntity(BackupEntityKind entityKind) { this.EntityKind = entityKind; }