private void AddLocationsForCreateUpdateParameters(Models.DatabaseAccountCreateUpdateParametersInner createUpdateParametersInner, IList <Microsoft.Azure.Management.CosmosDB.Fluent.Models.FailoverPolicy> failoverPolicies) { List <Models.Location> locations = new List <Models.Location>(); if (failoverPolicies.Count > 0) { for (int i = 0; i < failoverPolicies.Count; i++) { Models.FailoverPolicy policyInner = failoverPolicies[i]; Models.Location location = new Models.Location(); location.FailoverPriority = i; location.LocationName = policyInner.LocationName; locations.Add(location); } } else { Models.Location location = new Models.Location(); location.FailoverPriority = 0; location.LocationName = createUpdateParametersInner.Location; locations.Add(location); } createUpdateParametersInner.Locations = locations; }
private Models.DatabaseAccountCreateUpdateParametersInner CreateUpdateParametersInner(Models.DatabaseAccountInner inner) { this.EnsureFailoverIsInitialized(); Models.DatabaseAccountCreateUpdateParametersInner createUpdateParametersInner = new Models.DatabaseAccountCreateUpdateParametersInner(); createUpdateParametersInner.Location = this.RegionName.ToLower(); createUpdateParametersInner.ConsistencyPolicy = inner.ConsistencyPolicy; createUpdateParametersInner.IpRangeFilter = inner.IpRangeFilter; createUpdateParametersInner.Kind = inner.Kind; createUpdateParametersInner.Tags = inner.Tags; this.AddLocationsForCreateUpdateParameters(createUpdateParametersInner, this.failoverPolicies); return(createUpdateParametersInner); }
private async Task <Microsoft.Azure.Management.CosmosDB.Fluent.ICosmosDBAccount> DoDatabaseUpdateCreateAsync(CancellationToken cancellationToken = default(CancellationToken)) { CosmosDBAccountImpl self = this; int currentDelayDueToMissingFailovers = 0; Models.DatabaseAccountCreateUpdateParametersInner createUpdateParametersInner = this.CreateUpdateParametersInner(this.Inner); await this.Manager.Inner.DatabaseAccounts.CreateOrUpdateAsync( ResourceGroupName, Name, createUpdateParametersInner); this.failoverPolicies.Clear(); this.hasFailoverPolicyChanges = false; bool done = false; ICosmosDBAccount databaseAccount = null; while (!done) { await SdkContext.DelayProvider.DelayAsync(5000, cancellationToken); databaseAccount = await this.Manager.CosmosDBAccounts.GetByResourceGroupAsync( ResourceGroupName, Name); if (maxDelayDueToMissingFailovers > currentDelayDueToMissingFailovers && (databaseAccount.Id == null || databaseAccount.Id.Length == 0 || createUpdateParametersInner.Locations.Count > databaseAccount.Inner.FailoverPolicies.Count)) { currentDelayDueToMissingFailovers += 5000; continue; } if (this.IsProvisioningStateFinal(databaseAccount.Inner.ProvisioningState)) { done = true; foreach (Models.Location location in databaseAccount.ReadableReplications) { if (!this.IsProvisioningStateFinal(location.ProvisioningState)) { done = false; break; } } } } this.SetInner(databaseAccount.Inner); this.initializeFailover(); return(databaseAccount); }
private Models.DatabaseAccountCreateUpdateParametersInner CreateUpdateParametersInner(Models.DatabaseAccountInner inner) { this.EnsureFailoverIsInitialized(); Models.DatabaseAccountCreateUpdateParametersInner createUpdateParametersInner = new Models.DatabaseAccountCreateUpdateParametersInner(); createUpdateParametersInner.Location = this.RegionName.ToLower(); createUpdateParametersInner.ConsistencyPolicy = inner.ConsistencyPolicy; createUpdateParametersInner.IpRangeFilter = inner.IpRangeFilter; createUpdateParametersInner.Kind = inner.Kind; createUpdateParametersInner.Capabilities = inner.Capabilities; createUpdateParametersInner.Tags = inner.Tags; createUpdateParametersInner.IsVirtualNetworkFilterEnabled = inner.IsVirtualNetworkFilterEnabled; if (virtualNetworkRulesMap != null) { createUpdateParametersInner.VirtualNetworkRules = virtualNetworkRulesMap.Values.SelectMany(l => l).ToList(); virtualNetworkRulesMap = null; } this.AddLocationsForCreateUpdateParameters(createUpdateParametersInner, this.failoverPolicies); return(createUpdateParametersInner); }