in alertmanager/client/client.go [126:154]
func (c *client) UpdateReceiver(tenantID, receiverName string, newRec *config.Receiver) error {
c.Lock()
defer c.Unlock()
conf, err := c.readConfigFile()
if err != nil {
return err
}
newRec.Secure(tenantID)
receiverToUpdate := config.SecureReceiverName(receiverName, tenantID)
receiverIdx := -1
for idx, rec := range conf.Receivers {
if rec.Name == receiverToUpdate {
receiverIdx = idx
break
}
}
if receiverIdx < 0 {
return fmt.Errorf("Receiver '%s' not found", newRec.Name)
}
conf.Receivers[receiverIdx] = newRec
err = conf.Validate()
if err != nil {
return fmt.Errorf("Error updating receiver: %v", err)
}
return c.writeConfigFile(conf)
}