[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