public static void EnsureConfigurations([NotNull] Type applicationType, [NotNull] IVostokHostingEnvironmentBuilder builder) { void SetupSource(IConfigurationProvider provider, IConfigurationSource source, string[] scope, Type type) { if (scope.Any()) { source = source.ScopeTo(scope); } provider.SetupSourceFor(source, type); } builder.SetupConfiguration( b => b.CustomizeConfigurationContext( context => { foreach (var requirement in RequirementDetector.GetRequiredConfigurations(applicationType)) { SetupSource(context.ConfigurationProvider, context.ConfigurationSource, requirement.Scope, requirement.Type); } foreach (var requirement in RequirementDetector.GetRequiredSecretConfigurations(applicationType)) { SetupSource(context.SecretConfigurationProvider, context.SecretConfigurationSource, requirement.Scope, requirement.Type); } })); }
public void EnvironmentSetup(IVostokHostingEnvironmentBuilder builder) { var configurationProvider = new ConfigurationProvider(new ConfigurationProviderSettings()); var configurationSource = GetConfigurationSource(); configurationProvider.SetupSourceFor<UlearnConfiguration>(configurationSource); var ulearnConfiguration = configurationProvider.Get<UlearnConfiguration>(); var environment = ulearnConfiguration.Environment ?? "dev"; if (!ulearnConfiguration.DisableKonturServices) builder = builder.SetupForKontur(); builder.SetupApplicationIdentity(identityBuilder => identityBuilder .SetProject("ulearn") .SetApplication(application) .SetEnvironment(environment) .SetInstance(Environment.MachineName.Replace(".", "_").ToLower())) .SetupConfiguration(configurationBuilder => configurationBuilder.AddSecretSource(configurationSource)); if (ulearnConfiguration.Port != null) builder.SetPort(ulearnConfiguration.Port.Value); if (ulearnConfiguration.BaseUrl != null) builder.SetBaseUrlPath(ulearnConfiguration.BaseUrl); builder .DisableServiceBeacon() .SetupHerculesSink(sinkBuilder => SetupHerculesSink(sinkBuilder, ulearnConfiguration)) .SetupLog((logBuilder, context) => SetupLog(logBuilder, ulearnConfiguration)) ; if (ulearnConfiguration.ForceHttps ?? false) builder.SetHttpsScheme(); }
public static void EnsurePort([NotNull] Type applicationType, [NotNull] IVostokHostingEnvironmentBuilder builder) { if (RequirementDetector.RequiresPort(applicationType)) { builder.SetPort(FreeTcpPortFinder.GetFreePort()); } }
private void SetupWithServiceDiscovery(IVostokHostingEnvironmentBuilder builder) { builder.SetPort(1234); builder.SetupZooKeeperClient(zk => zk.UseInstance(new DevNullZooKeeperClient())); SetupCommons(builder); }
private void Setup(IVostokHostingEnvironmentBuilder builder) { builder.DisableClusterConfig(); builder.DisableZooKeeper(); builder.DisableHercules(); SetupCommons(builder); }
private void SetupEnvironment(IVostokHostingEnvironmentBuilder builder) { builder.SetupShutdownToken(ShutdownTokenSource.Token); builder.SetupShutdownTimeout(settings.ShutdownTimeout); RequirementsHelper.EnsurePort(settings.Application, builder); RequirementsHelper.EnsureConfigurations(settings.Application, builder); settings.EnvironmentSetup(builder); }
private void SetupEnvironment(IVostokHostingEnvironmentBuilder builder, int port) { builder.SetupApplicationIdentity( s => s.SetProject("Project") .SetSubproject("SubProject") .SetEnvironment("Env") .SetApplication("App") .SetInstance("Instance")) .SetPort(port) .SetupLog(s => s.AddLog(Log)); builder.DisableClusterConfig(); }
private static void SetupEnvironment(IVostokHostingEnvironmentBuilder builder) { builder.SetupApplicationIdentity( id => { id.SetProject("infra"); id.SetApplication("vostok-test"); id.SetEnvironment("dev"); id.SetInstance("the only one"); }); builder.SetupLog(log => log.SetupConsoleLog()); }
private static void MultiHostApplicationBuilder(IVostokHostingEnvironmentBuilder builder) { builder.SetupApplicationIdentity( id => { id.SetProject("good project"); id.SetApplication("vostok-test"); id.SetEnvironment("dev"); id.SetInstance("the only one"); }); builder.SetupLog(log => log.SetupConsoleLog()); builder.SetupShutdownTimeout(1.Milliseconds()); }
private void SetupEnvironment(IVostokHostingEnvironmentBuilder builder) { builder.SetupShutdownToken(ShutdownTokenSource.Token); builder.SetupShutdownTimeout(settings.ShutdownTimeout); builder.SetupHostExtensions( extensions => { var vostokHostShutdown = new VostokHostShutdown(ShutdownTokenSource); extensions.Add(vostokHostShutdown); extensions.Add(typeof(IVostokHostShutdown), vostokHostShutdown); }); RequirementsHelper.EnsurePort(settings.Application, builder); RequirementsHelper.EnsureConfigurations(settings.Application, builder); settings.EnvironmentSetup(builder); }
private void SetupCommons(IVostokHostingEnvironmentBuilder builder) { builder.SetupApplicationIdentity( id => { id.SetProject("Project"); id.SetApplication("App"); id.SetEnvironment("Environment"); id.SetInstance("Instance"); }); builder.SetupShutdownToken(shutdown.Token); builder.SetupShutdownTimeout(30.Seconds() + ShutdownConstants.CutAmountForExternalTimeout); builder.SetupLog(log => log.SetupConsoleLog()); }
private static void SetupEnvironment(IVostokHostingEnvironmentBuilder builder) { builder.SetupApplicationIdentity( id => { id.SetProject("infra"); id.SetApplication("vostok-test"); id.SetEnvironment("dev"); id.SetInstance("the only one"); }); builder.SetupLog(log => log.SetupConsoleLog()); builder.SetupConfiguration( config => { config.AddSource(new ObjectSource(new {})); config.AddSecretSource(new ObjectSource(new {})); }); builder.SetupClusterConfigClient(config => config.CustomizeSettings(setting => setting.EnableClusterSettings = false)); }
/// <summary> /// Applies given <paramref name="port"/> to <see cref="IServiceBeacon"/> configuration. /// </summary> public static IVostokHostingEnvironmentBuilder SetPort([NotNull] this IVostokHostingEnvironmentBuilder builder, int port) => builder.SetupServiceBeacon(serviceBeaconSetup => serviceBeaconSetup.SetupReplicaInfo(replicaInfoSetup => replicaInfoSetup.SetPort(port)));
/// <summary> /// Enables service beacon. /// </summary> public static IVostokHostingEnvironmentBuilder SetupServiceBeacon([NotNull] this IVostokHostingEnvironmentBuilder builder) => builder.SetupServiceBeacon(_ => {});
/// <summary> /// Disables service beacon. /// </summary> public static IVostokHostingEnvironmentBuilder DisableServiceBeacon([NotNull] this IVostokHostingEnvironmentBuilder builder) => builder.SetupServiceBeacon(serviceBeaconSetup => serviceBeaconSetup.Disable());
/// <summary> /// Disables ZooKeeper connection. /// </summary> public static IVostokHostingEnvironmentBuilder DisableZooKeeper([NotNull] this IVostokHostingEnvironmentBuilder builder) => builder.SetupZooKeeperClient(zk => zk.Disable());
/// <summary> /// Disables Hercules telemetry altogether. /// </summary> public static IVostokHostingEnvironmentBuilder DisableHercules([NotNull] this IVostokHostingEnvironmentBuilder builder) => builder.SetupHerculesSink(sink => sink.Disable());
/// <summary> /// Enables remote (cluster) settings for ClusterConfig client. /// </summary> public static IVostokHostingEnvironmentBuilder EnableClusterConfigRemoteSettings([NotNull] this IVostokHostingEnvironmentBuilder builder) => builder.SetupClusterConfigClient( clusterConfigBuilder => clusterConfigBuilder.CustomizeSettings( settings => { settings.EnableClusterSettings = true; }));
/// <summary> /// Enables ClusterConfig client in case it was disabled. /// </summary> public static IVostokHostingEnvironmentBuilder EnableClusterConfig([NotNull] this IVostokHostingEnvironmentBuilder builder) => builder .EnableClusterConfigLocalSettings() .EnableClusterConfigRemoteSettings();
/// <summary> /// Disables local settings for ClusterConfig client. /// </summary> public static IVostokHostingEnvironmentBuilder DisableClusterConfigLocalSettings([NotNull] this IVostokHostingEnvironmentBuilder builder) => builder.SetupClusterConfigClient( clusterConfigBuilder => clusterConfigBuilder.CustomizeSettings( settings => { settings.EnableLocalSettings = false; }));
/// <summary> /// Adds <see cref="LogConfigurationRule"/>s from built-in <see cref="IConfigurationSource"/> in given <paramref name="scope"/>. /// </summary> public static IVostokHostingEnvironmentBuilder AddLoggingRulesFromSettings([NotNull] this IVostokHostingEnvironmentBuilder builder, [NotNull] params string[] scope) => builder.SetupLog((log, context) => log.AddRules(context.ConfigurationSource.ScopeTo(scope)));
/// <summary> /// Enables HTTPS scheme in <see cref="IServiceBeacon"/> configuration. /// </summary> public static IVostokHostingEnvironmentBuilder SetHttpsScheme([NotNull] this IVostokHostingEnvironmentBuilder builder) => builder.SetUrlScheme("https");
private static void SetupMultiHostApplication(IVostokHostingEnvironmentBuilder builder) { builder.SetupLog(log => log.SetupConsoleLog()); builder.SetupShutdownTimeout(1.Milliseconds()); }
/// <summary> /// Applies given <paramref name="environment"/> name to <see cref="IServiceBeacon"/> configuration. Note the this environment might differ from app identity <see cref="IVostokApplicationIdentity.Environment"/>. /// </summary> public static IVostokHostingEnvironmentBuilder SetBeaconEnvironment([NotNull] this IVostokHostingEnvironmentBuilder builder, [NotNull] string environment) => builder.SetupServiceBeacon(beacon => beacon.SetupReplicaInfo(replica => replica.SetEnvironment(environment)));
/// <summary> /// Applies given base url <paramref name="path"/> to <see cref="IServiceBeacon"/> configuration. /// </summary> public static IVostokHostingEnvironmentBuilder SetBaseUrlPath([NotNull] this IVostokHostingEnvironmentBuilder builder, [NotNull] string path) => builder.SetupServiceBeacon(serviceBeaconSetup => serviceBeaconSetup.SetupReplicaInfo(replicaInfoSetup => replicaInfoSetup.SetUrlPath(path)));
/// <summary> /// Applies given <paramref name="application"/> name to <see cref="IServiceBeacon"/> configuration. Note the this application might differ from app identity <see cref="IVostokApplicationIdentity.Application"/>. /// </summary> public static IVostokHostingEnvironmentBuilder SetBeaconApplication([NotNull] this IVostokHostingEnvironmentBuilder builder, [NotNull] string application) => builder.SetupServiceBeacon(beacon => beacon.SetupReplicaInfo(replica => replica.SetApplication(application)));
/// <summary> /// Applies given url <paramref name="scheme"/> to <see cref="IServiceBeacon"/> configuration. /// </summary> public static IVostokHostingEnvironmentBuilder SetUrlScheme([NotNull] this IVostokHostingEnvironmentBuilder builder, [NotNull] string scheme) => builder.SetupServiceBeacon(serviceBeaconSetup => serviceBeaconSetup.SetupReplicaInfo(replicaInfoSetup => replicaInfoSetup.SetScheme(scheme)));
private static void MultiHostBuilder(IVostokHostingEnvironmentBuilder builder) { builder.SetupLog(log => log.SetupConsoleLog()); }