func()

in prometheus/alert/client.go [180:206]


func (c *client) UpdateRule(filePrefix string, rule rulefmt.Rule) error {
	filename := makeFilename(filePrefix)

	c.fileLocks.Lock(filename)
	defer c.fileLocks.Unlock(filename)

	ruleFile, err := c.readRuleFile(filename)
	if err != nil {
		return fmt.Errorf("rule file %s does not exist: %v", filename, err)
	}

	err = SecureRule(c.tenancy.RestrictQueries, c.tenancy.RestrictorLabel, filePrefix, &rule)
	if err != nil {
		return fmt.Errorf("cannot parse expression: \"%s\", %v", rule.Expr, err)
	}

	err = ruleFile.ReplaceRule(rule)
	if err != nil {
		return err
	}

	err = c.writeRuleFile(ruleFile, filename)
	if err != nil {
		return err
	}
	return nil
}