From 314ba72053fb1628d018dbbeae94b96d7219c531 Mon Sep 17 00:00:00 2001 From: Jesse White Date: Tue, 30 Oct 2012 11:41:38 -0400 Subject: [PATCH 1/3] Allow the TicketerServiceLayer to be configured and reloaded. --- .../src/main/filtered/etc/opennms.properties | 6 ++++ .../ticketd/DefaultTicketerServiceLayer.java | 9 +++++++ .../netmgt/ticketd/TicketerServiceLayer.java | 7 ++++- .../opennms/netmgt/ticketd/TroubleTicketer.java | 26 ++++++++++++++++++- .../opennms/applicationContext-troubleTicketer.xml | 2 +- 5 files changed, 46 insertions(+), 4 deletions(-) diff --git a/opennms-base-assembly/src/main/filtered/etc/opennms.properties b/opennms-base-assembly/src/main/filtered/etc/opennms.properties index 986b74d..2c208ca 100644 --- a/opennms-base-assembly/src/main/filtered/etc/opennms.properties +++ b/opennms-base-assembly/src/main/filtered/etc/opennms.properties @@ -152,7 +152,13 @@ rrd.binary=${install.rrdtool.bin} # service registration, possible classes are AppleStrategy, JMDNSStrategy, NullStrategy #org.opennms.serviceregistration.strategy=org.opennms.serviceregistration.strategies.NullStrategy + + ###### TROUBLE TICKETING ###### +# The ticketer responsible for creating tickets from the Alarm details and passing these +# to the ticket plugin. +opennms.ticketer.servicelayer=org.opennms.netmgt.ticketd.DefaultTicketerServiceLayer + # The ticket plugin implementation to use to create tickets via the Alarm details # pages (if configured). The NullTicketerPlugin just does nothing when attempting # to create tickets. diff --git a/opennms-services/src/main/java/org/opennms/netmgt/ticketd/DefaultTicketerServiceLayer.java b/opennms-services/src/main/java/org/opennms/netmgt/ticketd/DefaultTicketerServiceLayer.java index c1f842b..a061106 100644 --- a/opennms-services/src/main/java/org/opennms/netmgt/ticketd/DefaultTicketerServiceLayer.java +++ b/opennms-services/src/main/java/org/opennms/netmgt/ticketd/DefaultTicketerServiceLayer.java @@ -233,6 +233,15 @@ public class DefaultTicketerServiceLayer implements TicketerServiceLayer, Initia m_alarmDao.saveOrUpdate(alarm); } + /* + * (non-Javadoc) + * @see org.opennms.netmgt.ticketd.TicketerServiceLayer#reloadTicketer() + */ + /** {@inheritDoc} */ + public void reloadTicketer() { + // Do nothing + } + // TODO what if the alarm doesn't exist? private Event createEvent(String reason) { diff --git a/opennms-services/src/main/java/org/opennms/netmgt/ticketd/TicketerServiceLayer.java b/opennms-services/src/main/java/org/opennms/netmgt/ticketd/TicketerServiceLayer.java index 28c2b21..16ed069 100644 --- a/opennms-services/src/main/java/org/opennms/netmgt/ticketd/TicketerServiceLayer.java +++ b/opennms-services/src/main/java/org/opennms/netmgt/ticketd/TicketerServiceLayer.java @@ -72,5 +72,10 @@ public interface TicketerServiceLayer { * @param ticketId a {@link java.lang.String} object. */ public void cancelTicketForAlarm(int alarmId, String ticketId); - + + /** + * Implement to reload ticketer when requested. + * + */ + public void reloadTicketer(); } diff --git a/opennms-services/src/main/java/org/opennms/netmgt/ticketd/TroubleTicketer.java b/opennms-services/src/main/java/org/opennms/netmgt/ticketd/TroubleTicketer.java index 1036a4a..fe5d1dc 100644 --- a/opennms-services/src/main/java/org/opennms/netmgt/ticketd/TroubleTicketer.java +++ b/opennms-services/src/main/java/org/opennms/netmgt/ticketd/TroubleTicketer.java @@ -29,6 +29,7 @@ package org.opennms.netmgt.ticketd; import java.util.Arrays; +import java.util.List; import org.opennms.core.utils.ThreadCategory; import org.opennms.netmgt.EventConstants; @@ -38,6 +39,7 @@ import org.opennms.netmgt.daemon.SpringServiceDaemon; import org.opennms.netmgt.model.events.EventIpcManager; import org.opennms.netmgt.model.events.EventListener; import org.opennms.netmgt.xml.event.Event; +import org.opennms.netmgt.xml.event.Parm; import org.springframework.util.Assert; /** @@ -94,7 +96,8 @@ public class TroubleTicketer implements SpringServiceDaemon, EventListener { EventConstants.TROUBLETICKET_CANCEL_UEI, EventConstants.TROUBLETICKET_CLOSE_UEI, EventConstants.TROUBLETICKET_CREATE_UEI, - EventConstants.TROUBLETICKET_UPDATE_UEI + EventConstants.TROUBLETICKET_UPDATE_UEI, + EventConstants.RELOAD_DAEMON_CONFIG_UEI }; m_eventIpcManager.addEventListener(this, Arrays.asList(ueis)); @@ -146,7 +149,9 @@ public class TroubleTicketer implements SpringServiceDaemon, EventListener { handleCreateTicket(e); } else if (EventConstants.TROUBLETICKET_UPDATE_UEI.equals(e.getUei())) { handleUpdateTicket(e); - } + } else if (isReloadConfigEvent(e)) { + handleTicketerReload(e); + } } catch (InsufficientInformationException ex) { log().warn("Unable to create trouble ticket due to lack of information: "+ex.getMessage()); } catch (Throwable t) { @@ -225,4 +230,21 @@ public class TroubleTicketer implements SpringServiceDaemon, EventListener { m_ticketerServiceLayer.cancelTicketForAlarm(alarmId, ticketId); } + private boolean isReloadConfigEvent(Event event) { + boolean isTarget = false; + if (EventConstants.RELOAD_DAEMON_CONFIG_UEI.equals(event.getUei())) { + List parmCollection = event.getParmCollection(); + for (Parm parm : parmCollection) { + if (EventConstants.PARM_DAEMON_NAME.equals(parm.getParmName()) && "Ticketd".equalsIgnoreCase(parm.getValue().getContent())) { + isTarget = true; + break; + } + } + } + return isTarget; + } + + private void handleTicketerReload(Event e) { + m_ticketerServiceLayer.reloadTicketer(); + } } diff --git a/opennms-services/src/main/resources/META-INF/opennms/applicationContext-troubleTicketer.xml b/opennms-services/src/main/resources/META-INF/opennms/applicationContext-troubleTicketer.xml index 8391973..cb7e303 100644 --- a/opennms-services/src/main/resources/META-INF/opennms/applicationContext-troubleTicketer.xml +++ b/opennms-services/src/main/resources/META-INF/opennms/applicationContext-troubleTicketer.xml @@ -12,7 +12,7 @@ - + -- 1.7.9