/// <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(); }
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); } } }
/// <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); }
/// <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); }
/// <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); }
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(); }
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; }
/// <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); }
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)); }
/// <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 }
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")); }
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")); }