diff --git a/features/fm/alarm.go b/features/fm/alarm.go index e876279b..5a376527 100644 --- a/features/fm/alarm.go +++ b/features/fm/alarm.go @@ -16,6 +16,7 @@ import ( "be.ems/lib/log" "be.ems/lib/services" + "be.ems/src/framework/constants" "be.ems/src/framework/resp" "be.ems/src/framework/utils/date" neDataModel "be.ems/src/modules/network_data/model" @@ -23,6 +24,7 @@ import ( neFetchlink "be.ems/src/modules/network_element/fetch_link" neModel "be.ems/src/modules/network_element/model" neService "be.ems/src/modules/network_element/service" + traceService "be.ems/src/modules/trace/service" wsService "be.ems/src/modules/ws/service" ) @@ -386,7 +388,7 @@ func alarmForward(v Alarm) { } } -// alarmEventNew 清除告警事件 +// alarmEventClear 清除告警事件 func alarmEventClear(neInfo neModel.NeInfo, v Alarm) (neDataModel.AlarmEvent, error) { alarmEventService := neDataService.NewAlarmEvent // 检查网元告警ID是否唯一 @@ -469,6 +471,22 @@ func alarmEventNew(neInfo neModel.NeInfo, v Alarm) (neDataModel.AlarmEvent, erro insertId := alarmEventService.Insert(alarmEvent) if insertId > 0 { alarmEvent.ID = insertId + // 网元重启后,清除活动告警 + if v.AlarmCode == constants.ALARM_EVENT_REBOOT { + alarmService := neDataService.NewAlarm + rows := alarmService.Find(neDataModel.Alarm{ + NeType: neInfo.NeType, + NeId: neInfo.NeId, + AlarmStatus: "1", + }) + for _, v := range rows { + alarmService.AlarmClearByIds([]int64{v.ID}, "system") + } + } + // 网元重启后,有跟踪任务的需要重新补发启动任务 + if v.AlarmCode == constants.ALARM_EVENT_REBOOT { + traceService.NewTraceTask.RunUnstopped() + } return alarmEvent, nil } return neDataModel.AlarmEvent{}, fmt.Errorf("[%s %s] new alarm event fail", neInfo.NeType, neInfo.NeId)