X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=cli%2Falarm-cli.go;h=0fd5b1859a3d17641d5475229c0471ece49b08d1;hb=14323a9bfca0e64e3710f790a849dbc984dc36dc;hp=97ccb912de48420cc675a94141faf72b4edc3450;hpb=541eb50ea18ab50528420dfe724fa3d12dc24914;p=ric-plt%2Falarm-go.git diff --git a/cli/alarm-cli.go b/cli/alarm-cli.go index 97ccb91..0fd5b18 100755 --- a/cli/alarm-cli.go +++ b/cli/alarm-cli.go @@ -14,6 +14,10 @@ import ( "gerrit.o-ran-sc.org/r/ric-plt/alarm-go/alarm" ) +type CliAlarmDefinitions struct { + AlarmDefinitions []*alarm.AlarmDefinition `json:"alarmdefinitions"` +} + func main() { // configure commando @@ -85,6 +89,19 @@ func main() { SetAction(func(args map[string]commando.ArgValue, flags map[string]commando.FlagValue) { postAlarmConfig(flags) }) + // Create alarm defenition + commando. + Register("define"). + SetShortDescription("Define alarm with given parameters"). + AddFlag("aid", "alarm identifier", commando.Int, nil). + AddFlag("atx", "alarm text", commando.String, nil). + AddFlag("ety", "event type", commando.String, nil). + AddFlag("oin", "operation instructions", commando.String, nil). + AddFlag("host", "Alarm manager host address", commando.String, "localhost"). + AddFlag("port", "Alarm manager host address", commando.String, "8080"). + SetAction(func(args map[string]commando.ArgValue, flags map[string]commando.FlagValue) { + postAlarmDefinition(flags) + }) // parse command-line arguments commando.Parse(nil) @@ -195,3 +212,32 @@ func postAlarmConfig(flags map[string]commando.FlagValue) { return } } + +func postAlarmDefinition(flags map[string]commando.FlagValue) { + host, _ := flags["host"].GetString() + port, _ := flags["port"].GetString() + alarmid, _ := flags["aid"].GetInt() + alarmtxt, _ := flags["atx"].GetString() + etype, _ := flags["ety"].GetString() + operation, _ := flags["oin"].GetString() + targetUrl := fmt.Sprintf("http://%s:%s/ric/v1/alarms/define", host, port) + + var alarmdefinition alarm.AlarmDefinition + alarmdefinition.AlarmId = alarmid + alarmdefinition.AlarmText = alarmtxt + alarmdefinition.EventType = etype + alarmdefinition.OperationInstructions = operation + + m := CliAlarmDefinitions{AlarmDefinitions: []*alarm.AlarmDefinition{&alarmdefinition}} + jsonData, err := json.Marshal(m) + if err != nil { + fmt.Println("json.Marshal failed: %v", err) + return + } + + resp, err := http.Post(targetUrl, "application/json", bytes.NewBuffer(jsonData)) + if err != nil || resp == nil { + fmt.Println("Couldn't fetch post alarm configuration due to error: %v", err) + return + } +}