コード例 #1
0
        /// <summary>
        /// Create the model from user input
        /// </summary>
        /// <param name="model">Model retrieved from service</param>
        /// <returns>The model that was passed in</returns>
        protected override IEnumerable <AzureSqlInstanceFailoverGroupModel> ApplyUserInputToModel(IEnumerable <AzureSqlInstanceFailoverGroupModel> model)
        {
            string location = Location;
            List <AzureSqlInstanceFailoverGroupModel> newEntity = new List <AzureSqlInstanceFailoverGroupModel>();
            object parameterValue;

            int?gracePeriod = null;

            if (!FailoverPolicy.Equals("Manual", StringComparison.OrdinalIgnoreCase))
            {
                gracePeriod = (MyInvocation.BoundParameters.TryGetValue("GracePeriodWithDataLossHours", out parameterValue) ? (int)parameterValue : 1);
            }

            newEntity.Add(new AzureSqlInstanceFailoverGroupModel()
            {
                ResourceGroupName = ResourceGroupName,
                Location          = Location,
                Name = Name,
                PartnerResourceGroupName             = MyInvocation.BoundParameters.ContainsKey("PartnerResourceGroupName") ? PartnerResourceGroupName : ResourceGroupName,
                PartnerSubscriptionId                = MyInvocation.BoundParameters.ContainsKey("PartnerSubscriptionId") ? PartnerSubscriptionId : null,
                PartnerRegion                        = PartnerRegion,
                PrimaryManagedInstanceName           = PrimaryManagedInstanceName,
                PartnerManagedInstanceName           = PartnerManagedInstanceName,
                ReadWriteFailoverPolicy              = FailoverPolicy.ToString(),
                FailoverWithDataLossGracePeriodHours = gracePeriod,
                ReadOnlyFailoverPolicy               = MyInvocation.BoundParameters.ContainsKey("AllowReadOnlyFailoverToPrimary") ? AllowReadOnlyFailoverToPrimary : "Disabled",
            });
            return(newEntity);
        }
 void IUtf8JsonSerializable.Write(Utf8JsonWriter writer)
 {
     writer.WriteStartObject();
     writer.WritePropertyName("failoverPolicy");
     writer.WriteStringValue(FailoverPolicy.ToString());
     if (Optional.IsDefined(FailoverWithDataLossGracePeriodMinutes))
     {
         writer.WritePropertyName("failoverWithDataLossGracePeriodMinutes");
         writer.WriteNumberValue(FailoverWithDataLossGracePeriodMinutes.Value);
     }
     writer.WriteEndObject();
 }
コード例 #3
0
        public AMQConnection(IConnectionInfo connectionInfo)
        {
            if (connectionInfo == null)
            {
                throw new ArgumentException("ConnectionInfo must be specified");
            }
            _log.Debug("ConnectionInfo: " + connectionInfo);
            _connectionInfo = connectionInfo;
            _log.Debug("password = "******"Connecting to " + brokerInfo);
                    MakeBrokerConnection(brokerInfo);
                    break;
                }
                catch (Exception e)
                {
                    lastException = e;
                    _log.Error("Unable to connect to broker " + _failoverPolicy.GetCurrentBrokerInfo(), e);
                    // XXX: Should perhaps break out of the do/while here if not a SocketException...
                }
            } while (!_connected && _failoverPolicy.FailoverAllowed());

            _log.Debug("Are we connected:" + _connected);

            if (!_connected)
            {
                if (lastException is AMQException)
                {
                    throw lastException;
                }
                else
                {
                    throw new AMQConnectionException("Unable to connect", lastException);
                }
            }
        }
コード例 #4
0
        /// <summary>
        /// Create the model from user input
        /// </summary>
        /// <param name="model">Model retrieved from service</param>
        /// <returns>The model that was passed in</returns>
        protected override IEnumerable <AzureSqlFailoverGroupModel> ApplyUserInputToModel(IEnumerable <AzureSqlFailoverGroupModel> model)
        {
            string location = ModelAdapter.GetServerLocation(ResourceGroupName, ServerName);
            List <AzureSqlFailoverGroupModel> newEntity = new List <AzureSqlFailoverGroupModel>();

            newEntity.Add(new AzureSqlFailoverGroupModel()
            {
                ResourceGroupName                    = ResourceGroupName,
                ServerName                           = ServerName,
                Location                             = location,
                FailoverGroupName                    = FailoverGroupName,
                PartnerResourceGroupName             = MyInvocation.BoundParameters.ContainsKey("PartnerResourceGroupName") ? PartnerResourceGroupName : ResourceGroupName,
                PartnerServerName                    = PartnerServerName,
                ReadWriteFailoverPolicy              = FailoverPolicy.ToString(),
                FailoverWithDataLossGracePeriodHours = ComputeEffectiveGracePeriod(FailoverPolicy, originalGracePeriod: null),
                ReadOnlyFailoverPolicy               = MyInvocation.BoundParameters.ContainsKey("AllowReadOnlyFailoverToPrimary") ? AllowReadOnlyFailoverToPrimary.ToString() : AllowReadOnlyFailoverToPrimary.Disabled.ToString(),
            });
            return(newEntity);
        }
コード例 #5
0
        /// <summary>
        /// Create the model from user input
        /// </summary>
        /// <param name="model">Model retrieved from service</param>
        /// <returns>The model that was passed in</returns>
        protected override IEnumerable <AzureSqlFailoverGroupModel> ApplyUserInputToModel(IEnumerable <AzureSqlFailoverGroupModel> model)
        {
            string location = ModelAdapter.GetServerLocation(ResourceGroupName, ServerName);
            List <AzureSqlFailoverGroupModel> newEntity = new List <AzureSqlFailoverGroupModel>();

            newEntity.Add(new AzureSqlFailoverGroupModel()
            {
                ResourceGroupName = ResourceGroupName,
                ServerName        = ServerName,
                Tags                                 = TagsConversionHelper.CreateTagDictionary(Tag, validate: true),
                Location                             = location,
                FailoverGroupName                    = FailoverGroupName,
                PartnerResourceGroupName             = MyInvocation.BoundParameters.ContainsKey("PartnerResourceGroupName") ? PartnerResourceGroupName : ResourceGroupName,
                PartnerServerName                    = PartnerServerName,
                ReadWriteFailoverPolicy              = FailoverPolicy.ToString(),
                FailoverWithDataLossGracePeriodHours = GracePeriodWithDataLossHour,
                ReadOnlyFailoverPolicy               = AllowReadOnlyFailoverToPrimary.ToString()
            });
            return(newEntity);
        }
コード例 #6
0
        /// <summary>
        /// Create the model from user input
        /// </summary>
        /// <param name="model">Model retrieved from service</param>
        /// <returns>The model that was passed in</returns>
        protected override IEnumerable <AzureSqlFailoverGroupModel> ApplyUserInputToModel(IEnumerable <AzureSqlFailoverGroupModel> model)
        {
            string location = ModelAdapter.GetServerLocation(ResourceGroupName, ServerName);
            List <AzureSqlFailoverGroupModel> newEntity = new List <AzureSqlFailoverGroupModel>();
            AzureSqlFailoverGroupModel        newModel  = model.First();

            FailoverPolicy effectivePolicy = FailoverPolicy;

            if (!MyInvocation.BoundParameters.ContainsKey("FailoverPolicy"))
            {
                // If none was provided, use the existing policy.
                Enum.TryParse(newModel.ReadWriteFailoverPolicy, out effectivePolicy);
            }

            newModel.ReadWriteFailoverPolicy = effectivePolicy.ToString();
            newModel.FailoverWithDataLossGracePeriodHours = ComputeEffectiveGracePeriod(effectivePolicy, originalGracePeriod: newModel.FailoverWithDataLossGracePeriodHours);
            newModel.ReadOnlyFailoverPolicy = MyInvocation.BoundParameters.ContainsKey("AllowReadOnlyFailoverToPrimary") ? AllowReadOnlyFailoverToPrimary.ToString() : newModel.ReadOnlyFailoverPolicy;
            newEntity.Add(newModel);

            return(newEntity);
        }
コード例 #7
0
ファイル: Keyspace.cs プロジェクト: JustinLah/hectorsharp
        public Keyspace(
			ICassandraClient client,
			string keyspaceName,
			IDictionary<string, Dictionary<string, string>> description,
			ConsistencyLevel consistencyLevel,
			FailoverPolicy failoverPolicy,
			IKeyedObjectPool<Endpoint, ICassandraClient> pool,
			ICassandraClientMonitor monitor)
        {
            if (client == null)
                throw new ArgumentNullException("client");
            if (client.Version != CassandraVersion.v0_5_1)
                throw new ArgumentOutOfRangeException("client version is not v 0.5.1");

            this.Client = client;
            this.ConsistencyLevel = consistencyLevel;
            this.Description = description;
            this.Name = keyspaceName;
            this.cassandra = client.Client as Cassandra.Client;
            this.FailoverPolicy = failoverPolicy;
            this.pool = pool;
            this.monitor = monitor;
            InitFailover();
        }
コード例 #8
0
        public override void ExecuteCmdlet()
        {
            if (!ParameterSetName.Equals(NameParameterSet, StringComparison.Ordinal))
            {
                ResourceIdentifier resourceIdentifier = null;
                if (ParameterSetName.Equals(ResourceIdParameterSet, StringComparison.Ordinal))
                {
                    resourceIdentifier = new ResourceIdentifier(ResourceId);
                }
                else if (ParameterSetName.Equals(ObjectParameterSet, StringComparison.Ordinal))
                {
                    resourceIdentifier = new ResourceIdentifier(InputObject.Id);
                }

                ResourceGroupName = resourceIdentifier.ResourceGroupName;
                Name = resourceIdentifier.ResourceName;
            }

            IList <FailoverPolicy> failoverPolicies = new List <FailoverPolicy>();

            for (int i = 0; i < FailoverPolicy.Length; i++)
            {
                FailoverPolicy failoverPolicy = new FailoverPolicy(locationName: FailoverPolicy[i], failoverPriority: i);
                failoverPolicies.Add(failoverPolicy);
            }

            if (ShouldProcess(Name, "Updating Database Account Failover Priority"))
            {
                CosmosDBManagementClient.DatabaseAccounts.FailoverPriorityChangeAsync(ResourceGroupName, Name, new FailoverPolicies(failoverPolicies)).GetAwaiter().GetResult();

                DatabaseAccountGetResults databaseAccount = CosmosDBManagementClient.DatabaseAccounts.GetWithHttpMessagesAsync(ResourceGroupName, Name).GetAwaiter().GetResult().Body;
                WriteObject(new PSDatabaseAccount(databaseAccount));
            }

            return;
        }
コード例 #9
0
        /// <summary>
        /// Interprets and returns the lossy automatic failover grace period provided by the user.
        /// </summary>
        /// <returns>The grace period</returns>
        protected int?ComputeEffectiveGracePeriod(FailoverPolicy policy, int?originalGracePeriod)
        {
            int?gracePeriod = null;

            object parameterValue;

            if (MyInvocation.BoundParameters.TryGetValue("GracePeriodWithDataLossHours", out parameterValue))
            {
                gracePeriod = (int)parameterValue;
            }

            if (!gracePeriod.HasValue && policy == FailoverPolicy.Automatic)
            {
                // If the policy is Automatic, the grace period must be non-null. If this is an update and the grace
                // period was non-null, use the existing grace period. Otherwise, use a default of 1.
                gracePeriod = originalGracePeriod ?? 1;
            }

            if (gracePeriod.HasValue && gracePeriod == 0)
            {
                // Use 1 if 0 is provided. They are equivalent from the service's perspective, but 1 is more
                // representative of what a user will see.
                WriteWarning(string.Format(Properties.Resources.FailoverGroupDataLossHoursUnsupportedLowValue, gracePeriod, 1));
                gracePeriod = 1;
            }

            int maxAllowedValue = int.MaxValue / 60;

            if (gracePeriod.HasValue && gracePeriod.Value > maxAllowedValue)
            {
                WriteWarning(string.Format(Properties.Resources.FailoverGroupDataLossHoursOverflow, gracePeriod, maxAllowedValue));
                gracePeriod = maxAllowedValue;
            }

            return(gracePeriod);
        }
コード例 #10
0
        internal static DatabaseAccountData DeserializeDatabaseAccountData(JsonElement element)
        {
            Optional <DatabaseAccountKind>    kind     = default;
            Optional <ManagedServiceIdentity> identity = default;
            IDictionary <string, string>      tags     = default;
            AzureLocation      location                    = default;
            ResourceIdentifier id                          = default;
            string             name                        = default;
            ResourceType       type                        = default;
            SystemData         systemData                  = default;
            Optional <string>  provisioningState           = default;
            Optional <string>  documentEndpoint            = default;
            Optional <string>  databaseAccountOfferType    = default;
            Optional <IList <IPAddressOrRange> > ipRules   = default;
            Optional <bool> isVirtualNetworkFilterEnabled  = default;
            Optional <bool> enableAutomaticFailover        = default;
            Optional <ConsistencyPolicy> consistencyPolicy = default;
            Optional <IList <DatabaseAccountCapability> >       capabilities     = default;
            Optional <IReadOnlyList <DatabaseAccountLocation> > writeLocations   = default;
            Optional <IReadOnlyList <DatabaseAccountLocation> > readLocations    = default;
            Optional <IReadOnlyList <DatabaseAccountLocation> > locations        = default;
            Optional <IReadOnlyList <FailoverPolicy> >          failoverPolicies = default;
            Optional <IList <VirtualNetworkRule> > virtualNetworkRules           = default;
            Optional <IReadOnlyList <PrivateEndpointConnectionData> > privateEndpointConnections = default;
            Optional <bool>                           enableMultipleWriteLocations = default;
            Optional <bool>                           enableCassandraConnector     = default;
            Optional <ConnectorOffer>                 connectorOffer = default;
            Optional <bool>                           disableKeyBasedMetadataWriteAccess = default;
            Optional <Uri>                            keyVaultKeyUri                 = default;
            Optional <string>                         defaultIdentity                = default;
            Optional <PublicNetworkAccess>            publicNetworkAccess            = default;
            Optional <bool>                           enableFreeTier                 = default;
            Optional <ApiProperties>                  apiProperties                  = default;
            Optional <bool>                           enableAnalyticalStorage        = default;
            Optional <AnalyticalStorageConfiguration> analyticalStorageConfiguration = default;
            Optional <string>                         instanceId        = default;
            Optional <CreateMode>                     createMode        = default;
            Optional <RestoreParameters>              restoreParameters = default;
            Optional <BackupPolicy>                   backupPolicy      = default;
            Optional <IList <CorsPolicy> >            cors                        = default;
            Optional <NetworkAclBypass>               networkAclBypass            = default;
            Optional <IList <string> >                networkAclBypassResourceIds = default;
            Optional <bool>                           disableLocalAuth            = default;
            Optional <Capacity>                       capacity                    = default;

            foreach (var property in element.EnumerateObject())
            {
                if (property.NameEquals("kind"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        property.ThrowNonNullablePropertyIsNull();
                        continue;
                    }
                    kind = new DatabaseAccountKind(property.Value.GetString());
                    continue;
                }
                if (property.NameEquals("identity"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        property.ThrowNonNullablePropertyIsNull();
                        continue;
                    }
                    var serializeOptions = new JsonSerializerOptions {
                        Converters = { new ManagedServiceIdentityTypeV3Converter() }
                    };
                    identity = JsonSerializer.Deserialize <ManagedServiceIdentity>(property.Value.ToString(), serializeOptions);
                    continue;
                }
                if (property.NameEquals("tags"))
                {
                    Dictionary <string, string> dictionary = new Dictionary <string, string>();
                    foreach (var property0 in property.Value.EnumerateObject())
                    {
                        dictionary.Add(property0.Name, property0.Value.GetString());
                    }
                    tags = dictionary;
                    continue;
                }
                if (property.NameEquals("location"))
                {
                    location = property.Value.GetString();
                    continue;
                }
                if (property.NameEquals("id"))
                {
                    id = new ResourceIdentifier(property.Value.GetString());
                    continue;
                }
                if (property.NameEquals("name"))
                {
                    name = property.Value.GetString();
                    continue;
                }
                if (property.NameEquals("type"))
                {
                    type = property.Value.GetString();
                    continue;
                }
                if (property.NameEquals("systemData"))
                {
                    systemData = JsonSerializer.Deserialize <SystemData>(property.Value.ToString());
                    continue;
                }
                if (property.NameEquals("properties"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        property.ThrowNonNullablePropertyIsNull();
                        continue;
                    }
                    foreach (var property0 in property.Value.EnumerateObject())
                    {
                        if (property0.NameEquals("provisioningState"))
                        {
                            provisioningState = property0.Value.GetString();
                            continue;
                        }
                        if (property0.NameEquals("documentEndpoint"))
                        {
                            documentEndpoint = property0.Value.GetString();
                            continue;
                        }
                        if (property0.NameEquals("databaseAccountOfferType"))
                        {
                            databaseAccountOfferType = property0.Value.GetString();
                            continue;
                        }
                        if (property0.NameEquals("ipRules"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            List <IPAddressOrRange> array = new List <IPAddressOrRange>();
                            foreach (var item in property0.Value.EnumerateArray())
                            {
                                array.Add(IPAddressOrRange.DeserializeIPAddressOrRange(item));
                            }
                            ipRules = array;
                            continue;
                        }
                        if (property0.NameEquals("isVirtualNetworkFilterEnabled"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            isVirtualNetworkFilterEnabled = property0.Value.GetBoolean();
                            continue;
                        }
                        if (property0.NameEquals("enableAutomaticFailover"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            enableAutomaticFailover = property0.Value.GetBoolean();
                            continue;
                        }
                        if (property0.NameEquals("consistencyPolicy"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            consistencyPolicy = ConsistencyPolicy.DeserializeConsistencyPolicy(property0.Value);
                            continue;
                        }
                        if (property0.NameEquals("capabilities"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            List <DatabaseAccountCapability> array = new List <DatabaseAccountCapability>();
                            foreach (var item in property0.Value.EnumerateArray())
                            {
                                array.Add(DatabaseAccountCapability.DeserializeDatabaseAccountCapability(item));
                            }
                            capabilities = array;
                            continue;
                        }
                        if (property0.NameEquals("writeLocations"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            List <DatabaseAccountLocation> array = new List <DatabaseAccountLocation>();
                            foreach (var item in property0.Value.EnumerateArray())
                            {
                                array.Add(DatabaseAccountLocation.DeserializeDatabaseAccountLocation(item));
                            }
                            writeLocations = array;
                            continue;
                        }
                        if (property0.NameEquals("readLocations"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            List <DatabaseAccountLocation> array = new List <DatabaseAccountLocation>();
                            foreach (var item in property0.Value.EnumerateArray())
                            {
                                array.Add(DatabaseAccountLocation.DeserializeDatabaseAccountLocation(item));
                            }
                            readLocations = array;
                            continue;
                        }
                        if (property0.NameEquals("locations"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            List <DatabaseAccountLocation> array = new List <DatabaseAccountLocation>();
                            foreach (var item in property0.Value.EnumerateArray())
                            {
                                array.Add(DatabaseAccountLocation.DeserializeDatabaseAccountLocation(item));
                            }
                            locations = array;
                            continue;
                        }
                        if (property0.NameEquals("failoverPolicies"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            List <FailoverPolicy> array = new List <FailoverPolicy>();
                            foreach (var item in property0.Value.EnumerateArray())
                            {
                                array.Add(FailoverPolicy.DeserializeFailoverPolicy(item));
                            }
                            failoverPolicies = array;
                            continue;
                        }
                        if (property0.NameEquals("virtualNetworkRules"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            List <VirtualNetworkRule> array = new List <VirtualNetworkRule>();
                            foreach (var item in property0.Value.EnumerateArray())
                            {
                                array.Add(VirtualNetworkRule.DeserializeVirtualNetworkRule(item));
                            }
                            virtualNetworkRules = array;
                            continue;
                        }
                        if (property0.NameEquals("privateEndpointConnections"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            List <PrivateEndpointConnectionData> array = new List <PrivateEndpointConnectionData>();
                            foreach (var item in property0.Value.EnumerateArray())
                            {
                                array.Add(PrivateEndpointConnectionData.DeserializePrivateEndpointConnectionData(item));
                            }
                            privateEndpointConnections = array;
                            continue;
                        }
                        if (property0.NameEquals("enableMultipleWriteLocations"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            enableMultipleWriteLocations = property0.Value.GetBoolean();
                            continue;
                        }
                        if (property0.NameEquals("enableCassandraConnector"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            enableCassandraConnector = property0.Value.GetBoolean();
                            continue;
                        }
                        if (property0.NameEquals("connectorOffer"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            connectorOffer = new ConnectorOffer(property0.Value.GetString());
                            continue;
                        }
                        if (property0.NameEquals("disableKeyBasedMetadataWriteAccess"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            disableKeyBasedMetadataWriteAccess = property0.Value.GetBoolean();
                            continue;
                        }
                        if (property0.NameEquals("keyVaultKeyUri"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                keyVaultKeyUri = null;
                                continue;
                            }
                            keyVaultKeyUri = new Uri(property0.Value.GetString());
                            continue;
                        }
                        if (property0.NameEquals("defaultIdentity"))
                        {
                            defaultIdentity = property0.Value.GetString();
                            continue;
                        }
                        if (property0.NameEquals("publicNetworkAccess"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            publicNetworkAccess = new PublicNetworkAccess(property0.Value.GetString());
                            continue;
                        }
                        if (property0.NameEquals("enableFreeTier"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            enableFreeTier = property0.Value.GetBoolean();
                            continue;
                        }
                        if (property0.NameEquals("apiProperties"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            apiProperties = ApiProperties.DeserializeApiProperties(property0.Value);
                            continue;
                        }
                        if (property0.NameEquals("enableAnalyticalStorage"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            enableAnalyticalStorage = property0.Value.GetBoolean();
                            continue;
                        }
                        if (property0.NameEquals("analyticalStorageConfiguration"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            analyticalStorageConfiguration = AnalyticalStorageConfiguration.DeserializeAnalyticalStorageConfiguration(property0.Value);
                            continue;
                        }
                        if (property0.NameEquals("instanceId"))
                        {
                            instanceId = property0.Value.GetString();
                            continue;
                        }
                        if (property0.NameEquals("createMode"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            createMode = new CreateMode(property0.Value.GetString());
                            continue;
                        }
                        if (property0.NameEquals("restoreParameters"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            restoreParameters = RestoreParameters.DeserializeRestoreParameters(property0.Value);
                            continue;
                        }
                        if (property0.NameEquals("backupPolicy"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            backupPolicy = BackupPolicy.DeserializeBackupPolicy(property0.Value);
                            continue;
                        }
                        if (property0.NameEquals("cors"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            List <CorsPolicy> array = new List <CorsPolicy>();
                            foreach (var item in property0.Value.EnumerateArray())
                            {
                                array.Add(CorsPolicy.DeserializeCorsPolicy(item));
                            }
                            cors = array;
                            continue;
                        }
                        if (property0.NameEquals("networkAclBypass"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            networkAclBypass = property0.Value.GetString().ToNetworkAclBypass();
                            continue;
                        }
                        if (property0.NameEquals("networkAclBypassResourceIds"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            List <string> array = new List <string>();
                            foreach (var item in property0.Value.EnumerateArray())
                            {
                                array.Add(item.GetString());
                            }
                            networkAclBypassResourceIds = array;
                            continue;
                        }
                        if (property0.NameEquals("disableLocalAuth"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            disableLocalAuth = property0.Value.GetBoolean();
                            continue;
                        }
                        if (property0.NameEquals("capacity"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            capacity = Capacity.DeserializeCapacity(property0.Value);
                            continue;
                        }
                    }
                    continue;
                }
            }
            return(new DatabaseAccountData(id, name, type, systemData, tags, location, Optional.ToNullable(kind), identity, provisioningState.Value, documentEndpoint.Value, databaseAccountOfferType.Value, Optional.ToList(ipRules), Optional.ToNullable(isVirtualNetworkFilterEnabled), Optional.ToNullable(enableAutomaticFailover), consistencyPolicy.Value, Optional.ToList(capabilities), Optional.ToList(writeLocations), Optional.ToList(readLocations), Optional.ToList(locations), Optional.ToList(failoverPolicies), Optional.ToList(virtualNetworkRules), Optional.ToList(privateEndpointConnections), Optional.ToNullable(enableMultipleWriteLocations), Optional.ToNullable(enableCassandraConnector), Optional.ToNullable(connectorOffer), Optional.ToNullable(disableKeyBasedMetadataWriteAccess), keyVaultKeyUri.Value, defaultIdentity.Value, Optional.ToNullable(publicNetworkAccess), Optional.ToNullable(enableFreeTier), apiProperties.Value, Optional.ToNullable(enableAnalyticalStorage), analyticalStorageConfiguration.Value, instanceId.Value, Optional.ToNullable(createMode), restoreParameters.Value, backupPolicy.Value, Optional.ToList(cors), Optional.ToNullable(networkAclBypass), Optional.ToList(networkAclBypassResourceIds), Optional.ToNullable(disableLocalAuth), capacity.Value));
        }
コード例 #11
0
        /// <summary>
        /// Create the model from user input
        /// </summary>
        /// <param name="model">Model retrieved from service</param>
        /// <returns>The model that was passed in</returns>
        protected override IEnumerable <AzureSqlFailoverGroupModel> ApplyUserInputToModel(IEnumerable <AzureSqlFailoverGroupModel> model)
        {
#pragma warning disable 0618
            string location = ModelAdapter.GetServerLocation(ResourceGroupName, ServerName);
            List <AzureSqlFailoverGroupModel> newEntity = new List <AzureSqlFailoverGroupModel>();
            AzureSqlFailoverGroupModel        newModel  = model.First();

            newModel.ReadWriteFailoverPolicy = MyInvocation.BoundParameters.ContainsKey("FailoverPolicy") ? FailoverPolicy.ToString() : newModel.ReadWriteFailoverPolicy;
            newModel.FailoverWithDataLossGracePeriodHours = MyInvocation.BoundParameters.ContainsKey("GracePeriodWithDataLossHour") ? GracePeriodWithDataLossHour : newModel.FailoverWithDataLossGracePeriodHours;
            newModel.ReadOnlyFailoverPolicy = MyInvocation.BoundParameters.ContainsKey("AllowReadOnlyFailoverToPrimary") ? AllowReadOnlyFailoverToPrimary.ToString() : newModel.ReadOnlyFailoverPolicy;
            newEntity.Add(newModel);

            return(newEntity);

#pragma warning restore 0618
        }
コード例 #12
0
        public void Failover()
        {
            var h1client      = new Mock <ICassandraClient>();
            var h2client      = new Mock <ICassandraClient>();
            var h3client      = new Mock <ICassandraClient>();
            var h1endpoint    = new Endpoint("h1", 111, "ip1");
            var h2endpoint    = new Endpoint("h2", 111, "ip2");
            var h3endpoint    = new Endpoint("h3", 111, "ip3");
            var tprotocol     = new Mock <TProtocol>(new Mock <TTransport>().Object);
            var h1cassandra   = new Mock <Apache.Cassandra.Cassandra.Client>(tprotocol.Object).As <Apache.Cassandra.Cassandra.Iface>();
            var h2cassandra   = new Mock <Apache.Cassandra.Cassandra.Client>(tprotocol.Object).As <Apache.Cassandra.Cassandra.Iface>();
            var h3cassandra   = new Mock <Apache.Cassandra.Cassandra.Client>(tprotocol.Object).As <Apache.Cassandra.Cassandra.Iface>();
            var keyspaceName  = "Keyspace1";
            var description   = new Dictionary <string, Dictionary <string, string> >();
            var keyspace1desc = new Dictionary <string, string>();

            keyspace1desc.Add(HectorSharp.Keyspace.CF_TYPE, HectorSharp.Keyspace.CF_TYPE_STANDARD);
            description.Add("Standard1", keyspace1desc);
            var consistencyLevel = HectorSharp.ConsistencyLevel.ONE;
            var cp      = new ColumnPath("Standard1", null, "Failover");
            var pool    = new Mock <IKeyedObjectPool <Endpoint, ICassandraClient> >();
            var monitor = new Mock <ICassandraClientMonitor>();

            // list of available servers
            var tokenMap = new Dictionary <string, string>();

            tokenMap.Add("t1", "h1");
            tokenMap.Add("t2", "h2");
            tokenMap.Add("t3", "h3");

            h1client.Setup(c => c.Client).Returns(h1cassandra.Object);
            h2client.Setup(c => c.Client).Returns(h2cassandra.Object);
            h3client.Setup(c => c.Client).Returns(h3cassandra.Object);
            h1client.Setup(c => c.Port).Returns(h1endpoint.Port);
            h2client.Setup(c => c.Port).Returns(h2endpoint.Port);
            h3client.Setup(c => c.Port).Returns(h3endpoint.Port);
            h1client.Setup(c => c.GetTokenMap(AnyBool())).Returns(tokenMap);
            h2client.Setup(c => c.GetTokenMap(AnyBool())).Returns(tokenMap);
            h3client.Setup(c => c.GetTokenMap(AnyBool())).Returns(tokenMap);
            h1client.Setup(c => c.Endpoint).Returns(h1endpoint);
            h2client.Setup(c => c.Endpoint).Returns(h2endpoint);
            h3client.Setup(c => c.Endpoint).Returns(h3endpoint);
            pool.Setup(p => p.Borrow(IsEndpoint(h1endpoint))).Returns(h1client.Object);
            pool.Setup(p => p.Borrow(IsEndpoint(h2endpoint))).Returns(h2client.Object);
            pool.Setup(p => p.Borrow(IsEndpoint(h3endpoint))).Returns(h3client.Object);

            // success without failover

            var failoverPolicy = new FailoverPolicy(0, FailoverStrategy.FAIL_FAST);
            var ks             = new Keyspace(h1client.Object, keyspaceName, description, consistencyLevel, failoverPolicy, pool.Object, monitor.Object);

            ks.Insert("key", cp, "value");

            // fail fast

            h1cassandra.Setup(
                c => c.insert(AnyString(), AnyString(), Any <Apache.Cassandra.ColumnPath>(), AnyBytes(), AnyLong(), Any <Apache.Cassandra.ConsistencyLevel>()))
            .Throws(new Apache.Cassandra.TimedOutException());

            Assert.Throws <TimedOutException>(() => ks.Insert("key", cp, "value"));

            // on fail try next one, h1 fails, h2 succeeds
            failoverPolicy = new FailoverPolicy(3, FailoverStrategy.ON_FAIL_TRY_ONE_NEXT_AVAILABLE);
            ks             = new Keyspace(h1client.Object, keyspaceName, description, consistencyLevel, failoverPolicy, pool.Object, monitor.Object);

            ks.Insert("key", cp, "value");

            h2cassandra.Verify(
                c => c.insert(AnyString(), AnyString(), Any <Apache.Cassandra.ColumnPath>(), AnyBytes(), AnyLong(), Any <Apache.Cassandra.ConsistencyLevel>())
                );

            pool.Verify(p => p.Borrow(IsEndpoint(h2endpoint)));

            // make all nodes fail

            h2cassandra.Setup(
                c => c.insert(AnyString(), AnyString(), Any <Apache.Cassandra.ColumnPath>(), AnyBytes(), AnyLong(), Any <Apache.Cassandra.ConsistencyLevel>()))
            .Throws(new Apache.Cassandra.TimedOutException());

            h3cassandra.Setup(
                c => c.insert(AnyString(), AnyString(), Any <Apache.Cassandra.ColumnPath>(), AnyBytes(), AnyLong(), Any <Apache.Cassandra.ConsistencyLevel>()))
            .Throws(new Apache.Cassandra.TimedOutException());

            ks = new Keyspace(h1client.Object, keyspaceName, description, consistencyLevel, failoverPolicy, pool.Object, monitor.Object);

            Assert.Throws <TimedOutException>(() => ks.Insert("key", cp, "value"));
        }
コード例 #13
0
        public void Failover()
        {
            var h1client = new Mock<ICassandraClient>();
            var h2client = new Mock<ICassandraClient>();
            var h3client = new Mock<ICassandraClient>();
            var h1endpoint = new Endpoint("h1", 111, "ip1");
            var h2endpoint = new Endpoint("h2", 111, "ip2");
            var h3endpoint = new Endpoint("h3", 111, "ip3");
            var tprotocol = new Mock<TProtocol>(new Mock<TTransport>().Object);
            var h1cassandra = new Mock<Apache.Cassandra.Cassandra.Client>(tprotocol.Object).As<Apache.Cassandra.Cassandra.Iface>();
            var h2cassandra = new Mock<Apache.Cassandra.Cassandra.Client>(tprotocol.Object).As<Apache.Cassandra.Cassandra.Iface>();
            var h3cassandra = new Mock<Apache.Cassandra.Cassandra.Client>(tprotocol.Object).As<Apache.Cassandra.Cassandra.Iface>();
            var keyspaceName = "Keyspace1";
            var description = new Dictionary<string, Dictionary<string, string>>();
            var keyspace1desc = new Dictionary<string, string>();
            keyspace1desc.Add(HectorSharp.Keyspace.CF_TYPE, HectorSharp.Keyspace.CF_TYPE_STANDARD);
            description.Add("Standard1", keyspace1desc);
            var consistencyLevel = HectorSharp.ConsistencyLevel.ONE;
            var cp = new ColumnPath("Standard1", null, "Failover");
            var pool = new Mock<IKeyedObjectPool<Endpoint, ICassandraClient>>();
            var monitor = new Mock<ICassandraClientMonitor>();

            // list of available servers
            var tokenMap = new Dictionary<string, string>();
            tokenMap.Add("t1", "h1");
            tokenMap.Add("t2", "h2");
            tokenMap.Add("t3", "h3");

            h1client.Setup(c => c.Client).Returns(h1cassandra.Object);
            h2client.Setup(c => c.Client).Returns(h2cassandra.Object);
            h3client.Setup(c => c.Client).Returns(h3cassandra.Object);
            h1client.Setup(c => c.Port).Returns(h1endpoint.Port);
            h2client.Setup(c => c.Port).Returns(h2endpoint.Port);
            h3client.Setup(c => c.Port).Returns(h3endpoint.Port);
            h1client.Setup(c => c.GetTokenMap(AnyBool())).Returns(tokenMap);
            h2client.Setup(c => c.GetTokenMap(AnyBool())).Returns(tokenMap);
            h3client.Setup(c => c.GetTokenMap(AnyBool())).Returns(tokenMap);
            h1client.Setup(c => c.Endpoint).Returns(h1endpoint);
            h2client.Setup(c => c.Endpoint).Returns(h2endpoint);
            h3client.Setup(c => c.Endpoint).Returns(h3endpoint);
            pool.Setup(p => p.Borrow(IsEndpoint(h1endpoint))).Returns(h1client.Object);
            pool.Setup(p => p.Borrow(IsEndpoint(h2endpoint))).Returns(h2client.Object);
            pool.Setup(p => p.Borrow(IsEndpoint(h3endpoint))).Returns(h3client.Object);

            // success without failover

            var failoverPolicy = new FailoverPolicy(0, FailoverStrategy.FAIL_FAST);
            var ks = new Keyspace(h1client.Object, keyspaceName, description, consistencyLevel, failoverPolicy, pool.Object, monitor.Object);

            ks.Insert("key", cp, "value");

            // fail fast

            h1cassandra.Setup(
                c => c.insert(AnyString(), AnyString(), Any<Apache.Cassandra.ColumnPath>(), AnyBytes(), AnyLong(), Any<Apache.Cassandra.ConsistencyLevel>()))
                .Throws(new Apache.Cassandra.TimedOutException());

            Assert.Throws<TimedOutException>(() => ks.Insert("key", cp, "value"));

            // on fail try next one, h1 fails, h2 succeeds
            failoverPolicy = new FailoverPolicy(3, FailoverStrategy.ON_FAIL_TRY_ONE_NEXT_AVAILABLE);
            ks = new Keyspace(h1client.Object, keyspaceName, description, consistencyLevel, failoverPolicy, pool.Object, monitor.Object);

            ks.Insert("key", cp, "value");

            h2cassandra.Verify(
                c => c.insert(AnyString(), AnyString(), Any<Apache.Cassandra.ColumnPath>(), AnyBytes(), AnyLong(), Any<Apache.Cassandra.ConsistencyLevel>())
            );

            pool.Verify(p => p.Borrow(IsEndpoint(h2endpoint)));

            // make all nodes fail

            h2cassandra.Setup(
                c => c.insert(AnyString(), AnyString(), Any<Apache.Cassandra.ColumnPath>(), AnyBytes(), AnyLong(), Any<Apache.Cassandra.ConsistencyLevel>()))
                .Throws(new Apache.Cassandra.TimedOutException());

            h3cassandra.Setup(
                c => c.insert(AnyString(), AnyString(), Any<Apache.Cassandra.ColumnPath>(), AnyBytes(), AnyLong(), Any<Apache.Cassandra.ConsistencyLevel>()))
                .Throws(new Apache.Cassandra.TimedOutException());

            ks = new Keyspace(h1client.Object, keyspaceName, description, consistencyLevel, failoverPolicy, pool.Object, monitor.Object);

            Assert.Throws<TimedOutException>(() => ks.Insert("key", cp, "value"));
        }