diff options
Diffstat (limited to 'engine-d/src/main/java/org/onap/holmes/engine/dmaap')
-rw-r--r-- | engine-d/src/main/java/org/onap/holmes/engine/dmaap/DMaaPAlarmPolling.java | 35 | ||||
-rw-r--r-- | engine-d/src/main/java/org/onap/holmes/engine/dmaap/SubscriberAction.java | 7 |
2 files changed, 37 insertions, 5 deletions
diff --git a/engine-d/src/main/java/org/onap/holmes/engine/dmaap/DMaaPAlarmPolling.java b/engine-d/src/main/java/org/onap/holmes/engine/dmaap/DMaaPAlarmPolling.java index 935d2c8..1446b14 100644 --- a/engine-d/src/main/java/org/onap/holmes/engine/dmaap/DMaaPAlarmPolling.java +++ b/engine-d/src/main/java/org/onap/holmes/engine/dmaap/DMaaPAlarmPolling.java @@ -14,24 +14,32 @@ * limitations under the License. */ package org.onap.holmes.engine.dmaap; -import java.util.ArrayList; -import java.util.List; + import lombok.extern.slf4j.Slf4j; +import org.onap.holmes.common.api.entity.AlarmInfo; import org.onap.holmes.common.api.stat.VesAlarm; +import org.onap.holmes.common.exception.AlarmInfoException; import org.onap.holmes.common.exception.CorrelationException; import org.onap.holmes.dsa.dmaappolling.Subscriber; +import org.onap.holmes.engine.db.AlarmInfoDao; import org.onap.holmes.engine.manager.DroolsEngine; +import java.util.ArrayList; +import java.util.List; + @Slf4j public class DMaaPAlarmPolling implements Runnable { private Subscriber subscriber; private DroolsEngine droolsEngine; private volatile boolean isAlive = true; + private AlarmInfoDao alarmInfoDao; - public DMaaPAlarmPolling(Subscriber subscriber, DroolsEngine droolsEngine) { + + public DMaaPAlarmPolling(Subscriber subscriber, DroolsEngine droolsEngine, AlarmInfoDao alarmInfoDao) { this.subscriber = subscriber; this.droolsEngine = droolsEngine; + this.alarmInfoDao = alarmInfoDao; } public void run() { @@ -39,7 +47,14 @@ public class DMaaPAlarmPolling implements Runnable { List<VesAlarm> vesAlarmList = new ArrayList<>(); try { vesAlarmList = subscriber.subscribe(); - vesAlarmList.forEach(vesAlarm -> droolsEngine.putRaisedIntoStream(vesAlarm)); + vesAlarmList.forEach(vesAlarm -> { + try { + alarmInfoDao.saveAlarm(getAlarmInfo(vesAlarm)); + droolsEngine.putRaisedIntoStream(vesAlarm); + } catch(AlarmInfoException e) { + log.error("Failed to save alarm to database", e); + } + }); } catch (CorrelationException e) { log.error("Failed to process alarms. Sleep for 60 seconds to restart.", e); try { @@ -59,6 +74,18 @@ public class DMaaPAlarmPolling implements Runnable { } } } + private AlarmInfo getAlarmInfo(VesAlarm vesAlarm) { + AlarmInfo alarmInfo = new AlarmInfo(); + alarmInfo.setAlarmIsCleared(vesAlarm.getAlarmIsCleared()); + alarmInfo.setSourceName(vesAlarm.getSourceName()); + alarmInfo.setSourceId(vesAlarm.getSourceId()); + alarmInfo.setStartEpochMicroSec(vesAlarm.getStartEpochMicrosec()); + alarmInfo.setLastEpochMicroSec(vesAlarm.getLastEpochMicrosec()); + alarmInfo.setEventId(vesAlarm.getEventId()); + alarmInfo.setEventName(vesAlarm.getEventName()); + alarmInfo.setRootFlag(vesAlarm.getRootFlag()); + return alarmInfo; + } public void stopTask() { isAlive = false; diff --git a/engine-d/src/main/java/org/onap/holmes/engine/dmaap/SubscriberAction.java b/engine-d/src/main/java/org/onap/holmes/engine/dmaap/SubscriberAction.java index c2fa5b8..b02cbe4 100644 --- a/engine-d/src/main/java/org/onap/holmes/engine/dmaap/SubscriberAction.java +++ b/engine-d/src/main/java/org/onap/holmes/engine/dmaap/SubscriberAction.java @@ -23,7 +23,9 @@ import javax.annotation.PreDestroy; import javax.inject.Inject; import lombok.extern.slf4j.Slf4j; import org.jvnet.hk2.annotations.Service; +import org.onap.holmes.common.utils.DbDaoUtil; import org.onap.holmes.dsa.dmaappolling.Subscriber; +import org.onap.holmes.engine.db.AlarmInfoDao; import org.onap.holmes.engine.manager.DroolsEngine; @Service @@ -32,12 +34,15 @@ public class SubscriberAction { @Inject private DroolsEngine droolsEngine; + @Inject + private DbDaoUtil daoUtil; private HashMap<String, DMaaPAlarmPolling> pollingTasks = new HashMap<>(); public synchronized void addSubscriber(Subscriber subscriber) { String topic = subscriber.getTopic(); if (topic != null && !pollingTasks.containsKey(topic)) { - DMaaPAlarmPolling pollingTask = new DMaaPAlarmPolling(subscriber, droolsEngine); + AlarmInfoDao alarmInfoDao = daoUtil.getJdbiDaoByOnDemand(AlarmInfoDao.class); + DMaaPAlarmPolling pollingTask = new DMaaPAlarmPolling(subscriber, droolsEngine, alarmInfoDao); Thread thread = new Thread(pollingTask); thread.start(); pollingTasks.put(topic, pollingTask); |