Ejemplo n.º 1
0
        /// <summary>
        /// Schedules a rule to be run over different environments.
        /// </summary>
        private void OncePerEnvironment(Func <MultiStampRuleArguments, IEnumerable <Instantiation> > generator, Watchlist watchlist)
        {
            var tableNames = watchlist.Entries.Select(kvp => (kvp.Key.Environment, kvp.Value.CacheTableName)).Distinct()
                             .ToDictionary(keySelector: pair => pair.Environment, elementSelector: pair => pair.CacheTableName);

            foreach (var kvp in tableNames)
            {
                var configuration = new MultiStampRuleConfiguration(
                    _clock,
                    _logger,
                    _alertNotifier,
                    _kustoClient,
                    _icmClient,
                    _configuration.Environments[kvp.Key].KustoDatabaseName,
                    kvp.Value,
                    kvp.Key,
                    watchlist);

                var request = new MultiStampRuleArguments
                {
                    BaseConfiguration    = configuration,
                    EnvironmentResources = _environmentResources[kvp.Key],
                };

                foreach (var rule in generator(request))
                {
                    Contract.AssertNotNull(rule.Rule);
                    _scheduler.Add(rule.Rule, rule.PollingPeriod, rule.ForceRun);
                }
            }
        }
Ejemplo n.º 2
0
 public MultipleStampRuleBase(MultiStampRuleConfiguration configuration)
     : base(configuration)
 {
     _configuration = configuration;
 }
Ejemplo n.º 3
0
 public Configuration(MultiStampRuleConfiguration kustoRuleConfiguration)
     : base(kustoRuleConfiguration)
 {
 }
Ejemplo n.º 4
0
 public Configuration(MultiStampRuleConfiguration other) : base(other)
 {
 }