@@ -48,25 +48,43 @@ 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
+ 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
+
61
73
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 ,
67
80
}, nil
68
81
}
69
82
83
+ // GetUserIndexUpdater implements alertstore.AlertStore.
84
+ func (s * BucketAlertStore ) GetUserIndexUpdater () * users.UserIndexUpdater {
85
+ return s .userIndexUpdater
86
+ }
87
+
70
88
// ListAllUsers implements alertstore.AlertStore.
71
89
func (s * BucketAlertStore ) ListAllUsers (ctx context.Context ) ([]string , error ) {
72
90
active , deleting , _ , err := s .usersScanner .ScanUsers (ctx )
0 commit comments