func()

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)
}