Exemple #1
0
        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();
		}
Exemple #3
0
 public static void EnsurePort([NotNull] Type applicationType, [NotNull] IVostokHostingEnvironmentBuilder builder)
 {
     if (RequirementDetector.RequiresPort(applicationType))
     {
         builder.SetPort(FreeTcpPortFinder.GetFreePort());
     }
 }
Exemple #4
0
        private void SetupWithServiceDiscovery(IVostokHostingEnvironmentBuilder builder)
        {
            builder.SetPort(1234);

            builder.SetupZooKeeperClient(zk => zk.UseInstance(new DevNullZooKeeperClient()));

            SetupCommons(builder);
        }
Exemple #5
0
        private void Setup(IVostokHostingEnvironmentBuilder builder)
        {
            builder.DisableClusterConfig();
            builder.DisableZooKeeper();
            builder.DisableHercules();

            SetupCommons(builder);
        }
Exemple #6
0
        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);
        }
Exemple #7
0
        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();
        }
Exemple #8
0
        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());
        }
Exemple #10
0
        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);
        }
Exemple #11
0
        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());
        }
Exemple #12
0
        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");
Exemple #23
0
        private static void SetupMultiHostApplication(IVostokHostingEnvironmentBuilder builder)
        {
            builder.SetupLog(log => log.SetupConsoleLog());

            builder.SetupShutdownTimeout(1.Milliseconds());
        }
Exemple #24
0
 /// <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)));
Exemple #26
0
 /// <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());
 }