Author: dougm Date: 2008-07-02 22:00:44 -0700 (Wed, 02 Jul 2008) New Revision: 9991 URL: http://svn.hyperic.org/?view=rev&root=Hyperic+HQ&revision=9991 Modified: trunk/plugins/netdevice/src/org/hyperic/hq/plugin/netdevice/SNMPTrapReceiver.java trunk/plugins/netdevice/src/org/hyperic/hq/plugin/netdevice/SNMPTrapReceiverPlugin.java trunk/plugins/system/src/org/hyperic/hq/plugin/system/UnixLogTrackPlugin.java trunk/plugins/system/src/org/hyperic/hq/plugin/system/WindowsLogTrackPlugin.java trunk/src/org/hyperic/hq/product/LogTrackPluginManager.java Log: [HHQ-1459] Route unknown trap destination events to the agent's platform Modified: trunk/plugins/netdevice/src/org/hyperic/hq/plugin/netdevice/SNMPTrapReceiver.java =================================================================== --- trunk/plugins/netdevice/src/org/hyperic/hq/plugin/netdevice/SNMPTrapReceiver.java 2008-07-03 04:08:46 UTC (rev 9990) +++ trunk/plugins/netdevice/src/org/hyperic/hq/plugin/netdevice/SNMPTrapReceiver.java 2008-07-03 05:00:44 UTC (rev 9991) @@ -10,6 +10,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hyperic.hq.product.LogTrackPlugin; +import org.hyperic.hq.product.LogTrackPluginManager; import org.hyperic.snmp.SNMPClient; import org.snmp4j.CommandResponder; @@ -49,13 +50,18 @@ private Address _listenAddress; private ThreadPool _threadPool; private Map _plugins = new HashMap(); + LogTrackPluginManager _manager; private int _received = 0; + static boolean hasInstance() { + return instance != null; + } + public static SNMPTrapReceiver getInstance(Properties props) throws IOException { - if (instance == null) { + if (!hasInstance()) { instance = new SNMPTrapReceiver(); instance.init(props); } @@ -70,7 +76,7 @@ } public static void shutdown() throws IOException { - if (instance != null) { + if (hasInstance()) { log.debug("Shutdown instance"); instance._threadPool.cancel(); instance._snmp.close(); @@ -123,7 +129,7 @@ } public static void remove(LogTrackPlugin plugin) { - if (instance == null) { + if (!hasInstance()) { return; } String key = getPluginKey(plugin); @@ -207,6 +213,17 @@ return msg.toString(); } + private LogTrackPlugin getPlatformPlugin() { + //XXX return _manager.getDefaultPlatformPlugin() + final String prop = LogTrackPluginManager.DEFAULT_PLATFORM_PLUGIN; + String name = _manager.getProperty(prop); + return _manager.getLogTrackPlugin(name); + } + + void setPluginManager(LogTrackPluginManager manager) { + _manager = manager; + } + public void processPdu(CommandResponderEvent event) { _received++; @@ -231,8 +248,17 @@ new OctetString(event.getSecurityName()).toString(); LogTrackPlugin plugin = getPlugin(address, community); - if (plugin == null) { + plugin = getPlatformPlugin(); + if (plugin != null) { + if (log.isDebugEnabled()) { + log.debug("No plugin for " + address + + ", routing to default platform: " + + plugin.getName()); + } + } + } + if (plugin == null) { if (log.isDebugEnabled()) { log.debug("No plugin for " + address + ", msg=" + getMessage(event)); Modified: trunk/plugins/netdevice/src/org/hyperic/hq/plugin/netdevice/SNMPTrapReceiverPlugin.java =================================================================== --- trunk/plugins/netdevice/src/org/hyperic/hq/plugin/netdevice/SNMPTrapReceiverPlugin.java 2008-07-03 04:08:46 UTC (rev 9990) +++ trunk/plugins/netdevice/src/org/hyperic/hq/plugin/netdevice/SNMPTrapReceiverPlugin.java 2008-07-03 05:00:44 UTC (rev 9991) @@ -4,6 +4,7 @@ import org.hyperic.hq.product.LogTrackPlugin; import org.hyperic.hq.product.PluginException; +import org.hyperic.hq.product.PluginManager; import org.hyperic.util.config.ConfigResponse; public class SNMPTrapReceiverPlugin extends LogTrackPlugin { @@ -11,9 +12,30 @@ private SNMPTrapReceiver getReceiver() throws IOException { - return SNMPTrapReceiver.getInstance(getManager().getProperties()); + SNMPTrapReceiver receiver = + SNMPTrapReceiver.getInstance(getManager().getProperties()); + receiver.setPluginManager(getManager()); + return receiver; } + public void init(PluginManager manager) throws PluginException { + super.init(manager); + if (SNMPTrapReceiver.hasInstance()) { + return; + } + String listen = + manager.getProperty(SNMPTrapReceiver.PROP_LISTEN_ADDRESS); + if (listen == null) { + return; + } + getLog().debug("Configuring default listener: " + listen); + try { + getReceiver(); + } catch (Exception e) { + throw new PluginException(e.getMessage(), e); + } + } + public void configure(ConfigResponse config) throws PluginException { super.configure(config); Modified: trunk/plugins/system/src/org/hyperic/hq/plugin/system/UnixLogTrackPlugin.java =================================================================== --- trunk/plugins/system/src/org/hyperic/hq/plugin/system/UnixLogTrackPlugin.java 2008-07-03 04:08:46 UTC (rev 9990) +++ trunk/plugins/system/src/org/hyperic/hq/plugin/system/UnixLogTrackPlugin.java 2008-07-03 05:00:44 UTC (rev 9991) @@ -26,6 +26,7 @@ package org.hyperic.hq.plugin.system; import org.hyperic.hq.product.LogFileTailPlugin; +import org.hyperic.hq.product.LogTrackPluginManager; import org.hyperic.hq.product.PluginException; import org.hyperic.util.config.ConfigResponse; @@ -37,6 +38,9 @@ super.configure(config); this.whoTracker = new WhoLogTrackPlugin(this); getManager().addRunnableTracker(this.whoTracker); + //XXX getManager().setDefaultPlatformPlugin(this) + final String prop = LogTrackPluginManager.DEFAULT_PLATFORM_PLUGIN; + getManager().getProperties().setProperty(prop, getName()); } public void shutdown() throws PluginException { Modified: trunk/plugins/system/src/org/hyperic/hq/plugin/system/WindowsLogTrackPlugin.java =================================================================== --- trunk/plugins/system/src/org/hyperic/hq/plugin/system/WindowsLogTrackPlugin.java 2008-07-03 04:08:46 UTC (rev 9990) +++ trunk/plugins/system/src/org/hyperic/hq/plugin/system/WindowsLogTrackPlugin.java 2008-07-03 05:00:44 UTC (rev 9991) @@ -25,6 +25,7 @@ package org.hyperic.hq.plugin.system; +import org.hyperic.hq.product.LogTrackPluginManager; import org.hyperic.hq.product.PluginException; import org.hyperic.hq.product.PluginManager; import org.hyperic.hq.product.TypeInfo; @@ -57,6 +58,9 @@ this.whoTracker = new WhoLogTrackPlugin(this); getManager().addRunnableTracker(this.whoTracker); } + //XXX getManager().setDefaultPlatformPlugin(this) + final String prop = LogTrackPluginManager.DEFAULT_PLATFORM_PLUGIN; + getManager().getProperties().setProperty(prop, getName()); } public void shutdown() throws PluginException { Modified: trunk/src/org/hyperic/hq/product/LogTrackPluginManager.java =================================================================== --- trunk/src/org/hyperic/hq/product/LogTrackPluginManager.java 2008-07-03 04:08:46 UTC (rev 9990) +++ trunk/src/org/hyperic/hq/product/LogTrackPluginManager.java 2008-07-03 05:00:44 UTC (rev 9991) @@ -28,7 +28,10 @@ import java.util.Properties; public class LogTrackPluginManager extends TrackEventPluginManager { - + + public static final String DEFAULT_PLATFORM_PLUGIN = + "platform.log_track.default"; + public LogTrackPluginManager() { super(); } |