From: Mohamed Abukar Date: Fri, 30 Oct 2020 12:48:08 +0000 (+0200) Subject: Code refactor to reduce code complexity X-Git-Tag: alarm/v0.5.0~10 X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=commitdiff_plain;h=e92822cba904bab04c5c71a9ffa99a1d89409640;p=ric-plt%2Falarm-go.git Code refactor to reduce code complexity Change-Id: I67635b82957e784eea7288d56d7afd8fd92a7ede Signed-off-by: Mohamed Abukar --- diff --git a/cli/alarm-cli.go b/cli/alarm-cli.go index b213ec6..1b630cd 100755 --- a/cli/alarm-cli.go +++ b/cli/alarm-cli.go @@ -17,6 +17,7 @@ import ( "github.com/jedib0t/go-pretty/table" "github.com/prometheus/alertmanager/api/v2/client" "github.com/prometheus/alertmanager/api/v2/client/alert" + "github.com/prometheus/alertmanager/api/v2/models" "github.com/spf13/viper" "github.com/thatisuday/commando" ) @@ -616,6 +617,39 @@ func raiseClearAlarmOverPeriod(alarmobject *alarm.Alarm, flags map[string]comman } } +func displaySingleAlert(t table.Writer, gettableAlert *models.GettableAlert) { + t.AppendRow([]interface{}{"------------------------------------"}) + for key, item := range gettableAlert.Annotations { + t.AppendRow([]interface{}{key, item}) + } + if gettableAlert.EndsAt != nil { + t.AppendRow([]interface{}{"EndsAt", *gettableAlert.EndsAt}) + } + if gettableAlert.Fingerprint != nil { + t.AppendRow([]interface{}{"Fingerprint", *gettableAlert.Fingerprint}) + } + for key, item := range gettableAlert.Receivers { + if gettableAlert.Receivers != nil { + t.AppendRow([]interface{}{key, *item.Name}) + } + } + if gettableAlert.StartsAt != nil { + t.AppendRow([]interface{}{"StartsAt", *gettableAlert.StartsAt}) + } + if gettableAlert.Status != nil { + t.AppendRow([]interface{}{"InhibitedBy", gettableAlert.Status.InhibitedBy}) + t.AppendRow([]interface{}{"SilencedBy", gettableAlert.Status.SilencedBy}) + t.AppendRow([]interface{}{"State", *gettableAlert.Status.State}) + } + if gettableAlert.UpdatedAt != nil { + t.AppendRow([]interface{}{"UpdatedAt", *gettableAlert.UpdatedAt}) + } + t.AppendRow([]interface{}{"GeneratorURL", gettableAlert.Alert.GeneratorURL}) + for key, item := range gettableAlert.Alert.Labels { + t.AppendRow([]interface{}{key, item}) + } +} + func displayAlerts(flags map[string]commando.FlagValue) { resp, err := getAlerts(flags) if err != nil { @@ -632,38 +666,11 @@ func displayAlerts(flags map[string]commando.FlagValue) { t.SetOutputMirror(os.Stdout) t.AppendHeader(table.Row{"Alerts from Prometheus Alert Manager"}) for _, gettableAlert := range resp.Payload { - t.AppendRow([]interface{}{"------------------------------------"}) - if gettableAlert != nil { - for key, item := range gettableAlert.Annotations { - t.AppendRow([]interface{}{key, item}) - } - if gettableAlert.EndsAt != nil { - t.AppendRow([]interface{}{"EndsAt", *gettableAlert.EndsAt}) - } - if gettableAlert.Fingerprint != nil { - t.AppendRow([]interface{}{"Fingerprint", *gettableAlert.Fingerprint}) - } - for key, item := range gettableAlert.Receivers { - if gettableAlert.Receivers != nil { - t.AppendRow([]interface{}{key, *item.Name}) - } - } - if gettableAlert.StartsAt != nil { - t.AppendRow([]interface{}{"StartsAt", *gettableAlert.StartsAt}) - } - if gettableAlert.Status != nil { - t.AppendRow([]interface{}{"InhibitedBy", gettableAlert.Status.InhibitedBy}) - t.AppendRow([]interface{}{"SilencedBy", gettableAlert.Status.SilencedBy}) - t.AppendRow([]interface{}{"State", *gettableAlert.Status.State}) - } - if gettableAlert.UpdatedAt != nil { - t.AppendRow([]interface{}{"UpdatedAt", *gettableAlert.UpdatedAt}) - } - t.AppendRow([]interface{}{"GeneratorURL", gettableAlert.Alert.GeneratorURL}) - for key, item := range gettableAlert.Alert.Labels { - t.AppendRow([]interface{}{key, item}) - } + if gettableAlert == nil { + continue } + + displaySingleAlert(t, gettableAlert) } t.SetStyle(table.StyleColoredBright) t.Render() diff --git a/go.mod b/go.mod index b6ae937..0fb43fa 100644 --- a/go.mod +++ b/go.mod @@ -20,6 +20,8 @@ require ( github.com/gorilla/mux v1.7.1 github.com/jedib0t/go-pretty v4.3.0+incompatible github.com/mattn/go-runewidth v0.0.9 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.1 // indirect github.com/prometheus/alertmanager v0.20.0 github.com/spf13/viper v1.6.2 github.com/stretchr/testify v1.5.1 diff --git a/manager/cmd/manager.go b/manager/cmd/manager.go index f7ad81e..0036679 100755 --- a/manager/cmd/manager.go +++ b/manager/cmd/manager.go @@ -103,24 +103,27 @@ func (a *AlarmManager) ProcessAlarm(m *AlarmNotification) (*alert.PostAlertsOK, // Clear alarm if found from active alarm list if m.AlarmAction == alarm.AlarmActionClear { - if found { - if a.ProcessClearAlarm(m, alarmDef, idx) == false { - return nil, nil - } - if a.postClear { - a.mutex.Unlock() + if !found { + app.Logger.Info("No matching active alarm found, suppressing ...") + a.mutex.Unlock() + return nil, nil + } - // Send alarm notification to NOMA, if enabled - if app.Config.GetBool("controls.noma.enabled") { - m.PerceivedSeverity = alarm.SeverityCleared - return a.PostAlarm(m) - } - return a.PostAlert(a.GenerateAlertLabels(m.Alarm, AlertStatusResolved, m.AlarmTime)) - } + if a.ProcessClearAlarm(m, alarmDef, idx) == false { + return nil, nil } - app.Logger.Info("No matching active alarm found, suppressing ...") + a.mutex.Unlock() - return nil, nil + if !a.postClear { + app.Logger.Info("Sending clear notification disabled!") + return nil, nil + } + + // Send alarm notification to NOMA, if enabled + if app.Config.GetBool("controls.noma.enabled") { + m.PerceivedSeverity = alarm.SeverityCleared + return a.PostAlarm(m) + } } // New alarm -> update active alarms and post to Alert Manager