"bytes"
"encoding/json"
"fmt"
- "github.com/jedib0t/go-pretty/table"
- "github.com/thatisuday/commando"
"io/ioutil"
"net/http"
"os"
+ "strconv"
"time"
- "strconv"
+
"gerrit.o-ran-sc.org/r/ric-plt/alarm-go/alarm"
+ "github.com/jedib0t/go-pretty/table"
+ "github.com/thatisuday/commando"
)
type CliAlarmDefinitions struct {
AlarmDefinitions []*alarm.AlarmDefinition `json:"alarmdefinitions"`
}
+type AlarmClient struct {
+ alarmer *alarm.RICAlarm
+}
+
func main() {
// configure commando
AddFlag("aai", "Application additional info", commando.String, "-").
AddFlag("host", "Alarm manager host address", commando.String, "localhost").
AddFlag("port", "Alarm manager host address", commando.String, "8080").
+ AddFlag("if", "http or rmr used as interface", commando.String, "http").
SetAction(func(args map[string]commando.ArgValue, flags map[string]commando.FlagValue) {
postAlarm(flags, readAlarmParams(flags, false), alarm.AlarmActionRaise)
})
AddFlag("iinfo", "Application identifying info", commando.String, nil).
AddFlag("host", "Alarm manager host address", commando.String, "localhost").
AddFlag("port", "Alarm manager host address", commando.String, "8080").
+ AddFlag("if", "http or rmr used as interface", commando.String, "http").
SetAction(func(args map[string]commando.ArgValue, flags map[string]commando.FlagValue) {
postAlarm(flags, readAlarmParams(flags, true), alarm.AlarmActionClear)
})
SetAction(func(args map[string]commando.ArgValue, flags map[string]commando.FlagValue) {
postAlarmConfig(flags)
})
- // Create alarm defenition
+ // Create alarm definition
commando.
Register("define").
SetShortDescription("Define alarm with given parameters").
SetAction(func(args map[string]commando.ArgValue, flags map[string]commando.FlagValue) {
postAlarmDefinition(flags)
})
- // Delete alarm defenition
+ // Delete alarm definition
commando.
Register("undefine").
SetShortDescription("Define alarm with given parameters").
if !clear {
a.AdditionalInfo, _ = flags["aai"].GetString()
}
-
return
}
}
func postAlarm(flags map[string]commando.FlagValue, a alarm.Alarm, action alarm.AlarmAction) {
+
+ // Check the interface to be used for raise or clear the alarm
+ rmr_or_http, _ := flags["if"].GetString()
+ if rmr_or_http == "rmr" {
+ alarmClient := NewAlarmClient("my-pod", "my-app")
+ if alarmClient == nil {
+ return
+ }
+
+ // Wait until RMR is up-and-running
+ for !alarmClient.alarmer.IsRMRReady() {
+ time.Sleep(100 * time.Millisecond)
+ }
+
+ if action == alarm.AlarmActionRaise {
+ alarmClient.alarmer.Raise(a)
+ }
+
+ if action == alarm.AlarmActionClear {
+ alarmClient.alarmer.Clear(a)
+ }
+ return
+ }
+
host, _ := flags["host"].GetString()
port, _ := flags["port"].GetString()
targetUrl := fmt.Sprintf("http://%s:%s/ric/v1/alarms", host, port)
return
}
}
+
+// NewAlarmClient returns a new AlarmClient.
+func NewAlarmClient(moId, appId string) *AlarmClient {
+ alarmInstance, err := alarm.InitAlarm(moId, appId)
+ if err == nil {
+ return &AlarmClient{
+ alarmer: alarmInstance,
+ }
+ }
+ fmt.Println("Failed to create alarmInstance", err)
+ return nil
+}
require (
gerrit.o-ran-sc.org/r/com/golog v0.0.1
+ gerrit.o-ran-sc.org/r/ric-plt/alarm-go.git/alarm v0.4.2 // indirect
gerrit.o-ran-sc.org/r/ric-plt/alarm-go/alarm v0.0.0-00010101000000-000000000000
gerrit.o-ran-sc.org/r/ric-plt/xapp-frame v0.0.0-00010101000000-000000000000
github.com/go-openapi/runtime v0.19.11
github.com/go-openapi/strfmt v0.19.4
github.com/gorilla/mux v1.7.1
- github.com/jedib0t/go-pretty v4.3.0+incompatible // indirect
+ 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