[jboss-cvs] JBossAS SVN: r97863 - in branches/snmp4j-integration: component-matrix and 4 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Dec 15 16:53:52 EST 2009


Author: bshim
Date: 2009-12-15 16:53:51 -0500 (Tue, 15 Dec 2009)
New Revision: 97863

Modified:
   branches/snmp4j-integration/component-matrix/pom.xml
   branches/snmp4j-integration/pom.xml
   branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/SnmpAgentService.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/TrapFactory.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/config/manager/Manager.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/managers.xml
Log:
Setup template for SNMPv2c and SNMPv3 traps

Modified: branches/snmp4j-integration/component-matrix/pom.xml
===================================================================
--- branches/snmp4j-integration/component-matrix/pom.xml	2009-12-15 20:37:56 UTC (rev 97862)
+++ branches/snmp4j-integration/component-matrix/pom.xml	2009-12-15 21:53:51 UTC (rev 97863)
@@ -124,7 +124,7 @@
     <version.xdoclet>1.2.3</version.xdoclet>
     <version.weld.api>1.0-CR1</version.weld.api>
     <version.spring.integration>1.0.0.CR2</version.spring.integration>
-    <version.snmp4j>1.10.1</version.snmp4j>
+    <version.snmp4j>1.10.2</version.snmp4j>
   </properties>
 
   <!-- Build Configuration -->
@@ -2178,7 +2178,7 @@
       <dependency>
         <groupId>snmp4j</groupId>
         <artifactId>snmp4j</artifactId>
-        <version>1.10.1</version>
+        <version>1.10.2</version>
       </dependency>
       
       <dependency>

Modified: branches/snmp4j-integration/pom.xml
===================================================================
--- branches/snmp4j-integration/pom.xml	2009-12-15 20:37:56 UTC (rev 97862)
+++ branches/snmp4j-integration/pom.xml	2009-12-15 21:53:51 UTC (rev 97863)
@@ -501,18 +501,6 @@
       </snapshots>
     </repository>
     
-    <repository>
-      <id>local.maven.repo</id>
-      <name>Local Maven Repo</name>
-      <url>file:///notnfs/bshim/local-maven-repo</url>
-      <releases>
-        <enabled>true</enabled>
-      </releases>
-      <snapshots>
-        <enabled>false</enabled>
-      </snapshots>
-    </repository>
-    
    </repositories>
 
   <!-- Plugin Repositories -->

Modified: branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/SnmpAgentService.java
===================================================================
--- branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/SnmpAgentService.java	2009-12-15 20:37:56 UTC (rev 97862)
+++ branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/SnmpAgentService.java	2009-12-15 21:53:51 UTC (rev 97863)
@@ -27,9 +27,9 @@
 
 import org.jboss.bootstrap.spi.as.config.JBossASServerConfig;
 import org.jboss.system.ListenerServiceMBeanSupport;
-import org.opennms.protocols.snmp.SnmpAgentSession;
-import org.opennms.protocols.snmp.SnmpPeer;
-import org.opennms.protocols.snmp.SnmpSMI;
+//import org.opennms.protocols.snmp.SnmpAgentSession;
+//import org.opennms.protocols.snmp.SnmpPeer;
+//import org.opennms.protocols.snmp.SnmpSMI;
 
 //SNMP4J IMPORTS
 import org.snmp4j.Snmp;
@@ -122,7 +122,7 @@
    private TrapEmitter trapEmitter = null;
 
    /** the snmp agent session for handling get/set requests */
-   private SnmpAgentSession agentSession = null;
+//   private SnmpAgentSession agentSession = null;
    
    /** the request handler instance handling get/set requests */
    private RequestHandler requestHandler;
@@ -539,8 +539,8 @@
       this.trapEmitter = null;
       
       log.debug("Stopping snmp agent ...");
-      this.agentSession.close();
-      this.agentSession = null;
+//      this.agentSession.close();
+//      this.agentSession = null;
       
       log.info("SNMP agent stopped");
    }    

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-15 20:37:56 UTC (rev 97862)
+++ branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/TrapEmitter.java	2009-12-15 21:53:51 UTC (rev 97863)
@@ -37,9 +37,9 @@
 import org.jboss.xb.binding.MappingObjectModelFactory;
 import org.jboss.xb.binding.Unmarshaller;
 import org.jboss.xb.binding.UnmarshallerFactory;
-import org.opennms.protocols.snmp.SnmpIPAddress;
-import org.opennms.protocols.snmp.SnmpPduPacket;
-import org.opennms.protocols.snmp.SnmpPduTrap;
+//import org.opennms.protocols.snmp.SnmpIPAddress;
+//import org.opennms.protocols.snmp.SnmpPduPacket;
+//import org.opennms.protocols.snmp.SnmpPduTrap;
 
 import org.snmp4j.CommunityTarget;
 import org.snmp4j.PDUv1;
@@ -179,8 +179,9 @@
            
       // Cache the translated notification
       PDUv1 v1TrapPdu = null; 
-      ScopedPDU v2TrapPdu = null; 
-       
+      ScopedPDU v2cTrapPdu = null; 
+      ScopedPDU v3TrapPdu = null;
+      
       // Send trap. Synchronise on the subscription collection while 
       // iterating 
       synchronized(this.managers) {
@@ -211,13 +212,14 @@
                      // Send
                      //s.getSession().send(v1TrapPdu);
                      snmp = createSnmpSession(t.getAddress());
+                     log.debug("Sending trap: "+v1TrapPdu.toString() + "\n to target: "+ t.toString());
                      snmp.send(v1TrapPdu, t);
                      break;
                   
                		case SnmpConstants.version2c:
                   //case SnmpAgentService.SNMPV2:
-                     if (v2TrapPdu == null)
-                        v2TrapPdu = this.trapFactory.generateV2V3Trap(n);
+                     if (v2cTrapPdu == null)
+                        v2cTrapPdu = this.trapFactory.generateV2cTrap(n);
                      
                      // Advance the trap counter
                      this.trapCount.advance();
@@ -225,13 +227,21 @@
                      // Send
                      //t.getSession().send(v2TrapPdu);
                      snmp = createSnmpSession(t.getAddress());
-                     snmp.send(v2TrapPdu, t);
-                     
+                     snmp.send(v2cTrapPdu, t);
                      break;
                      
                		case SnmpConstants.version3:
                   //case SnmpAgentService.SNMPV3:
-                	 //do something
+                        if (v3TrapPdu == null)
+                            v3TrapPdu = this.trapFactory.generateV3Trap(n);
+                         
+                         // Advance the trap counter
+                         this.trapCount.advance();
+                                
+                         // Send
+                         //t.getSession().send(v2TrapPdu);
+                         snmp = createSnmpSession(t.getAddress());
+                         snmp.send(v3TrapPdu, t);
                 	 break;
                      
                   default:    
@@ -360,22 +370,33 @@
    }
    
    private Target createTarget(Manager m){
-	   Target target;
-	   String newAddr;
-	   if (m.getAddress() != null){
-		   System.out.println("*************************************");
-		   System.out.println("Address" + m.getAddress());
-		   System.out.println("Port" + m.getPort());
-		   System.out.println("*************************************");
-		   newAddr = m.getAddress()+"/"+m.getPort();		   
-	   }
-	   else {return null;}
+	   Target target = null;
+//	   String newAddr;
+//	   if (m.getAddress() != null){
+//		   System.out.println("*************************************");
+//		   System.out.println("Address" + m.getAddress());
+//		   System.out.println("Port" + m.getPort());
+//		   System.out.println("*************************************");
+//		   newAddr = m.getAddress()+"/"+m.getPort();		   
+//	   }
+//	   else {return null;}
 	   
 	   int version = m.getVersion();
 	   
 	   if (version == SnmpConstants.version1 || version == SnmpConstants.version2c){
+		   
 		   //change 'public' to a constant somewhere
-		   target = new CommunityTarget(new TcpAddress(newAddr), new OctetString("public"));
+		   //target = new CommunityTarget(new TcpAddress(newAddr), new OctetString("public"));
+		   try{
+			   if (m.getAddress() != null){
+		   target = new CommunityTarget(new TcpAddress(InetAddress.getByName(m.getAddress()), m.getPort()), new OctetString(m.getCommunityString()));
+		   
+		   //Timeout and Retries needs to be a field later on
+		   //target.setRetries(3);
+		   target.setTimeout(8000);
+		   
+			   }
+		   }catch (UnknownHostException e) {} //something goes here
 	   }
 	   else if (version == SnmpConstants.version3) {
 		   //won't be used at the moment

Modified: branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/TrapFactory.java
===================================================================
--- branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/TrapFactory.java	2009-12-15 20:37:56 UTC (rev 97862)
+++ branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/TrapFactory.java	2009-12-15 21:53:51 UTC (rev 97863)
@@ -77,25 +77,31 @@
    public void start()
       throws Exception;  
    
+   
    /**
-    * Translates a Notification to an SNMP V2 trap.
+    * Traslates a Notification to an SNMP V1 trap.
     *
     * @param the notification to be translated
    **/
+   public PDUv1 generateV1Trap(Notification n) 
+   throws MappingFailedException;
+   
+   /**
+    * Translates a Notification to an SNMP V2c trap.
+    *
+    * @param the notification to be translated
+   **/
 //   public SnmpPduPacket generateV2Trap(Notification n) 
 //      throws MappingFailedException;
-   public ScopedPDU generateV2V3Trap(Notification n) 
+   public ScopedPDU generateV2cTrap(Notification n) 
    throws MappingFailedException;
 
    /**
-    * Traslates a Notification to an SNMP V1 trap.
+    * Traslates a Notification to an SNMP V3 trap.
     *
     * @param the notification to be translated
    **/
-//   public SnmpPduTrap generateV1Trap(Notification n) 
-//      throws MappingFailedException;
-   
-   public PDUv1 generateV1Trap(Notification n) 
+   public ScopedPDU generateV3Trap(Notification n) 
    throws MappingFailedException;
           
 } // TrapFactory

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-15 20:37:56 UTC (rev 97862)
+++ branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/TrapFactorySupport.java	2009-12-15 21:53:51 UTC (rev 97863)
@@ -38,9 +38,9 @@
 import org.jboss.xb.binding.Unmarshaller;
 import org.jboss.xb.binding.UnmarshallerFactory;
 import org.jboss.xb.binding.UnmarshallingContext;
-import org.opennms.protocols.snmp.SnmpPduPacket;
-import org.opennms.protocols.snmp.SnmpPduRequest;
-import org.opennms.protocols.snmp.SnmpPduTrap;
+//import org.opennms.protocols.snmp.SnmpPduPacket;
+//import org.opennms.protocols.snmp.SnmpPduRequest;
+//import org.opennms.protocols.snmp.SnmpPduTrap;
 import org.snmp4j.PDU;
 import org.snmp4j.PDUv1;
 import org.snmp4j.ScopedPDU;
@@ -338,15 +338,15 @@
    }
     
    /**
-    * Traslates a Notification to an SNMP V2 trap.
+    * Traslates a Notification to an SNMP V2c trap.
     *
     * TODO: how do you get timestamp, generic, and specific stuff in the trap
    **/
-   public ScopedPDU generateV2V3Trap(Notification n) 
+   public ScopedPDU generateV2cTrap(Notification n) 
       throws MappingFailedException
    {
       if (log.isTraceEnabled())
-         log.trace("generateV2V3Trap");
+         log.trace("generateV2cTrap");
         
       // Locate mapping for incomming event
       int index = -1;
@@ -365,9 +365,8 @@
       
       // Create trap
       ScopedPDU trapPdu = new ScopedPDU();
+      trapPdu.setType(PDU.TRAP);
       
-      //**remember to set trap type ie) ScopedPDU.setType(distinguish types) ....
-      
       //--SnmpPduRequest trapPdu = new SnmpPduRequest(SnmpPduPacket.V2TRAP);
         
       // Append the specified varbinds. Get varbinds from mapping and for
@@ -407,6 +406,72 @@
    }
    
    /**
+    * Traslates a Notification to an SNMP V3 trap.
+    *
+    * TODO: how do you get timestamp, generic, and specific stuff in the trap
+   **/
+   public ScopedPDU generateV3Trap(Notification n) 
+      throws MappingFailedException
+   {
+	   if (log.isTraceEnabled())
+       log.trace("generateV3Trap");
+      
+    // Locate mapping for incomming event
+    int index = -1;
+      
+    try
+    {
+       index = findMappingIndex(n);
+    }
+    catch (IndexOutOfBoundsException e)
+    {
+       throw new MappingFailedException(
+          "No mapping found for notification type: '" + n.getType() + "'");
+    }
+      
+    Mapping m = (Mapping)this.notificationMapList.get(index);
+    
+    // Create trap
+    ScopedPDU trapPdu = new ScopedPDU();
+    trapPdu.setType(PDU.TRAP);
+     
+    // Append the specified varbinds. Get varbinds from mapping and for
+    // each one of the former use the wrapper to get data from the 
+    // notification
+
+    // Get the coresponding wrapper
+    NotificationWrapper wrapper =
+       (NotificationWrapper)this.notificationWrapperCache.get(index);
+      
+    if (wrapper != null)
+    {
+       // Prime the wrapper with the notification contents
+       wrapper.prime(n);
+          
+       List vbList = m.getVarBindList().getVarBindList();
+       
+       for (int i = 0; i < vbList.size(); i++)
+       {
+          VarBind vb = (VarBind)vbList.get(i);
+              
+          // Append the var bind. Interrogate read vb for OID and 
+          // variable tag. The later is used as the key passed to the 
+          // wrapper in order for it to locate the required value. That 
+          // value and the aforementioned OID are used to generate the 
+          // variable binding
+          trapPdu.add(
+          		this.snmpVBFactory.make(vb.getOid(), wrapper.get(vb.getTag())));
+       }
+    }
+    else
+    {
+       log.warn("Varbind mapping failure: null wrapper defined for " +
+                " notification type '" + m.getNotificationType() + "'" );
+    }
+    return trapPdu;
+   }
+   
+   /**
     * Utility class used by JBossXB to help parse notifications.xml 
     */
    private static class NotificationBinding implements GenericObjectModelFactory

Modified: branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/config/manager/Manager.java
===================================================================
--- branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/config/manager/Manager.java	2009-12-15 20:37:56 UTC (rev 97862)
+++ branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/config/manager/Manager.java	2009-12-15 21:53:51 UTC (rev 97863)
@@ -37,6 +37,7 @@
    private String  localAddress;
    private int     localPort;
    private int     version;
+   private String  communityString;
 
    // Constructors -------------------------------------------------
     
@@ -102,6 +103,17 @@
    }
 
    /**
+    * Method getCommunityString returns the value of field 'communityString'.
+    *
+    * @return the value of field 'communityString'.
+    *
+    */
+   public String getCommunityString()
+   {
+      return communityString;
+   }
+ 
+  /**
     * Method setAddress sets the value of field 'address'.
     * 
     * @param address the value of field 'address'.
@@ -152,6 +164,17 @@
       this.version = version;
    }
    
+   /**
+    * Method getCommunityString sets the value of field 'communityString'.
+    *
+    * @return the value of field 'communityString'.
+    *
+    */
+   public void setCommunityString(String communityString)
+   {
+      this.communityString = communityString;
+   }
+   
    // Object overrides ----------------------------------------------
    
    public String toString()
@@ -163,7 +186,8 @@
       .append(", port=").append(port)
       .append(", localAddress=").append(localAddress)
       .append(", localPort=").append(localPort)
-      .append(", version=").append(version)      
+      .append(", version=").append(version)
+      .append(", communityString=").append(communityString)     
       .append(']');
       
       return sbuf.toString();      

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-15 20:37:56 UTC (rev 97862)
+++ branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/trapd/TrapdService.java	2009-12-15 21:53:51 UTC (rev 97863)
@@ -26,9 +26,9 @@
 
 import org.jboss.bootstrap.spi.as.config.JBossASServerConfig;
 import org.jboss.system.ServiceMBeanSupport;
-import org.opennms.protocols.snmp.SnmpPduRequest;
-import org.opennms.protocols.snmp.SnmpTrapSession;
-import org.opennms.protocols.snmp.SnmpVarBind;
+//import org.opennms.protocols.snmp.SnmpPduRequest;
+//import org.opennms.protocols.snmp.SnmpTrapSession;
+//import org.opennms.protocols.snmp.SnmpVarBind;
 
 import org.snmp4j.CommandResponder;
 import org.snmp4j.CommandResponderEvent;
@@ -36,6 +36,7 @@
 import org.snmp4j.MessageDispatcherImpl;
 import org.snmp4j.PDU;
 import org.snmp4j.PDUv1;
+import org.snmp4j.ScopedPDU;
 import org.snmp4j.Snmp;
 import org.snmp4j.TransportMapping;
 import org.snmp4j.mp.MPv1;
@@ -184,8 +185,27 @@
 
 	@Override
 	public void processPdu(CommandResponderEvent e) {
-		PDUv1 pdu = (PDUv1)e.getPDU(); 
+//		PDUv1 pdu = (PDUv1)e.getPDU();
+		PDU pdu = e.getPDU();
 		if (pdu != null){
+			
+			if (pdu instanceof PDUv1){
+				processPDUv1((PDUv1)pdu);
+			} else if (pdu instanceof ScopedPDU) {
+				processScopedPDU((ScopedPDU)pdu);
+			} else {
+				log.warn("Unknown PDU type: " + PDU.getTypeString(pdu.getType()));
+			}
+			
+		}
+	}
+
+	private void processScopedPDU(ScopedPDU pdu) {
+		// TODO Auto-generated method stub
+		
+	}
+
+	private void processPDUv1(PDUv1 pdu) {
 		//*****
 	      StringBuffer sbuf = new StringBuffer();
 	      //sbuf.append("\n***************NEW SNMP4J ADAPTOR******************");
@@ -215,8 +235,6 @@
 	      }
 	      sbuf.append("\nLength............. ").append(counter);
 	      log.debug(sbuf.toString());
-		}
-		//*****	    
 	}
     
 } // class TrapdService

Modified: branches/snmp4j-integration/varia/src/resources/services/snmp/deploy/managers.xml
===================================================================
--- branches/snmp4j-integration/varia/src/resources/services/snmp/deploy/managers.xml	2009-12-15 20:37:56 UTC (rev 97862)
+++ branches/snmp4j-integration/varia/src/resources/services/snmp/deploy/managers.xml	2009-12-15 21:53:51 UTC (rev 97863)
@@ -32,5 +32,6 @@
     <local-address></local-address>
     <local-port></local-port>
     <version>1</version>
+    <community-string>public</community-string>
   </manager>
 </manager-list>




More information about the jboss-cvs-commits mailing list