| 31 | ) |
| 32 | |
| 33 | type DefaultMultiTenantManager struct { |
| 34 | cfg Config |
| 35 | notifierCfg *config.Config |
| 36 | managerFactory ManagerFactory |
| 37 | ruleEvalMetrics *RuleEvalMetrics |
| 38 | frontendPool *client.Pool |
| 39 | |
| 40 | mapper *mapper |
| 41 | |
| 42 | // Structs for holding per-user Prometheus rules Managers |
| 43 | // and a corresponding metrics struct |
| 44 | userManagerMtx sync.RWMutex |
| 45 | userManagers map[string]RulesManager |
| 46 | userManagerMetrics *ManagerMetrics |
| 47 | |
| 48 | // Per-user notifiers with separate queues. |
| 49 | notifiersMtx sync.Mutex |
| 50 | notifiers map[string]*rulerNotifier |
| 51 | notifiersDiscoveryMetrics map[string]discovery.DiscovererMetrics |
| 52 | |
| 53 | // Per-user externalLabels. |
| 54 | userExternalLabels *userExternalLabels |
| 55 | |
| 56 | // rules backup |
| 57 | rulesBackupManager *rulesBackupManager |
| 58 | |
| 59 | managersTotal prometheus.Gauge |
| 60 | lastReloadSuccessful *prometheus.GaugeVec |
| 61 | lastReloadSuccessfulTimestamp *prometheus.GaugeVec |
| 62 | configUpdatesTotal *prometheus.CounterVec |
| 63 | registry prometheus.Registerer |
| 64 | logger log.Logger |
| 65 | |
| 66 | ruleCache map[string][]*promRules.Group |
| 67 | ruleCacheMtx sync.RWMutex |
| 68 | syncRuleMtx sync.Mutex |
| 69 | |
| 70 | ruleGroupIterationFunc promRules.GroupEvalIterationFunc |
| 71 | } |
| 72 | |
| 73 | func NewDefaultMultiTenantManager(cfg Config, limits RulesLimits, managerFactory ManagerFactory, evalMetrics *RuleEvalMetrics, reg prometheus.Registerer, logger log.Logger) (*DefaultMultiTenantManager, error) { |
| 74 | ncfg, err := buildNotifierConfig(&cfg) |
nothing calls this directly
no outgoing calls
no test coverage detected