diff --git a/consul/client.go b/consul/client.go index 5afe93c6..6295bdb9 100644 --- a/consul/client.go +++ b/consul/client.go @@ -275,11 +275,10 @@ func (c *ConsulAlertClient) UpdateCheckData() { } if settodelete { log.Printf("Reminder %s %s needs to be deleted, stale", node, check) - c.DeleteReminder(node, check) + c.DeleteReminder(node, check) } } - for _, health := range healths { node := health.Node @@ -656,26 +655,31 @@ func (c *ConsulAlertClient) GetProfileInfo(node, serviceID, checkID string) (not // IsBlacklisted gets the blacklist status of check func (c *ConsulAlertClient) IsBlacklisted(check *Check) bool { + blacklistExist := func() bool { + kvPairs, _, err := c.api.KV().List("consul-alerts/config/checks/blacklist/", nil) + return len(kvPairs) != 0 && err == nil + } + node := check.Node nodeCheckKey := fmt.Sprintf("consul-alerts/config/checks/blacklist/nodes/%s", node) - nodeBlacklisted := c.CheckKeyExists(nodeCheckKey) + nodeBlacklisted := func() bool { return c.CheckKeyExists(nodeCheckKey) } service := "_" - serviceBlacklisted := false + serviceBlacklisted := func() bool { return false } if check.ServiceID != "" { service = check.ServiceID serviceCheckKey := fmt.Sprintf("consul-alerts/config/checks/blacklist/services/%s", service) - serviceBlacklisted = c.CheckKeyExists(serviceCheckKey) + serviceBlacklisted = func() bool { return c.CheckKeyExists(serviceCheckKey) } } - checkId := check.CheckID - checkCheckKey := fmt.Sprintf("consul-alerts/config/checks/blacklist/checks/%s", checkId) - checkBlacklisted := c.CheckKeyExists(checkCheckKey) + checkID := check.CheckID + checkCheckKey := fmt.Sprintf("consul-alerts/config/checks/blacklist/checks/%s", checkID) + checkBlacklisted := func() bool { return c.CheckKeyExists(checkCheckKey) } - singleKey := fmt.Sprintf("consul-alerts/config/checks/blacklist/single/%s/%s/%s", node, service, checkId) - singleBlacklisted := c.CheckKeyExists(singleKey) + singleKey := fmt.Sprintf("consul-alerts/config/checks/blacklist/single/%s/%s/%s", node, service, checkID) + singleBlacklisted := func() bool { return c.CheckKeyExists(singleKey) } - return nodeBlacklisted || serviceBlacklisted || checkBlacklisted || singleBlacklisted + return blacklistExist() && (nodeBlacklisted() || serviceBlacklisted() || checkBlacklisted() || singleBlacklisted()) } func (c *ConsulAlertClient) CheckKeyExists(key string) bool {