func (opsgenie *OpsGenieNotifier) Notify(messages Messages) bool { overallStatus, pass, warn, fail := messages.Summary() client := new(ogcli.OpsGenieClient) client.SetApiKey(opsgenie.ApiKey) alertCli, cliErr := client.Alert() if cliErr != nil { log.Println("Opsgenie notification trouble with client") return false } for _, message := range messages { title := fmt.Sprintf("\n%s:%s:%s is %s.", message.Node, message.Service, message.Check, message.Status) content := fmt.Sprintf(header, opsgenie.ClusterName, overallStatus, fail, warn, pass) content += fmt.Sprintf("\n%s:%s:%s is %s.", message.Node, message.Service, message.Check, message.Status) content += fmt.Sprintf("\n%s", message.Output) // create the alert response, alertErr := opsgenie.Send(alertCli, title, content) if alertErr != nil { log.Println("Opsgenie notification trouble.", response.Status) return false } } log.Println("Opsgenie notification send.") return true }
//Notify sends messages to the endpoint notifier func (opsgenie *OpsGenieNotifier) Notify(messages Messages) bool { overallStatus, pass, warn, fail := messages.Summary() client := new(ogcli.OpsGenieClient) client.SetApiKey(opsgenie.ApiKey) alertCli, cliErr := client.Alert() if cliErr != nil { log.Println("Opsgenie notification trouble with client") return false } ok := true for _, message := range messages { title := fmt.Sprintf("\n%s:%s:%s is %s.", message.Node, message.Service, message.Check, message.Status) alias := opsgenie.createAlias(message) content := fmt.Sprintf(header, opsgenie.ClusterName, overallStatus, fail, warn, pass) content += fmt.Sprintf("\n%s:%s:%s is %s.", message.Node, message.Service, message.Check, message.Status) content += fmt.Sprintf("\n%s", message.Output) // create the alert switch { case message.IsCritical(): ok = opsgenie.createAlert(alertCli, title, content, alias) && ok case message.IsWarning(): ok = opsgenie.createAlert(alertCli, title, content, alias) && ok case message.IsPassing(): ok = opsgenie.closeAlert(alertCli, alias) && ok default: ok = false log.Warn("Message was not either IsCritical, IsWarning or IsPasssing. No notification was sent for ", alias) } } return ok }