Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 2
0
 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);
 }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
 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);
 }