[jboss-cvs] JBossAS SVN: r97974 - in branches/snmp4j-integration/varia/src: main/java/org/jboss/jmx/adaptor/snmp/test and 3 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Dec 17 16:49:50 EST 2009
Author: bshim
Date: 2009-12-17 16:49:50 -0500 (Thu, 17 Dec 2009)
New Revision: 97974
Modified:
branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/EventTypes.java
branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/TrapEmitter.java
branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/TrapFactorySupport.java
branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/test/NotificationProducerService.java
branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/test/NotificationProducerServiceMBean.java
branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/trapd/TrapdService.java
branches/snmp4j-integration/varia/src/resources/services/snmp/deploy/META-INF/jboss-service.xml
branches/snmp4j-integration/varia/src/resources/services/snmp/deploy/notifications.xml
Log:
Basic trap handling for v1,v2,v3 and testing with NotificationProducerService work
Modified: branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/EventTypes.java
===================================================================
--- branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/EventTypes.java 2009-12-17 21:38:32 UTC (rev 97973)
+++ branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/EventTypes.java 2009-12-17 21:49:50 UTC (rev 97974)
@@ -32,4 +32,9 @@
public final String COLDSTART = "jboss.snmp.agent.coldstart";
public final String HEARTBEAT = "jboss.snmp.agent.heartbeat";
+ /** Notification types for testing */
+ public final String V1_TEST_NOTIFICATION = "jboss.snmp.agent.v1test";
+ public final String V2_TEST_NOTIFICATION = "jboss.snmp.agent.v2test";
+ public final String V3_TEST_NOTIFICATION = "jboss.snmp.agent.v3test";
+
}
Modified: branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/TrapEmitter.java
===================================================================
--- branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/TrapEmitter.java 2009-12-17 21:38:32 UTC (rev 97973)
+++ branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/TrapEmitter.java 2009-12-17 21:49:50 UTC (rev 97974)
@@ -231,15 +231,21 @@
break;
case SnmpConstants.version3:
- //case SnmpAgentService.SNMPV3:
+
if (v3TrapPdu == null)
v3TrapPdu = this.trapFactory.generateV3Trap(n);
-
+
+// if (contextEngineID != null) {
+// trapPdu.setContextEngineID(contextEngineID);
+// }
+// if (contextName != null) {
+// trapPdu.setContextName(contextName);
+// }
+
// Advance the trap counter
this.trapCount.advance();
// Send
- //t.getSession().send(v2TrapPdu);
snmp = createSnmpSession(t.getAddress());
snmp.send(v3TrapPdu, t);
break;
@@ -313,7 +319,7 @@
{
// Read the monitoring manager's particulars
Manager m = (Manager)i.next();
-
+ fixManagerVersion(m);
// try
// {
// Create a record of the manager's interest
@@ -350,6 +356,25 @@
// }
}
}
+
+ /**
+ * Function used to change the SNMP versions received from managers
+ * config file (1,2,3) to the actual versions used to distinguish in
+ * snmp4j (0,1,3)
+ * @param m the Manager who's version we want to fix
+ */
+ private void fixManagerVersion(Manager m){
+ if (m != null){
+ switch (m.getVersion()){
+ case 1:
+ m.setVersion(SnmpConstants.version1);
+ break;
+ case 2:
+ m.setVersion(SnmpConstants.version2c);
+ }
+
+ }
+ }
/**
* cater for possible global -b option, if no override has been specified
@@ -390,11 +415,10 @@
try{
if (m.getAddress() != null){
target = new CommunityTarget(new TcpAddress(InetAddress.getByName(m.getAddress()), m.getPort()), new OctetString(m.getCommunityString()));
-
+ //try defining retries/timeout period in notifications.xml
//Timeout and Retries needs to be a field later on
//target.setRetries(3);
target.setTimeout(8000);
-
}
}catch (UnknownHostException e) {} //something goes here
}
@@ -404,8 +428,11 @@
}
else {
//unrecognized version
- target = null;
+ return null;
}
+ if (target != null){
+ target.setVersion(version);
+ }
return target;
}
@@ -421,7 +448,12 @@
// transport.setAsyncMsgProcessingSupported(false);
Snmp snmp = new Snmp(transport);
-
+ OctetString localEngineID =
+ new OctetString(snmp.getLocalEngineID());
+ USM usm = new USM(SecurityProtocols.getInstance(), localEngineID, 0);
+ SecurityModels.getInstance().addSecurityModel(usm);
+
+
// SNMPv3 stuff ~ add and fix later
//
// ((MPv3)snmp.getMessageProcessingModel(MPv3.ID)).
Modified: branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/TrapFactorySupport.java
===================================================================
--- branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/TrapFactorySupport.java 2009-12-17 21:38:32 UTC (rev 97973)
+++ branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/TrapFactorySupport.java 2009-12-17 21:49:50 UTC (rev 97974)
@@ -366,8 +366,6 @@
// Create trap
ScopedPDU trapPdu = new ScopedPDU();
trapPdu.setType(PDU.TRAP);
-
- //--SnmpPduRequest trapPdu = new SnmpPduRequest(SnmpPduPacket.V2TRAP);
// Append the specified varbinds. Get varbinds from mapping and for
// each one of the former use the wrapper to get data from the
Modified: branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/test/NotificationProducerService.java
===================================================================
--- branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/test/NotificationProducerService.java 2009-12-17 21:38:32 UTC (rev 97973)
+++ branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/test/NotificationProducerService.java 2009-12-17 21:49:50 UTC (rev 97974)
@@ -20,7 +20,7 @@
package org.jboss.jmx.adaptor.snmp.test;
import javax.management.Notification;
-
+import org.jboss.jmx.adaptor.snmp.agent.EventTypes;
import org.jboss.system.ServiceMBeanSupport;
/**
@@ -40,6 +40,7 @@
extends ServiceMBeanSupport
implements NotificationProducerServiceMBean
{
+
/**
* Sends a test Notification of type "V1"
*
@@ -48,8 +49,10 @@
public void sendV1()
throws Exception
{
- sendNotification(
- new Notification("V1", this, getNextNotificationSequenceNumber(),
+ log.debug("Sending SnmpV1 test notification");
+
+ sendNotification(
+ new Notification(EventTypes.V1_TEST_NOTIFICATION, this, getNextNotificationSequenceNumber(),
"V1 test notifications"));
}
@@ -61,10 +64,25 @@
public void sendV2()
throws Exception
{
- sendNotification(
- new Notification("V2", this, getNextNotificationSequenceNumber(),
+ log.debug("Sending SnmpV2 test notification");
+ sendNotification(
+ new Notification(EventTypes.V2_TEST_NOTIFICATION, this, getNextNotificationSequenceNumber(),
"V2 test notifications"));
}
+ /**
+ * Sends a test Notification of type "V3"
+ *
+ * @jmx:managed-operation
+ **/
+ public void sendV3()
+ throws Exception
+ {
+ log.debug("Sending SnmpV3 test notification");
+ sendNotification(
+ new Notification(EventTypes.V3_TEST_NOTIFICATION, this, getNextNotificationSequenceNumber(),
+ "V3 test notifications"));
+ }
+
} // class NotificationProducerService
Modified: branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/test/NotificationProducerServiceMBean.java
===================================================================
--- branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/test/NotificationProducerServiceMBean.java 2009-12-17 21:38:32 UTC (rev 97973)
+++ branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/test/NotificationProducerServiceMBean.java 2009-12-17 21:49:50 UTC (rev 97974)
@@ -35,5 +35,10 @@
* Sends a test Notification of type "V2"
*/
void sendV2() throws java.lang.Exception;
+
+ /**
+ * Sends a test Notification of type "V3"
+ */
+ void sendV3() throws java.lang.Exception;
}
Modified: branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/trapd/TrapdService.java
===================================================================
--- branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/trapd/TrapdService.java 2009-12-17 21:38:32 UTC (rev 97973)
+++ branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/trapd/TrapdService.java 2009-12-17 21:49:50 UTC (rev 97974)
@@ -40,7 +40,13 @@
import org.snmp4j.Snmp;
import org.snmp4j.TransportMapping;
import org.snmp4j.mp.MPv1;
+import org.snmp4j.mp.MPv2c;
+import org.snmp4j.mp.MPv3;
import org.snmp4j.mp.SnmpConstants;
+import org.snmp4j.security.SecurityModels;
+import org.snmp4j.security.SecurityProtocols;
+import org.snmp4j.security.USM;
+import org.snmp4j.smi.OctetString;
import org.snmp4j.smi.TcpAddress;
import org.snmp4j.smi.VariableBinding;
import org.snmp4j.transport.DefaultTcpTransportMapping;
@@ -146,16 +152,29 @@
// cater for possible global -b option, if no override has been specified
InetAddress address = this.bindAddress != null ? this.bindAddress :
toInetAddress(System.getProperty(JBossASServerConfig.PROP_KEY_JBOSSAS_BIND_ADDRESS));
+
MessageDispatcher mtDispatcher = new MessageDispatcherImpl();
-
- // add message processing models
+//
+// // add message processing models
mtDispatcher.addMessageProcessingModel(new MPv1());
+ mtDispatcher.addMessageProcessingModel(new MPv2c());
+ mtDispatcher.addMessageProcessingModel(new MPv3());
TransportMapping transport =
new DefaultTcpTransportMapping(new TcpAddress(address,port));
- this.snmp = new Snmp(mtDispatcher, transport);
- //if (version == SnmpConstants.version3) {}
+
+ this.snmp = new Snmp(mtDispatcher,transport);
+
+ //start test
+// OctetString localEngineID =
+// new OctetString(snmp.getLocalEngineID());
+// USM usm = new USM(SecurityProtocols.getInstance(), localEngineID, 0);
+// SecurityModels.getInstance().addSecurityModel(usm);
+ //end test
+
+// this.snmp = new Snmp(mtDispatcher, transport);
+
snmp.addCommandResponder(this);
- transport.listen();
+ snmp.listen();
log.debug("listening on: "+address);
}
@@ -201,8 +220,31 @@
}
private void processScopedPDU(ScopedPDU pdu) {
- // TODO Auto-generated method stub
+ //****
+ StringBuffer sbuf = new StringBuffer();
+ //sbuf.append("\n***************NEW SNMP4J ADAPTOR******************");
+ sbuf.append("\nV2/V3 Trap from agent ").append(this.bindAddress.toString());
+ sbuf.append(" on port ").append(this.port);
+
+ //sbuf.append("\nCommunity string... ").append(community.toString());
+ sbuf.append("\n");
+ Vector bindings = pdu.getVariableBindings();
+ Iterator it = bindings.iterator();
+ int counter = 0;
+ while (it.hasNext())
+ {
+ VariableBinding vb = (VariableBinding)it.next();
+ if (vb != null) {
+ sbuf.append("Varbind[").append(counter++).append("] := ");
+// sbuf.append(vb.toString());
+ sbuf.append(vb.getOid().toString()).append(" --> ");
+ sbuf.append(vb.getVariable().toString()).append("\n");
+ }
+ }
+ sbuf.append("\nLength............. ").append(counter);
+ log.debug(sbuf.toString());
+
}
private void processPDUv1(PDUv1 pdu) {
Modified: branches/snmp4j-integration/varia/src/resources/services/snmp/deploy/META-INF/jboss-service.xml
===================================================================
--- branches/snmp4j-integration/varia/src/resources/services/snmp/deploy/META-INF/jboss-service.xml 2009-12-17 21:38:32 UTC (rev 97973)
+++ branches/snmp4j-integration/varia/src/resources/services/snmp/deploy/META-INF/jboss-service.xml 2009-12-17 21:49:50 UTC (rev 97974)
@@ -84,7 +84,12 @@
parameter="jboss.jmx:name=SnmpAgent,service=trapd,type=logger"/>
</attribute>
</mbean>
-
+
+ <!-- Used for internal testing - ignore
+ <mbean code="org.jboss.jmx.adaptor.snmp.test.NotificationProducerService"
+ name="jboss.jmx:name=SnmpAgent,service=notification,type=producer"/>
+ -->
+
<!-- The SNMP adaptor MBean -->
<mbean code="org.jboss.jmx.adaptor.snmp.agent.SnmpAgentService"
name="jboss.jmx:name=SnmpAgent,service=snmp,type=adaptor">
@@ -118,7 +123,14 @@
<mbean name="jboss.jmx:name=SnmpAgent,service=timer,type=heartbeat">
<notification type="jboss.snmp.agent.heartbeat"/>
</mbean>
-
+
+ <!-- Monitor NotificationProducer test events (internal testing) -ignore
+ <mbean name="jboss.jmx:name=SnmpAgent,service=notification,type=producer">
+ <notification type="jboss.snmp.agent.v1test"/>
+ <notification type="jboss.snmp.agent.v2test"/>
+ <notification type="jboss.snmp.agent.v3test"/>
+ </mbean>
+ -->
<!-- Valid JMX ObjectName patterns may be used as well, for example
<mbean name="*:service=invoker,*"/>
will subscribe to all matching mbeans for all notification types -->
@@ -149,9 +161,5 @@
jboss.jmx:name=SnmpAgent,service=snmp,type=adaptor
</depends>
</mbean>
-
- <!-- Used for internal testing - ignore
- <mbean code="org.jboss.jmx.adaptor.snmp.test.NotificationProducerService"
- name="jboss.jmx:name=SnmpAgent,service=notification,type=producer"/>
- -->
+
</service>
Modified: branches/snmp4j-integration/varia/src/resources/services/snmp/deploy/notifications.xml
===================================================================
--- branches/snmp4j-integration/varia/src/resources/services/snmp/deploy/notifications.xml 2009-12-17 21:38:32 UTC (rev 97973)
+++ branches/snmp4j-integration/varia/src/resources/services/snmp/deploy/notifications.xml 2009-12-17 21:49:50 UTC (rev 97974)
@@ -64,4 +64,57 @@
</var-bind-list>
</mapping>
+<!-- Used for internal testing -ignore
+ <mapping>
+ <notification-type>jboss.snmp.agent.v1test</notification-type>
+ <generic>10</generic>
+ <specific>0</specific>
+ <enterprise>1.2.3.4.5.6.7</enterprise>
+ <var-bind-list wrapper-class="org.jboss.jmx.adaptor.snmp.agent.NotificationWrapperSupport">
+ <var-bind>
+ <tag>a:startTime</tag>
+ <oid>1.2.3.4.5.6.7.9</oid>
+ </var-bind>
+ <var-bind>
+ <tag>a:trapCount</tag>
+ <oid>1.2.3.4.5.6.7.6</oid>
+ </var-bind>
+ </var-bind-list>
+ </mapping>
+
+ <mapping>
+ <notification-type>jboss.snmp.agent.v2test</notification-type>
+ <generic>11</generic>
+ <specific>0</specific>
+ <enterprise>1.2.3.4.5.6.7</enterprise>
+ <var-bind-list wrapper-class="org.jboss.jmx.adaptor.snmp.agent.NotificationWrapperSupport">
+ <var-bind>
+ <tag>a:startTime</tag>
+ <oid>1.2.3.4.5.6.7.9</oid>
+ </var-bind>
+ <var-bind>
+ <tag>a:trapCount</tag>
+ <oid>1.2.3.4.5.6.7.6</oid>
+ </var-bind>
+ </var-bind-list>
+ </mapping>
+
+ <mapping>
+ <notification-type>jboss.snmp.agent.v3test</notification-type>
+ <generic>12</generic>
+ <specific>0</specific>
+ <enterprise>1.2.3.4.5.6.7</enterprise>
+ <var-bind-list wrapper-class="org.jboss.jmx.adaptor.snmp.agent.NotificationWrapperSupport">
+ <var-bind>
+ <tag>a:startTime</tag>
+ <oid>1.2.3.4.5.6.7.9</oid>
+ </var-bind>
+ <var-bind>
+ <tag>a:trapCount</tag>
+ <oid>1.2.3.4.5.6.7.6</oid>
+ </var-bind>
+ </var-bind-list>
+ </mapping>
+-->
+
</notification-map-list>
More information about the jboss-cvs-commits
mailing list