Code refactor to reduce code complexity 48/4948/1
authorMohamed Abukar <abukar.mohamed@nokia.com>
Fri, 30 Oct 2020 12:48:08 +0000 (14:48 +0200)
committerMohamed Abukar <abukar.mohamed@nokia.com>
Fri, 30 Oct 2020 12:48:21 +0000 (14:48 +0200)
Change-Id: I67635b82957e784eea7288d56d7afd8fd92a7ede
Signed-off-by: Mohamed Abukar <abukar.mohamed@nokia.com>
cli/alarm-cli.go
go.mod
manager/cmd/manager.go

index b213ec6..1b630cd 100755 (executable)
@@ -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 (file)
--- 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
index f7ad81e..0036679 100755 (executable)
@@ -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