in alertmanager/client/client.go [157:188]
func (c *client) DeleteReceiver(tenantID, receiverName string) error {
c.Lock()
defer c.Unlock()
conf, err := c.readConfigFile()
if err != nil {
return err
}
receiverToDelete := config.SecureReceiverName(receiverName, tenantID)
foundReceiver := false
for idx, rec := range conf.Receivers {
if rec.Name == receiverToDelete {
conf.Receivers = append(conf.Receivers[:idx], conf.Receivers[idx+1:]...)
foundReceiver = true
break
}
}
if !foundReceiver {
return fmt.Errorf("receiver '%s' does not exist", receiverName)
}
if c.conf.DeleteRoutes {
conf.RemoveReceiverFromRoute(receiverToDelete)
} else {
if conf.SearchRoutesForReceiver(receiverToDelete) {
return fmt.Errorf("reciever '%s' referenced in route. Update routing tree and remove references before deleting this receiver", receiverName)
}
}
return c.writeConfigFile(conf)
}