@Override
public Collection<Alarm> getAlarms(ISnmpSession session, DeviceId deviceID) {
log.info("Getting alarms for BTI 7000 device at {}", deviceID);
Set<Alarm> alarms = new HashSet<>();
NetworkDevice networkDevice = new NetworkDevice(CLASS_REGISTRY,
session.getAddress().getHostAddress());
try {
session.walkDevice(networkDevice, Arrays.asList(
new OID[]{CLASS_REGISTRY.getClassToOidMap().get(ActAlarmTable.class)}));
IActAlarmTable deviceAlarms = (IActAlarmTable) networkDevice.getRootObject()
.getEntity(CLASS_REGISTRY.getClassToOidMap().get(ActAlarmTable.class));
if ((deviceAlarms != null) && (deviceAlarms.getActAlarmEntry() != null)
&& (!deviceAlarms.getActAlarmEntry().isEmpty())) {
deviceAlarms.getActAlarmEntry().values().stream().forEach((alarm) -> {
DefaultAlarm.Builder alarmBuilder = new DefaultAlarm.Builder(
deviceID, alarm.getActAlarmDescription(),
mapAlarmSeverity(alarm.getActAlarmSeverity()),
getLocalDateAndTime(alarm.getActAlarmDateAndTime(), null, null).getTime())
.forSource(AlarmEntityId.alarmEntityId("other:" + alarm.getActAlarmInstanceIdx()));
alarms.add(alarmBuilder.build());
});
}
log.info("Conditions retrieved: {}", deviceAlarms);
} catch (IOException ex) {
log.error("Error reading alarms for device {}.", deviceID, ex);
}
return alarms;
}