in prometheus/handlers/handlers.go [218:246]
func GetBulkAlertUpdateHandler(client alert.PrometheusAlertClient) func(c echo.Context) error {
return func(c echo.Context) error {
defer glog.Flush()
tenantID := c.Get(tenantIDParam).(string)
rules, err := decodeBulkRulesPostRequest(c)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, err.Error())
}
glog.Infof("Bulk Update Rules: Tenant: %s, rules: %d", tenantID, len(rules))
for _, rule := range rules {
err = alert.ValidateRule(rule)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, err.Error())
}
}
results, err := client.BulkUpdateRules(tenantID, rules)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, err.Error())
}
err = client.ReloadPrometheus()
if err != nil {
return echo.NewHTTPError(http.StatusInternalServerError, err.Error())
}
return c.JSON(http.StatusOK, results)
}
}