@@ -48,25 +48,43 @@ type BucketAlertStore struct {
4848 cfgProvider bucket.TenantConfigProvider
4949 logger log.Logger
5050
51- usersScanner users.Scanner
51+ usersScanner users.Scanner
52+ userIndexUpdater * users.UserIndexUpdater
5253}
5354
5455func NewBucketAlertStore (bkt objstore.InstrumentedBucket , userScannerCfg users.UsersScannerConfig , cfgProvider bucket.TenantConfigProvider , logger log.Logger , reg prometheus.Registerer ) (* BucketAlertStore , error ) {
5556 alertBucket := bucket .NewPrefixedBucketClient (bkt , alertsPrefix )
5657
57- usersScanner , err := users .NewScanner (userScannerCfg , alertBucket , logger , extprom .WrapRegistererWith (prometheus.Labels {"component" : "alertmanager" }, reg ))
58+ regWithComponent := extprom .WrapRegistererWith (prometheus.Labels {"component" : "alertmanager" }, reg )
59+ usersScanner , err := users .NewScanner (userScannerCfg , alertBucket , logger , regWithComponent )
5860 if err != nil {
5961 return nil , errors .Wrap (err , "unable to initialize alertmanager users scanner" )
6062 }
63+
64+ var userIndexUpdater * users.UserIndexUpdater
65+ if userScannerCfg .Strategy == users .UserScanStrategyUserIndex {
66+ // We hardcode strategy to be list so can ignore error.
67+ baseScanner , _ := users .NewScanner (users.UsersScannerConfig {
68+ Strategy : users .UserScanStrategyList ,
69+ }, alertBucket , logger , regWithComponent )
70+ userIndexUpdater = users .NewUserIndexUpdater (alertBucket , userScannerCfg .CleanUpInterval , baseScanner , regWithComponent )
71+ }
72+
6173 return & BucketAlertStore {
62- usersScanner : usersScanner ,
63- alertsBucket : alertBucket ,
64- amBucket : bucket .NewPrefixedBucketClient (bkt , alertmanagerPrefix ),
65- cfgProvider : cfgProvider ,
66- logger : logger ,
74+ alertsBucket : alertBucket ,
75+ amBucket : bucket .NewPrefixedBucketClient (bkt , alertmanagerPrefix ),
76+ cfgProvider : cfgProvider ,
77+ logger : logger ,
78+ usersScanner : usersScanner ,
79+ userIndexUpdater : userIndexUpdater ,
6780 }, nil
6881}
6982
83+ // GetUserIndexUpdater implements alertstore.AlertStore.
84+ func (s * BucketAlertStore ) GetUserIndexUpdater () * users.UserIndexUpdater {
85+ return s .userIndexUpdater
86+ }
87+
7088// ListAllUsers implements alertstore.AlertStore.
7189func (s * BucketAlertStore ) ListAllUsers (ctx context.Context ) ([]string , error ) {
7290 active , deleting , _ , err := s .usersScanner .ScanUsers (ctx )
0 commit comments