/// <summary> /// Configures TLS. /// </summary> /// <param name="builder">The builder to configure.</param> /// <param name="configureOptions">An Action to configure the <see cref="TlsOptions"/>.</param> /// <returns>The builder.</returns> public static IClientBuilder UseTls( this IClientBuilder builder, Action <TlsOptions> configureOptions) { if (configureOptions is null) { throw new ArgumentNullException(nameof(configureOptions)); } var options = new TlsOptions(); configureOptions(options); if (options.LocalCertificate is null && options.ClientCertificateMode == RemoteCertificateMode.RequireCertificate) { throw new InvalidOperationException("No certificate specified"); } if (options.LocalCertificate is X509Certificate2 certificate && !certificate.HasPrivateKey) { TlsConnectionBuilderExtensions.ThrowNoPrivateKey(certificate, $"{nameof(TlsOptions)}.{nameof(TlsOptions.LocalCertificate)}"); } return(builder.Configure <ClientConnectionOptions>(connectionOptions => { connectionOptions.ConfigureConnection(connectionBuilder => { connectionBuilder.UseClientTls(options); }); })); }
/// <summary> /// Configures the Cluster. /// </summary> /// <param name="builder">The <see cref="IClientBuilder"/>.</param> /// <param name="clusterName">The Name of the Cluster being Configured.</param> /// <param name="configuration">The <see cref="IConfiguration"/> which binds to <see cref="ClusterOptions"/>.</param> /// <returns>Returns the <see cref="IClientBuilder"/> so that more methods can be chained.</returns> public static IClientBuilder ConfigureCluster([NotNull] this IClientBuilder builder, [NotNull] string clusterName, [NotNull] IConfiguration configuration) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } if (configuration == null) { throw new ArgumentNullException(nameof(configuration)); } if (string.IsNullOrWhiteSpace(clusterName)) { throw new ArgumentException($"'{nameof(clusterName)}' must not be null, empty or whitespace.", nameof(clusterName)); } var configurationSection = configuration.GetSection($"{Constants.ClusterOptionsDefaultSectionName}:{clusterName}"); if (configurationSection?.Exists() != true) { throw new ConfigurationErrorsException($"Configuration section '{Constants.ClusterOptionsDefaultSectionName}' is incorrect."); } builder.Configure <ClusterOptions>(configurationSection); return(builder); }
private static void TryConfigureClientMembership(IConfiguration configuration, IClientBuilder clientBuilder) { bool.TryParse(configuration[nameof(TestClusterOptions.UseTestClusterMembership)], out bool useTestClusterMembership); if (useTestClusterMembership) { Action <StaticGatewayListProviderOptions> configureOptions = options => { int baseGatewayPort = int.Parse(configuration[nameof(TestClusterOptions.BaseGatewayPort)]); int initialSilosCount = int.Parse(configuration[nameof(TestClusterOptions.InitialSilosCount)]); bool gatewayPerSilo = bool.Parse(configuration[nameof(TestClusterOptions.GatewayPerSilo)]); if (gatewayPerSilo) { options.Gateways = Enumerable.Range(baseGatewayPort, initialSilosCount) .Select(port => new IPEndPoint(IPAddress.Loopback, port).ToGatewayUri()) .ToList(); } else { options.Gateways = new List <Uri> { new IPEndPoint(IPAddress.Loopback, baseGatewayPort).ToGatewayUri() }; } }; clientBuilder.Configure(configureOptions); clientBuilder.ConfigureServices(services => { services.AddSingleton <IGatewayListProvider, StaticGatewayListProvider>() .ConfigureFormatter <StaticGatewayListProviderOptions>(); }); } }
/// <summary> /// Configures TLS. /// </summary> /// <param name="builder">The builder to configure.</param> /// <param name="configureOptions">An Action to configure the <see cref="TlsOptions"/>.</param> /// <returns>The builder.</returns> public static IClientBuilder UseTls( this IClientBuilder builder, Action <TlsOptions> configureOptions) { if (configureOptions == null) { throw new ArgumentNullException(nameof(configureOptions)); } var options = new TlsOptions(); configureOptions(options); if (options.LocalCertificate is null && options.LocalServerCertificateSelector is null) { throw new InvalidOperationException("No certificate specified"); } return(builder.Configure <ClientConnectionOptions>(connectionOptions => { connectionOptions.ConfigureConnection(connectionBuilder => { connectionBuilder.UseClientTls(options); }); })); }
public static IClientBuilder Configure_ClusterOptions(this IClientBuilder builder) { return(builder.Configure <ClusterOptions>(options => { options.ClusterId = AppConst.ClusterId; options.ServiceId = AppConst.ServiceId; })); }
public void Configure(IConfiguration configuration, IClientBuilder clientBuilder) { clientBuilder.Configure <GatewayOptions>(options => options.PreferedGatewayIndex = 0); clientBuilder.ConfigureApplicationParts(parts => { parts.AddApplicationPart(typeof(IVersionUpgradeTestGrain).Assembly); }); }
public void Configure(IConfiguration configuration, IClientBuilder clientBuilder) { clientBuilder .Configure <ClientMessagingOptions>(options => { options.ResponseTimeout = TimeSpan.FromSeconds(5); options.ResponseTimeoutWithDebugger = TimeSpan.FromSeconds(5); }); }
public void Configure(IConfiguration configuration, IClientBuilder clientBuilder) { clientBuilder .Configure <ClusterOptions>(op => op.ServiceId = serviceId) .AddAzureQueueStreams(AQStreamProviderName, ob => ob.Configure <IOptions <ClusterOptions> >( (options, dep) => { options.ConnectionString = TestDefaultConfiguration.DataConnectionString; })); }
public void Configure(IConfiguration configuration, IClientBuilder clientBuilder) { var clusterConnectionLostNotifier = new EventNotifier <EventArgs>(); var gatewayConnectionCountNotifier = new EventNotifier <GatewayCountChangedEventArgs>(); clientBuilder.ConfigureServices(s => s.AddSingleton(clusterConnectionLostNotifier)); clientBuilder.ConfigureServices(s => s.AddSingleton(gatewayConnectionCountNotifier)); clientBuilder.Configure <GatewayOptions>(options => options.GatewayListRefreshPeriod = TimeSpan.FromSeconds(1)); clientBuilder.AddClusterConnectionLostHandler((s, e) => clusterConnectionLostNotifier.Notify(e)); clientBuilder.AddGatewayCountChangedHandler((s, e) => gatewayConnectionCountNotifier.Notify(e)); }
private static IClientBuilder AddOrleansClusterClient(this IClientBuilder builder, OrleansConfig config) { builder.ConfigureApplicationParts(parts => parts.AddApplicationPart(typeof(IPiSystem).Assembly)); #if DEBUG builder.UseLocalhostClustering(); #else builder.Configure <ClusterOptions>(options => { options.ClusterId = config.ClusterId; options.ServiceId = config.ServiceId; }); if (config.DataConnectionString.Contains("6379") || config.DataConnectionString.Contains("6380")) { builder.UseRedisGatewayListProvider(options => options.ConnectionString = config.DataConnectionString); } else { builder.UseAzureStorageClustering(options => options.ConnectionString = config.DataConnectionString); } #endif LoggerType loggers = config.GetLoggerTypes(); if (loggers.HasFlag(LoggerType.AppInsights)) { builder.AddApplicationInsightsTelemetryConsumer(config.InstrumentationKey); } builder.ConfigureLogging(op => { if (loggers.HasFlag(LoggerType.AppInsights)) { op.AddApplicationInsights(config.InstrumentationKey); op.SetMinimumLevel(Enum.Parse <LogLevel>(config.LogLevel, true)); } if (loggers.HasFlag(LoggerType.Console)) { op.AddConsole(); op.SetMinimumLevel(Enum.Parse <LogLevel>(config.LogLevel, true)); } if (loggers.HasFlag(LoggerType.Debug)) { op.AddDebug(); op.SetMinimumLevel(Enum.Parse <LogLevel>(config.LogLevel, true)); } }); return(builder); }
/// <summary> /// Configures the Cluster. /// </summary> /// <param name="builder">The <see cref="IClientBuilder"/>.</param> /// <param name="configurationSection">An <see cref="IConfigurationSection"/> to configure the provided <see cref="IClientBuilder"/>.</param> /// <returns>Returns the <see cref="IClientBuilder"/> so that more methods can be chained.</returns> public static IClientBuilder ConfigureCluster([NotNull] this IClientBuilder builder, [NotNull] IConfigurationSection configurationSection) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } if (configurationSection?.Exists() != true) { throw new ConfigurationErrorsException($"Configuration section '{configurationSection?.Path}' is incorrect."); } return(builder.Configure <ClusterOptions>(configurationSection)); }
public static IClientBuilder UseRedisMembership(this IClientBuilder builder, string redisConnectionString, int db = 0) { builder.Configure <ClusterMembershipOptions>(x => x.ValidateInitialConnectivity = true); return(builder.ConfigureServices(services => services .Configure <RedisOptions>(opt => { opt.ConnectionString = redisConnectionString; opt.Database = db; }) .AddSingleton(new GatewayOptions() { GatewayListRefreshPeriod = GatewayOptions.DEFAULT_GATEWAY_LIST_REFRESH_PERIOD }) .AddRedis() .AddSingleton <IGatewayListProvider, RedisGatewayListProvider>())); }
public static IClientBuilder UseConfiguration( this IClientBuilder clientBuilder, ClientBuilderContext context ) { return(clientBuilder .Configure <ClusterOptions>(config => { config.ClusterId = "dev"; config.ServiceId = "Heroes"; }) .UseConsulClustering(options => { options.Address = new Uri(context.ConsulEndPoint); }) .ConfigureApplicationParts(parts => parts.AddApplicationPart(typeof(IHeroGrain).Assembly).WithReferences()) .ConfigureLogging(logging => logging.AddConsole())); }
public static IClientBuilder UseRedisMembership(this IClientBuilder builder, Action <RedisOptions> configuration) { builder.Configure <ClusterMembershipOptions>(x => x.ValidateInitialConnectivity = true); return(builder.ConfigureServices(services => { var options = new RedisOptions(); configuration?.Invoke(options); services .AddSingleton(options) .AddSingleton(new GatewayOptions() { GatewayListRefreshPeriod = GatewayOptions.DEFAULT_GATEWAY_LIST_REFRESH_PERIOD }) .AddRedis() .AddSingleton <IGatewayListProvider, RedisGatewayListProvider>(); })); }
public static IClientBuilder UseConfiguration( this IClientBuilder clientBuilder, ClientBuilderContext context ) { if (!context.AppInfo.IsDockerized) { var siloAddress = IPAddress.Loopback; const int gatewayPort = 30000; // 10400 clientBuilder.UseStaticClustering(new IPEndPoint(siloAddress, gatewayPort)); } return(clientBuilder.Configure <ClusterOptions>(config => { config.ClusterId = context.ClusterId; config.ServiceId = context.ServiceId; })); }
private void ConfigureOrleansBase(IClientBuilder builder) { builder .Configure <ClusterOptions>(options => { options.ClusterId = "serverlessorleans"; options.ServiceId = "serverlessorleans"; }) .ConfigureLogging(builder => builder.AddConsole()) .ConfigureApplicationParts(parts => { foreach (var assembly in ExternalAssemblies) { System.Console.WriteLine("Loading orleans app parts: " + assembly.FullName); parts.AddApplicationPart(assembly); } }) .UseDashboard(); }
public void Configure(IConfiguration configuration, IClientBuilder clientBuilder) { var basePort = int.Parse(configuration[nameof(TestClusterOptions.BaseGatewayPort)]); var primaryGw = new IPEndPoint(IPAddress.Loopback, basePort).ToGatewayUri(); clientBuilder.Configure <GatewayOptions>(options => { options.GatewayListRefreshPeriod = TimeSpan.FromMilliseconds(100); }); clientBuilder.ConfigureServices(services => { services.AddSingleton(sp => { var gateway = new TestGatewayManager(); gateway.Gateways.Add(primaryGw); return(gateway); }); services.AddFromExisting <IGatewayListProvider, TestGatewayManager>(); }); }
public static IClientBuilder UseConfiguration( this IClientBuilder clientBuilder, ClientBuilderContext context ) { //if (!context.AppInfo.IsDockerized) //{ // var siloAddress = IPAddress.Loopback; // const int gatewayPort = 30000; // 10400 // clientBuilder.UseStaticClustering(new IPEndPoint(siloAddress, gatewayPort)); //} clientBuilder.UseConsulClustering(options => { options.Address = new Uri("http://127.0.0.1:8500"); }); return(clientBuilder.Configure <ClusterOptions>(config => { config.ClusterId = context.ClusterId; config.ServiceId = context.ServiceId; })); }
/// <summary> /// Configures the Cluster. /// </summary> /// <param name="builder">The <see cref="IClientBuilder"/>.</param> /// <param name="configuration">The <see cref="IConfiguration"/> which binds to <see cref="ClusterOptions"/>.</param> /// <returns>Returns the <see cref="IClientBuilder"/> so that more methods can be chained.</returns> public static IClientBuilder ConfigureCluster([NotNull] this IClientBuilder builder, [NotNull] IConfiguration configuration) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } if (configuration == null) { throw new ArgumentNullException(nameof(configuration)); } var configurationSection = configuration.GetSection(Constants.ClusterOptionsDefaultSectionName); if (configurationSection?.Exists() != true) { throw new ConfigurationErrorsException($"Configuration section '{Constants.ClusterOptionsDefaultSectionName}' is incorrect."); } builder.Configure <ClusterOptions>(configurationSection); return(builder); }
static IClientBuilder ConfigureDemoClustering(this IClientBuilder builder) => builder .Configure <ClusterOptions>(options => { options.ServiceId = DemoClusterId; options.ClusterId = DemoClusterId; }) .UseStaticClustering(options => options.Gateways.Add(new IPEndPoint(LocalhostSiloAddress, LocalhostGatewayPort).ToGatewayUri()));
public void Configure(IConfiguration configuration, IClientBuilder clientBuilder) { clientBuilder.Configure <GatewayOptions>(options => options.PreferedGatewayIndex = 0); }
public void Configure(IConfiguration configuration, IClientBuilder clientBuilder) { clientBuilder.Configure <StaticGatewayListProviderOptions>(options => options.Gateways = options.Gateways.Take(1).ToList()); }
public void Configure(IConfiguration configuration, IClientBuilder clientBuilder) { clientBuilder.Configure <GatewayOptions>( options => options.GatewayListRefreshPeriod = TimeSpan.FromMilliseconds(100)); }
public void Configure(IConfiguration configuration, IClientBuilder clientBuilder) { clientBuilder.Configure <ClientMessagingOptions>(options => options.ResponseTimeout = Timeout); }
public void Configure(IConfiguration configuration, IClientBuilder clientBuilder) { clientBuilder.Configure <TypeManagementOptions>(options => options.TypeMapRefreshInterval = ClientRefreshDelay); }
public void Configure(IConfiguration configuration, IClientBuilder clientBuilder) { clientBuilder.Configure <SiloMessagingOptions>(options => options.PropagateActivityId = true); }