in prometheus/alert/client.go [208:229]
func (c *client) ReadRules(filePrefix, ruleName string) ([]rulefmt.Rule, error) {
filename := makeFilename(filePrefix)
c.fileLocks.RLock(filename)
defer c.fileLocks.RUnlock(filename)
if !c.ruleFileExists(filename) {
return []rulefmt.Rule{}, nil
}
ruleFile, err := c.readRuleFile(makeFilename(filePrefix))
if err != nil {
return []rulefmt.Rule{}, err
}
if ruleName == "" {
return ruleFile.Rules(), nil
}
foundRule := ruleFile.GetRule(ruleName)
if foundRule == nil {
return nil, fmt.Errorf("rule %s not found", ruleName)
}
return []rulefmt.Rule{*foundRule}, nil
}