X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=adapter%2Fcmd%2Frestapi.go;h=756003e37d263b00a3d75231e09f12b54a394e64;hb=refs%2Fchanges%2F60%2F2760%2F3;hp=542e69d44b733ec51d8ed98d19e234d71265cc8b;hpb=61bdef5fe4a22986832d1e51846cbb011ac04074;p=ric-plt%2Falarm-go.git diff --git a/adapter/cmd/restapi.go b/adapter/cmd/restapi.go index 542e69d..756003e 100755 --- a/adapter/cmd/restapi.go +++ b/adapter/cmd/restapi.go @@ -25,24 +25,55 @@ import ( "net/http" "gerrit.o-ran-sc.org/r/ric-plt/alarm-go/alarm" + app "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp" ) +var alarmClient *alarm.RICAlarm + func (a *AlarmAdapter) GetActiveAlarms(w http.ResponseWriter, r *http.Request) { + app.Logger.Info("GetActiveAlarms: request received!") + w.Header().Set("Content-Type", "application/json") w.WriteHeader(http.StatusOK) response, _ := json.Marshal(a.activeAlarms) w.Write(response) } -func (a *AlarmAdapter) GenerateAlarm(w http.ResponseWriter, r *http.Request) { +func (a *AlarmAdapter) RaiseAlarm(w http.ResponseWriter, r *http.Request) { + a.doAction(w, r, true) +} + +func (a *AlarmAdapter) ClearAlarm(w http.ResponseWriter, r *http.Request) { + a.doAction(w, r, false) +} + +func (a *AlarmAdapter) doAction(w http.ResponseWriter, r *http.Request, raiseAlarm bool) { + app.Logger.Info("doAction: request received!") + if r.Body == nil { return } defer r.Body.Close() - var alarmData alarm.Alarm - if err := json.NewDecoder(r.Body).Decode(&alarmData); err == nil { - a.UpdateActiveAlarms(alarmData) - a.PostAlert(a.GenerateAlertLabels(alarmData)) + var d alarm.Alarm + err := json.NewDecoder(r.Body).Decode(&d) + if err != nil { + app.Logger.Error("json.NewDecoder failed: %v", err) + return + } + + if alarmClient == nil { + alarmClient, err = alarm.InitAlarm("RIC", "UEEC") + if err != nil { + app.Logger.Error("json.NewDecoder failed: %v", err) + return + } + } + + alarmData := alarmClient.NewAlarm(d.SpecificProblem, d.PerceivedSeverity, d.AdditionalInfo, d.IdentifyingInfo) + if raiseAlarm { + alarmClient.Raise(alarmData) + } else { + alarmClient.Clear(alarmData) } }