package org.opennaas.extensions.roadm.wonesys.protocols.alarms; import java.io.IOException; import java.util.Properties; import java.util.Timer; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.wonesys.emsModule.alarms.AlarmsControler; /** * * * @author isart * */ public class WonesysAlarmConfigurator implements IWonesysAlarmConfigurator { /** The logger **/ Log log = LogFactory.getLog(WonesysAlarmConfigurator.class); public static final int DEFAULT_ALARMS_PORT = 162; // SNMP traps wellknown // port public static final long DEFAULT_ALARM_WAITTIME = 20 * 1000; // 20 sec public static final String UNKNOWN_ALARM_STATUS = "UNKNOWN"; public static final String CONFIGURED_ALARM_STATUS = "CONFIGURED"; public static final String ACTIVE_ALARM_STATUS = "ACTIVE"; /** * Local port to receive SNMP traps through. */ private Integer alarmsPort; private Long alarmWaitTime; private AlarmsControler acontroller; private Timer scheduler; private String status = "UNKNOWN"; public WonesysAlarmConfigurator() { this.alarmsPort = DEFAULT_ALARMS_PORT; this.alarmWaitTime = DEFAULT_ALARM_WAITTIME; this.status = "CONFIGURED"; } /** * Allows alarms configuration through given properties. */ public void configureAlarms(Properties properties) { if (status.equals("ACTIVE")) { log.warn("Ignoring alarm configuration. Alarm harvesting is already active."); } else { String port_tmp = properties.getProperty(ALARM_PORT_PROPERTY_NAME); this.alarmsPort = Integer.parseInt(port_tmp); String alarmWaitTime_tmp = properties.getProperty(ALARM_WAITTIME_PROPERTY_NAME); this.alarmWaitTime = Long.parseLong(alarmWaitTime_tmp); status = "CONFIGURED"; } } public void enableAlarms() throws IOException { if (status.equals("ACTIVE")) { log.debug("Ignoring alarm activation. Alarm harvesting is already active."); } else { // create alarm listener // (opens a socket to given port and listens there) this.acontroller = new AlarmsControler(); this.acontroller.createAlarmListener(alarmsPort); // start alarm sync requester // periodically asks for alarms received in previously opened port this.scheduler = new Timer(); WonesysAlarmRequester requester = new WonesysAlarmRequester( this.acontroller); this.scheduler.schedule(requester, 0, this.alarmWaitTime); status = "ACTIVE"; log.info("Wonesys alarm harvesting active on port " + alarmsPort); } } public void disableAlarms() { scheduler.cancel(); status = "CONFIGURED"; log.debug("Wonesys alarm harvesting stoped"); } public String getStatus() { return status; } }