@@ -48,25 +48,40 @@ type BucketAlertStore struct {
48
48
cfgProvider bucket.TenantConfigProvider
49
49
logger log.Logger
50
50
51
- usersScanner users.Scanner
51
+ usersScanner users.Scanner
52
+ userIndexUpdater * users.UserIndexUpdater
52
53
}
53
54
54
55
func NewBucketAlertStore (bkt objstore.InstrumentedBucket , userScannerCfg users.UsersScannerConfig , cfgProvider bucket.TenantConfigProvider , logger log.Logger , reg prometheus.Registerer ) (* BucketAlertStore , error ) {
55
56
alertBucket := bucket .NewPrefixedBucketClient (bkt , alertsPrefix )
56
57
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 )
58
60
if err != nil {
59
61
return nil , errors .Wrap (err , "unable to initialize alertmanager users scanner" )
60
62
}
63
+
64
+ // We hardcode strategy to be list so can ignore error.
65
+ baseScanner , _ := users .NewScanner (users.UsersScannerConfig {
66
+ Strategy : users .UserScanStrategyList ,
67
+ }, alertBucket , logger , regWithComponent )
68
+ userIndexUpdater := users .NewUserIndexUpdater (alertBucket , userScannerCfg .CleanUpInterval , baseScanner , regWithComponent )
69
+
61
70
return & BucketAlertStore {
62
- usersScanner : usersScanner ,
63
- alertsBucket : alertBucket ,
64
- amBucket : bucket .NewPrefixedBucketClient (bkt , alertmanagerPrefix ),
65
- cfgProvider : cfgProvider ,
66
- logger : logger ,
71
+ usersScanner : usersScanner ,
72
+ userIndexUpdater : userIndexUpdater ,
73
+ alertsBucket : alertBucket ,
74
+ amBucket : bucket .NewPrefixedBucketClient (bkt , alertmanagerPrefix ),
75
+ cfgProvider : cfgProvider ,
76
+ logger : logger ,
67
77
}, nil
68
78
}
69
79
80
+ // GetUserIndexUpdater implements alertstore.AlertStore.
81
+ func (s * BucketAlertStore ) GetUserIndexUpdater () * users.UserIndexUpdater {
82
+ return s .userIndexUpdater
83
+ }
84
+
70
85
// ListAllUsers implements alertstore.AlertStore.
71
86
func (s * BucketAlertStore ) ListAllUsers (ctx context.Context ) ([]string , error ) {
72
87
active , deleting , _ , err := s .usersScanner .ScanUsers (ctx )
0 commit comments