SeverityMajor Severity = "MAJOR"
SeverityMinor Severity = "MINOR"
SeverityWarning Severity = "WARNING"
- SeverityNormal Severity = "CLEARED"
+ SeverityCleared Severity = "CLEARED"
SeverityDefault Severity = "DEFAULT"
)
const (
AlarmActionRaise AlarmAction = "RAISE"
AlarmActionClear AlarmAction = "CLEAR"
- AlarmActionReraise AlarmAction = "RERAISE"
AlarmActionClearAll AlarmAction = "CLEARALL"
)
mutex sync.Mutex
}
+const (
+ RIC_ALARM_UPDATE = 13111
+ RIC_ALARM_QUERY = 13112
+)
+
// InitAlarm is the init routine which returns a new alarm instance.
// The MO and APP identities are given as a parameters.
// The identities are used when raising/clearing alarms, unless provided by the applications.
defer r.mutex.Unlock()
m := r.NewAlarmMessage(a, AlarmActionRaise)
- return r.SendMessage(m)
+ return r.sendAlarmUpdateReq(m)
}
// Clear a RIC alarm
defer r.mutex.Unlock()
m := r.NewAlarmMessage(a, AlarmActionClear)
- return r.SendMessage(m)
+ return r.sendAlarmUpdateReq(m)
}
// Re-raise a RIC alarm
r.mutex.Lock()
defer r.mutex.Unlock()
- m := r.NewAlarmMessage(a, AlarmActionReraise)
- return r.SendMessage(m)
+ m := r.NewAlarmMessage(a, AlarmActionClear)
+ if err := r.sendAlarmUpdateReq(m); err != nil {
+ return errors.New(fmt.Sprintf("Reraise failed: %v", err))
+ }
+
+ return r.sendAlarmUpdateReq(r.NewAlarmMessage(a, AlarmActionRaise))
}
// Clear all alarms raised by the application
a := r.NewAlarm(0, SeverityDefault, "", "")
m := r.NewAlarmMessage(a, AlarmActionClearAll)
- return r.SendMessage(m)
+ return r.sendAlarmUpdateReq(m)
}
-// Internal functions
func (r *RICAlarm) AlarmString(a AlarmMessage) string {
s := "MOId=%s AppId=%s SP=%d severity=%s IA=%s"
return fmt.Sprintf(s, a.ManagedObjectId, a.ApplicationId, a.SpecificProblem, a.PerceivedSeverity, a.IdentifyingInfo)
}
-func (r *RICAlarm) SendMessage(a AlarmMessage) error {
- log.Println("Sending alarm:", r.AlarmString(a))
+func (r *RICAlarm) sendAlarmUpdateReq(a AlarmMessage) error {
+ log.Println("Sending alarm: ", r.AlarmString(a))
payload, err := json.Marshal(a)
if err != nil {
meid := C.CString("ric")
defer C.free(unsafe.Pointer(meid))
- if state := C.rmrSend(r.rmrCtx, 1234, datap, C.int(len(payload)), meid); state != C.RMR_OK {
+ if state := C.rmrSend(r.rmrCtx, RIC_ALARM_UPDATE, datap, C.int(len(payload)), meid); state != C.RMR_OK {
+ log.Println("rmrSend failed with error: ", state)
return errors.New(fmt.Sprintf("rmrSend failed with error: %d", state))
}
return nil