Пример #1
0
        internal ClusterConfigSource(
            [NotNull] IClusterConfigClient client,
            [NotNull] string prefix,
            [NotNull] IList <ISettingsNodeConverter> converters)
        {
            this.client     = client;
            this.converters = converters;

            Prefix = prefix;
        }
        public void SetUp()
        {
            client     = Substitute.For <IClusterConfigClient>();
            converters = Enumerable.Range(0, 2).Select(_ => Substitute.For <ISettingsNodeConverter>()).ToArray();

            foreach (var converter in converters)
            {
                converter.NeedToConvert(null).ReturnsForAnyArgs(true);
            }

            source = new ClusterConfigSource(client, Prefix, converters);
        }
Пример #3
0
        internal VostokHostingEnvironment(
            [NotNull] HostingShutdown hostingShutdown,
            [NotNull] ApplicationShutdown applicationShutdown,
            [NotNull] IVostokApplicationIdentity applicationIdentity,
            [NotNull] IVostokApplicationLimits applicationLimits,
            [NotNull] Func <IVostokApplicationReplicationInfo> replicationInfoProvider,
            [NotNull] IVostokApplicationMetrics metrics,
            [NotNull] IVostokApplicationDiagnostics diagnostics,
            [NotNull] ILog log,
            [NotNull] ITracer tracer,
            [NotNull] IHerculesSink herculesSink,
            [NotNull] IConfigurationSource configurationSource,
            [NotNull] IConfigurationSource secretConfigurationSource,
            [NotNull] IConfigurationProvider configurationProvider,
            [NotNull] IConfigurationProvider secretConfigurationProvider,
            [NotNull] IClusterConfigClient clusterConfigClient,
            [NotNull] IServiceBeacon serviceBeacon,
            [CanBeNull] int?port,
            [NotNull] IServiceLocator serviceLocator,
            [NotNull] IContextGlobals contextGlobals,
            [NotNull] IContextProperties contextProperties,
            [NotNull] IContextConfiguration contextConfiguration,
            [NotNull] IDatacenters datacenters,
            [NotNull] IVostokHostExtensions hostExtensions,
            [NotNull] Action onDispose)
        {
            this.hostingShutdown         = hostingShutdown ?? throw new ArgumentNullException(nameof(hostingShutdown));
            this.applicationShutdown     = applicationShutdown ?? throw new ArgumentNullException(nameof(applicationShutdown));
            this.replicationInfoProvider = replicationInfoProvider ?? throw new ArgumentNullException(nameof(replicationInfoProvider));
            this.onDispose = onDispose ?? throw new ArgumentNullException(nameof(onDispose));

            ApplicationIdentity = applicationIdentity ?? throw new ArgumentNullException(nameof(applicationIdentity));
            ApplicationLimits   = applicationLimits ?? throw new ArgumentNullException(nameof(applicationLimits));
            Metrics             = metrics ?? throw new ArgumentNullException(nameof(metrics));
            Diagnostics         = diagnostics ?? throw new ArgumentNullException(nameof(diagnostics));
            Log                         = log ?? throw new ArgumentNullException(nameof(log));
            Tracer                      = tracer ?? throw new ArgumentNullException(nameof(tracer));
            HerculesSink                = herculesSink ?? throw new ArgumentNullException(nameof(herculesSink));
            ConfigurationSource         = configurationSource ?? throw new ArgumentNullException(nameof(configurationSource));
            ConfigurationProvider       = configurationProvider ?? throw new ArgumentNullException(nameof(configurationProvider));
            SecretConfigurationSource   = secretConfigurationSource ?? throw new ArgumentNullException(nameof(secretConfigurationSource));
            SecretConfigurationProvider = secretConfigurationProvider ?? throw new ArgumentNullException(nameof(secretConfigurationProvider));
            ClusterConfigClient         = clusterConfigClient ?? throw new ArgumentNullException(nameof(clusterConfigClient));
            ServiceBeacon               = serviceBeacon ?? throw new ArgumentNullException(nameof(serviceBeacon));
            Port                        = port;
            ServiceLocator              = serviceLocator ?? throw new ArgumentNullException(nameof(serviceLocator));
            ContextGlobals              = contextGlobals ?? throw new ArgumentNullException(nameof(contextGlobals));
            ContextProperties           = contextProperties ?? throw new ArgumentNullException(nameof(contextProperties));
            ContextConfiguration        = contextConfiguration ?? throw new ArgumentNullException(nameof(contextConfiguration));
            Datacenters                 = datacenters ?? throw new ArgumentNullException(nameof(datacenters));
            HostExtensions              = hostExtensions ?? throw new ArgumentNullException(nameof(hostExtensions));
        }
Пример #4
0
 public ConfigurationContext(
     IConfigurationSource configurationSource,
     IConfigurationSource secretConfigurationSource,
     IConfigurationProvider configurationProvider,
     IConfigurationProvider secretConfigurationProvider,
     IClusterConfigClient clusterConfigClient)
 {
     ConfigurationSource         = configurationSource;
     ConfigurationProvider       = configurationProvider;
     SecretConfigurationSource   = secretConfigurationSource;
     SecretConfigurationProvider = secretConfigurationProvider;
     ClusterConfigClient         = clusterConfigClient;
 }
Пример #5
0
 public EnvironmentSetupContext(
     ILog log,
     IConfigurationSource configurationSource,
     IConfigurationSource secretConfigurationSource,
     IConfigurationProvider configurationProvider,
     IConfigurationProvider secretConfigurationProvider,
     IClusterConfigClient clusterConfigClient)
 {
     Log = log.ForContext <VostokHostingEnvironment>();
     ConfigurationSource         = configurationSource;
     ConfigurationProvider       = configurationProvider;
     SecretConfigurationSource   = secretConfigurationSource;
     SecretConfigurationProvider = secretConfigurationProvider;
     ClusterConfigClient         = clusterConfigClient;
 }
Пример #6
0
        public static IEnumerable <Substitution> Provide(
            IVostokApplicationIdentity identity,
            IClusterConfigClient clusterConfig,
            IServiceBeacon beacon,
            IDatacenters datacenters)
        {
            if (identity != null)
            {
                yield return(new Substitution(VostokConfigurationPlaceholders.IdentityProject, () => identity.Project));

                yield return(new Substitution(VostokConfigurationPlaceholders.IdentitySubproject, () => identity.Subproject));

                yield return(new Substitution(VostokConfigurationPlaceholders.IdentityEnvironment, () => identity.Environment));

                yield return(new Substitution(VostokConfigurationPlaceholders.IdentityApplication, () => identity.Application));

                yield return(new Substitution(VostokConfigurationPlaceholders.IdentityInstance, () => identity.Instance));
            }

            if (beacon != null)
            {
                yield return(new Substitution(VostokConfigurationPlaceholders.ServiceDiscoveryEnvironment, () => beacon.ReplicaInfo.Environment));

                yield return(new Substitution(VostokConfigurationPlaceholders.ServiceDiscoveryApplication, () => beacon.ReplicaInfo.Application));
            }

            if (datacenters != null)
            {
                yield return(new Substitution(VostokConfigurationPlaceholders.LocalDatacenter, datacenters.GetLocalDatacenter));
            }

            if (clusterConfig != null)
            {
                yield return(new Substitution(VostokConfigurationPlaceholders.ClusterConfigZone, () => (clusterConfig as ClusterConfigClient)?.Zone ?? "default"));
            }
        }
        private static void InitializeMetricsProviderIfNeeded(IClusterClientConfiguration configuration, IMetricContext?metricContext, IClusterConfigClient clusterConfigClient)
        {
            if (metricContext == null && MetricContextProvider.IsConfigured)
            {
                metricContext = MetricContextProvider.Get();
            }

            if (metricContext != null)
            {
                var environment = clusterConfigClient.Get(SingularConstants.EnvironmentNamePath)?.Value;
                if (environment == SingularConstants.ProdEnvironment || environment == SingularConstants.CloudEnvironment)
                {
                    var metricsProvider = MetricsProviderCache.Get(metricContext, environment, SloMetricsClientName);
                    configuration.AddRequestModule(new MetricsModule(metricsProvider));
                }
            }
        }
 public ClusterConfigSourceSettings([NotNull] IClusterConfigClient client, [NotNull] string prefix)
 {
     Client = client ?? throw new ArgumentNullException(nameof(client));
     Prefix = prefix ?? throw new ArgumentNullException(nameof(prefix));
 }
 public ClusterConfigSourceWithParsers([NotNull] IClusterConfigClient client, [NotNull] string prefix)
     : base(new ClusterConfigSourceSettings(client, prefix)
 public TopologiesResolverSettings(IClusterConfigClient clusterConfigClient, IServiceDiscoveryManager serviceDiscoveryClient)
 {
     ClusterConfigClient    = clusterConfigClient;
     ServiceDiscoveryClient = serviceDiscoveryClient;
 }
Пример #11
0
 public CcTopologiesProvider(IClusterConfigClient client, ILog log)
 {
     this.client = client;
     parser      = new ClusterConfigReplicasParser(log.WithMinimumLevel(LogLevel.Warn));
 }