package org.opennaas.extensions.roadm.wonesys.actionsets; import java.util.Date; import java.util.HashMap; import java.util.Map; import org.opennaas.core.resources.IModel; import org.opennaas.core.resources.alarms.ResourceAlarm; import org.opennaas.extensions.roadm.wonesys.protocols.alarms.WonesysAlarm; import org.opennaas.extensions.router.model.opticalSwitch.dwdm.proteus.ProteusOpticalSwitch; import org.opennaas.extensions.router.model.opticalSwitch.dwdm.proteus.cards.ProteusOpticalSwitchCard; import org.opennaas.extensions.router.model.opticalSwitch.dwdm.proteus.cards.ProteusOpticalSwitchCard.CardType; public class WonesysAlarmsDriver { public static ResourceAlarm wonesysAlarmToResourceAlarm(WonesysAlarm wonesysAlarm, IModel model, String resourceId) { // obtain missing data CardType cardType = getAlarmCardType(wonesysAlarm, (ProteusOpticalSwitch) model); String alarmCode = getAlarmCode(cardType, wonesysAlarm); Map<String, Object> properties = loadResourceAlarmProperties(wonesysAlarm, alarmCode, resourceId); return new ResourceAlarm(properties); } private static CardType getAlarmCardType(WonesysAlarm wonesysAlarm, ProteusOpticalSwitch model) { int chasis = (Integer) wonesysAlarm.getProperty(WonesysAlarm.CHASSIS_PROPERTY); int slot = (Integer) wonesysAlarm.getProperty(WonesysAlarm.SLOT_PROPERTY); ProteusOpticalSwitchCard card = model.getCard(chasis, slot); if (card == null) return null; return card.getCardType(); } private static String getAlarmCode(CardType cardType, WonesysAlarm wonesysAlarm) { if (cardType == null) return "UNKNOWN"; if (cardType.equals(CardType.ROADM_ADD) || cardType.equals(CardType.ROADM_DROP)) if (wonesysAlarm.getProperty(WonesysAlarm.ALARM_ID_PROPERTY) != null && wonesysAlarm.getProperty(WonesysAlarm.ALARM_ID_PROPERTY).equals("80")) return "CPLANCHANGED"; return "UNKNOWN"; } private static Map<String, Object> loadResourceAlarmProperties(WonesysAlarm wonesysAlarm, String alarmCode, String resourceId) { Map<String, Object> properties = new HashMap<String, Object>(); properties.put(ResourceAlarm.RESOURCE_ID_PROPERTY, resourceId); properties.put(ResourceAlarm.ALARM_CODE_PROPERTY, alarmCode); properties.put(ResourceAlarm.DESCRIPTION_PROPERTY, WonesysAlarmsDriver.getWonesysAlarmDescriptionByCode(alarmCode)); properties.put(ResourceAlarm.CAUSE_PROPERY, wonesysAlarm); properties.put(ResourceAlarm.ARRIVAL_TIME_PROPERTY, new Date().getTime()); return properties; } private static String getWonesysAlarmDescriptionByCode(String alarmCode) { if (alarmCode.equals("CPLANCHANGED")) { return "A channel has changed. Refresh connections in order to see applied changes."; } return "Unknown alarm received."; } }