@ -105,12 +105,14 @@ type TargetRetriever interface {
TargetsDropped ( ) map [ string ] [ ] * scrape . Target
}
type alertmanagerRetriever interface {
// AlertmanagerRetriever provides a list of all/dropped AlertManager URLs.
type AlertmanagerRetriever interface {
Alertmanagers ( ) [ ] * url . URL
DroppedAlertmanagers ( ) [ ] * url . URL
}
type rulesRetriever interface {
// RulesRetriever provides a list of active rules and alerts.
type RulesRetriever interface {
RuleGroups ( ) [ ] * rules . Group
AlertingRules ( ) [ ] * rules . AlertingRule
}
@ -174,8 +176,8 @@ type API struct {
QueryEngine * promql . Engine
targetRetriever func ( context . Context ) TargetRetriever
alertmanagerRetriever a lertmanagerRetriever
rulesRetriever r ulesRetriever
alertmanagerRetriever func ( context . Context ) A lertmanagerRetriever
rulesRetriever func ( context . Context ) R ulesRetriever
now func ( ) time . Time
config func ( ) config . Config
flagsMap map [ string ] string
@ -204,7 +206,7 @@ func NewAPI(
qe * promql . Engine ,
q storage . Queryable ,
tr func ( context . Context ) TargetRetriever ,
ar a lertmanagerRetriever,
ar func ( context . Context ) A lertmanagerRetriever,
configFunc func ( ) config . Config ,
flagsMap map [ string ] string ,
globalURLOptions GlobalURLOptions ,
@ -213,7 +215,7 @@ func NewAPI(
dbDir string ,
enableAdmin bool ,
logger log . Logger ,
rr r ulesRetriever,
rr func ( context . Context ) R ulesRetriever,
remoteReadSampleLimit int ,
remoteReadConcurrencyLimit int ,
remoteReadMaxBytesInFrame int ,
@ -847,8 +849,8 @@ type AlertmanagerTarget struct {
}
func ( api * API ) alertmanagers ( r * http . Request ) apiFuncResult {
urls := api . alertmanagerRetriever . Alertmanagers ( )
droppedURLS := api . alertmanagerRetriever . DroppedAlertmanagers ( )
urls := api . alertmanagerRetriever ( r . Context ( ) ) . Alertmanagers ( )
droppedURLS := api . alertmanagerRetriever ( r . Context ( ) ) . DroppedAlertmanagers ( )
ams := & AlertmanagerDiscovery { ActiveAlertmanagers : make ( [ ] * AlertmanagerTarget , len ( urls ) ) , DroppedAlertmanagers : make ( [ ] * AlertmanagerTarget , len ( droppedURLS ) ) }
for i , url := range urls {
ams . ActiveAlertmanagers [ i ] = & AlertmanagerTarget { URL : url . String ( ) }
@ -874,7 +876,7 @@ type Alert struct {
}
func ( api * API ) alerts ( r * http . Request ) apiFuncResult {
alertingRules := api . rulesRetriever . AlertingRules ( )
alertingRules := api . rulesRetriever ( r . Context ( ) ) . AlertingRules ( )
alerts := [ ] * Alert { }
for _ , alertingRule := range alertingRules {
@ -1021,7 +1023,7 @@ type recordingRule struct {
}
func ( api * API ) rules ( r * http . Request ) apiFuncResult {
ruleGroups := api . rulesRetriever . RuleGroups ( )
ruleGroups := api . rulesRetriever ( r . Context ( ) ) . RuleGroups ( )
res := & RuleDiscovery { RuleGroups : make ( [ ] * RuleGroup , len ( ruleGroups ) ) }
typeParam := strings . ToLower ( r . URL . Query ( ) . Get ( "type" ) )