X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=cli%2Falarm-cli.go;h=775b806c6f2ba26c7d738a6c8734b15248b687fb;hb=refs%2Fchanges%2F71%2F4971%2F1;hp=b213ec6fae555d5dcdf326b16c2979ccf0673427;hpb=18fd03c7dd490347eeec3ed60e176fb3a8ccc3c7;p=ric-plt%2Falarm-go.git diff --git a/cli/alarm-cli.go b/cli/alarm-cli.go index b213ec6..775b806 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" ) @@ -69,7 +70,21 @@ func main() { SetVersion("1.0.0"). SetDescription("This CLI tool provides management interface to SEP alarm system") - // Get active alarms + registerActiveCmd(alarmManagerHost) + registerHistoryCmd(alarmManagerHost) + registerRaiseCmd(alarmManagerHost) + registerClearCmd(alarmManagerHost) + registerDefineCmd(alarmManagerHost) + registerUndefineCmd(alarmManagerHost) + registerConfigureCmd(alarmManagerHost) + registerPerfCmd(alarmManagerHost) + registerAlertCmd(alertManagerHost) + + // parse command-line arguments + commando.Parse(nil) +} + +func registerActiveCmd(alarmManagerHost string) { commando. Register("active"). SetShortDescription("Displays the SEP active alarms"). @@ -79,7 +94,9 @@ func main() { SetAction(func(args map[string]commando.ArgValue, flags map[string]commando.FlagValue) { displayAlarms(getAlarms(flags, "active"), false) }) +} +func registerHistoryCmd(alarmManagerHost string) { // Get alarm history commando. Register("history"). @@ -90,7 +107,9 @@ func main() { SetAction(func(args map[string]commando.ArgValue, flags map[string]commando.FlagValue) { displayAlarms(getAlarms(flags, "history"), true) }) +} +func registerRaiseCmd(alarmManagerHost string) { // Raise an alarm commando. Register("raise"). @@ -108,6 +127,9 @@ func main() { postAlarm(flags, readAlarmParams(flags, false), alarm.AlarmActionRaise, nil) }) +} + +func registerClearCmd(alarmManagerHost string) { // Clear an alarm commando. Register("clear"). @@ -123,6 +145,9 @@ func main() { postAlarm(flags, readAlarmParams(flags, true), alarm.AlarmActionClear, nil) }) +} + +func registerConfigureCmd(alarmManagerHost string) { // Configure an alarm manager commando. Register("configure"). @@ -134,6 +159,9 @@ func main() { SetAction(func(args map[string]commando.ArgValue, flags map[string]commando.FlagValue) { postAlarmConfig(flags) }) +} + +func registerDefineCmd(alarmManagerHost string) { // Create alarm definition commando. Register("define"). @@ -149,7 +177,10 @@ func main() { SetAction(func(args map[string]commando.ArgValue, flags map[string]commando.FlagValue) { postAlarmDefinition(flags) }) - // Delete alarm definition +} + +func registerUndefineCmd(alarmManagerHost string) { + // Delete alarm definition commando. Register("undefine"). SetShortDescription("Define alarm with given parameters"). @@ -159,7 +190,10 @@ func main() { SetAction(func(args map[string]commando.ArgValue, flags map[string]commando.FlagValue) { deleteAlarmDefinition(flags) }) - // Conduct performance test for alarm-go +} + +func registerPerfCmd(alarmManagerHost string) { + // Conduct performance test for alarm-go commando. Register("perf"). SetShortDescription("Conduct performance test with given parameters"). @@ -173,10 +207,12 @@ func main() { SetAction(func(args map[string]commando.ArgValue, flags map[string]commando.FlagValue) { conductperformancetest(flags) }) +} +func registerAlertCmd(alertManagerHost string) { // Get alerts from Prometheus Alert Manager commando. - Register("gapam"). + Register("alerts"). SetShortDescription("Get alerts from Prometheus Alert Manager"). AddFlag("active", "Active alerts in Prometheus Alert Manager", commando.Bool, true). AddFlag("inhibited", "Inhibited alerts in Prometheus Alert Manager", commando.Bool, true). @@ -187,9 +223,6 @@ func main() { SetAction(func(args map[string]commando.ArgValue, flags map[string]commando.FlagValue) { displayAlerts(flags) }) - - // parse command-line arguments - commando.Parse(nil) } func readAlarmParams(flags map[string]commando.FlagValue, clear bool) (a alarm.Alarm) { @@ -539,7 +572,7 @@ func readPerfAlarmDefinitionFromJson() error { } else { fmt.Printf("ReadPerfAlarmDefinitionFromJson: ioutil.ReadFile failed with error: %v, filename: %s\n", err, filename) fmt.Printf("ReadPerfAlarmDefinitionFromJson: current directory: %s\n", getCurrentDirectory()) - + return err } return nil @@ -616,6 +649,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 +698,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() @@ -708,4 +747,4 @@ func getCurrentDirectory() string { fmt.Println(err) } return dir -} \ No newline at end of file +}