[Ngms-svn] SVN-Commit: [74] [NMNetWalker] change the structure of the class

Back to archive index

svnno****@sourc***** svnno****@sourc*****
2009年 12月 18日 (金) 19:49:39 JST


Revision: 74
          http://sourceforge.jp/projects/ngms/svn/view?view=rev&revision=74
Author:   takayah
Date:     2009-12-18 19:49:39 +0900 (Fri, 18 Dec 2009)

Log Message:
-----------
[NMNetWalker] change the structure of the class

Modified Paths:
--------------
    trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/LLDPNetWalker.scala
    trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/NetWalkerFacade.scala
    trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/NetWalkerMain.scala
    trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/NetWalkerType.scala
    trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/SNMPNetWalker.scala

Added Paths:
-----------
    trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/BasicNodeInfo.scala
    trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/LLDPNetWalkerParameter.scala
    trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/NetWalkerParameter.scala
    trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/NetWalkerResult.scala
    trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/SNMPNetWalkerParameter.scala

Removed Paths:
-------------
    trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/NetWalker.scala
    trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/NetWalkerFactory.scala

Added: trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/BasicNodeInfo.scala
===================================================================
--- trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/BasicNodeInfo.scala	                        (rev 0)
+++ trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/BasicNodeInfo.scala	2009-12-18 10:49:39 UTC (rev 74)
@@ -0,0 +1,19 @@
+/*
+ *  Next Generation Management System Project
+ *  Copyright(c) 2009, NGMS Project Team All Rights Reserved.
+ */
+package info.ngms.nmnetwalker
+
+import java.net.InetAddress
+import java.net.InterfaceAddress
+
+/**
+ * IP アドレスを持つノードの基本情報クラス
+ * @version $Id$
+ * @author
+ */
+class BasicNodeInfo(val a: InetAddress) {
+    val address: InetAddress = a
+    val physical: Option[InterfaceAddress] = null
+}
+


Property changes on: trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/BasicNodeInfo.scala
___________________________________________________________________
Added: svn:keywords
   + Date Id

Modified: trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/LLDPNetWalker.scala
===================================================================
--- trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/LLDPNetWalker.scala	2009-12-17 10:14:51 UTC (rev 73)
+++ trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/LLDPNetWalker.scala	2009-12-18 10:49:39 UTC (rev 74)
@@ -5,21 +5,14 @@
 package info.ngms.nmnetwalker
 
 /**
- * LLDP を使用して設定を取得するクラス
+ * LLDP を使用して設定を取得するオブジェクト
  *
  * @version $Id$
  * @author
  */
-private[nmnetwalker] class LLDPNetWalker(val pa: Map[String, String]) extends NetWalker(pa) {
-    import info.ngms.nmtree.NMDescription
-    import info.ngms.nmtree.NMTree.TDescriptionElement
-
-    override def parse(): Unit = {
+private[nmnetwalker] object LLDPNetWalker {
+    def walk(param: LLDPNetWalkerParameter): NetWalkerResult = {
         // FIXME
-    }
-
-    override def get(element: TDescriptionElement): TDescriptionElement = {
-        // FIXME
         null
     }
 }

Added: trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/LLDPNetWalkerParameter.scala
===================================================================
--- trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/LLDPNetWalkerParameter.scala	                        (rev 0)
+++ trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/LLDPNetWalkerParameter.scala	2009-12-18 10:49:39 UTC (rev 74)
@@ -0,0 +1,37 @@
+/*
+ *  Next Generation Management System Project
+ *  Copyright(c) 2009, NGMS Project Team All Rights Reserved.
+ */
+package info.ngms.nmnetwalker
+
+import java.net.InetAddress
+
+/**
+ * LLDP でネットワークから情報を収集するのに必要な
+ * パラメーターを生成するオブジェクト
+ *
+ * @version $Id$
+ * @author
+ */
+private[nmnetwalker] object LLDPNetWalkerParameter {
+    def fromMap(param: Map[String, String]): LLDPNetWalkerParameter = {
+        //
+        null
+    }
+}
+
+/**
+ * LLDP でネットワークから情報を収集するのに必要な
+ * パラメータークラス
+ *
+ * @version $Id$
+ * @author
+ */
+private[nmnetwalker] class LLDPNetWalkerParameter(val a: InetAddress,
+                                                  val t: Long,
+                                                  val r: Int) extends NetWalkerParameter {
+    val address: InetAddress = a
+    val timeout: Long = t
+    val retry: Int = r
+}
+


Property changes on: trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/LLDPNetWalkerParameter.scala
___________________________________________________________________
Added: svn:keywords
   + Date Id

Deleted: trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/NetWalker.scala
===================================================================
--- trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/NetWalker.scala	2009-12-17 10:14:51 UTC (rev 73)
+++ trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/NetWalker.scala	2009-12-18 10:49:39 UTC (rev 74)
@@ -1,25 +0,0 @@
-/*
- *  Next Generation Management System Project
- *  Copyright(c) 2009, NGMS Project Team All Rights Reserved.
- */
-package info.ngms.nmnetwalker
-
-/**
- * 自動設定を行うクラス
- *
- * @version $Id$
- * @author
- */
-private[nmnetwalker] abstract class NetWalker(val p: Map[String, String]) {
-    import info.ngms.nmtree.NMPath
-    import info.ngms.nmtree.NMTree
-    import info.ngms.nmtree.NMTree.TDescriptionElement
-
-    require((p != null) && (p.size >= 1), "invalid param")
-
-    protected val params: Map[String, String] = p
-
-    def parse(): Unit
-    def get(element: TDescriptionElement): TDescriptionElement
-}
-

Modified: trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/NetWalkerFacade.scala
===================================================================
--- trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/NetWalkerFacade.scala	2009-12-17 10:14:51 UTC (rev 73)
+++ trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/NetWalkerFacade.scala	2009-12-18 10:49:39 UTC (rev 74)
@@ -10,22 +10,16 @@
  * @author
  */
 private[nmnetwalker] object NetWalkerFacade {
-    import info.ngms.nmtree.NMPath
-    import info.ngms.nmtree.NMTree
-    import info.ngms.nmtree.NMTree.TDescriptionElement
-
-    def getConfig(path: NMPath,
-                  netWalkerType: NetWalkerType.Value,
-                  params: Map[String, String]): TDescriptionElement = {
-        getConfig(NMTree.createDescription(path), netWalkerType, params)
+    def getConfig(netWalkerType: NetWalkerType, params: Map[String, String]): NetWalkerResult = {
+        netWalkerType match {
+            case SNMPNetWalkerType =>
+                val param = SNMPNetWalkerParameter.fromMap(params)
+                SNMPNetWalker.walk(param)
+            case LLDPNetWalkerType =>
+                val param = LLDPNetWalkerParameter.fromMap(params)
+                LLDPNetWalker.walk(param)
+            case _ => throw new IllegalArgumentException("invalid netWalkerType")
+        }
     }
-
-    def getConfig(element: TDescriptionElement,
-                  netWalkerType: NetWalkerType.Value,
-                  params: Map[String, String]): TDescriptionElement = {
-        val netWalker = NetWalkerFactory.create(netWalkerType, params);
-        netWalker.parse
-        netWalker.get(element)
-    }
 }
 

Deleted: trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/NetWalkerFactory.scala
===================================================================
--- trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/NetWalkerFactory.scala	2009-12-17 10:14:51 UTC (rev 73)
+++ trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/NetWalkerFactory.scala	2009-12-18 10:49:39 UTC (rev 74)
@@ -1,21 +0,0 @@
-/*
- *  Next Generation Management System Project
- *  Copyright(c) 2009, NGMS Project Team All Rights Reserved.
- */
-package info.ngms.nmnetwalker
-
-/**
- * NetWalker を生成するクラス 
- * @version $Id$
- * @author
- */
-private[nmnetwalker] object NetWalkerFactory {
-    def create(netWalkerType: NetWalkerType.Value, params: Map[String, String]): NetWalker = {
-        netWalkerType match {
-            case NetWalkerType.SNMP => new SNMPNetWalker(params)
-            case NetWalkerType.LLDP => new LLDPNetWalker(params)
-            case _ => throw new IllegalArgumentException("invalid netWalkerType")
-        }
-    }
-}
-

Modified: trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/NetWalkerMain.scala
===================================================================
--- trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/NetWalkerMain.scala	2009-12-17 10:14:51 UTC (rev 73)
+++ trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/NetWalkerMain.scala	2009-12-18 10:49:39 UTC (rev 74)
@@ -28,18 +28,21 @@
         oids += "1.3.6.1.2.1.2.1,"        // ifNumber
         oids += "1.3.6.1.2.1.2.2.1.6.0"   // ifPhysAddress.0
 
-        val params = Map("addr" -> "192.168.0.1",
+        val params = Map("address" -> "192.168.0.1",
                          "oids" -> oids,
                          "version" -> "1", // org.snmp4j.mp.SnmpConstants.version2c
                          "retry" -> "5",
                          "timeout" -> "1000",
                          "community" -> "public")
 
-        val element = NetWalkerFacade.getConfig(path, NetWalkerType.SNMP, params)
+        val result = NetWalkerFacade.getConfig(SNMPNetWalkerType, params)
 
+        null
+/*
         for (desc <- element.descriptions) {
             printf("tag: %s value: %s", desc.tag, desc.value)
         }
+*/
     }
 }
 

Added: trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/NetWalkerParameter.scala
===================================================================
--- trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/NetWalkerParameter.scala	                        (rev 0)
+++ trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/NetWalkerParameter.scala	2009-12-18 10:49:39 UTC (rev 74)
@@ -0,0 +1,20 @@
+/*
+ *  Next Generation Management System Project
+ *  Copyright(c) 2009, NGMS Project Team All Rights Reserved.
+ */
+package info.ngms.nmnetwalker
+
+/**
+ * 情報を収集するのに必要なパラメータークラス
+ *
+ * @version $Id$
+ * @author
+ */
+private[nmnetwalker] trait NetWalkerParameter {
+    import java.net.InetAddress
+
+    val address: InetAddress
+    val timeout: Long
+    val retry: Int
+}
+


Property changes on: trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/NetWalkerParameter.scala
___________________________________________________________________
Added: svn:keywords
   + Date Id

Added: trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/NetWalkerResult.scala
===================================================================
--- trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/NetWalkerResult.scala	                        (rev 0)
+++ trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/NetWalkerResult.scala	2009-12-18 10:49:39 UTC (rev 74)
@@ -0,0 +1,29 @@
+/*
+ *  Next Generation Management System Project
+ *  Copyright(c) 2009, NGMS Project Team All Rights Reserved.
+ */
+package info.ngms.nmnetwalker
+
+import info.ngms.nmtree.NMDescriptions
+
+/**
+ * 自動取得で得られた情報クラス
+ *
+ * @version $Id$
+ * @author
+ */
+class NetWalkerResult(val d: NMDescriptions) {
+    import java.net.InetAddress
+
+    abstract class ResponseStatus
+    case class Found(node: BasicNodeInfo) extends ResponseStatus
+    case class Timeout(address: InetAddress) extends ResponseStatus
+    case class ConnDeny(address: InetAddress) extends ResponseStatus
+
+    // FIXME
+    val descriptions: NMDescriptions = d
+
+    // FIXME
+    val results: List[ResponseStatus] = null
+}
+


Property changes on: trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/NetWalkerResult.scala
___________________________________________________________________
Added: svn:keywords
   + Date Id

Modified: trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/NetWalkerType.scala
===================================================================
--- trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/NetWalkerType.scala	2009-12-17 10:14:51 UTC (rev 73)
+++ trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/NetWalkerType.scala	2009-12-18 10:49:39 UTC (rev 74)
@@ -5,12 +5,11 @@
 package info.ngms.nmnetwalker
 
 /**
- * NetWalker のタイプを表す Enumeration クラス
+ * NetWalker のタイプを表すクラス
  * @version $Id$
  * @author
  */
-object NetWalkerType extends Enumeration {
-    val SNMP = Value("SNMP")
-    val LLDP = Value("LLDP")
-}
+abstract class NetWalkerType
+case object SNMPNetWalkerType extends NetWalkerType
+case object LLDPNetWalkerType extends NetWalkerType
 

Modified: trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/SNMPNetWalker.scala
===================================================================
--- trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/SNMPNetWalker.scala	2009-12-17 10:14:51 UTC (rev 73)
+++ trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/SNMPNetWalker.scala	2009-12-18 10:49:39 UTC (rev 74)
@@ -5,12 +5,12 @@
 package info.ngms.nmnetwalker
 
 /**
- * SNMP を使用して設定を取得するクラス
+ * SNMP を使用して設定を取得するオブジェクト
  *
  * @version $Id$
  * @author
  */
-private[nmnetwalker] class SNMPNetWalker(val pa: Map[String, String]) extends NetWalker(pa) {
+private[nmnetwalker] object SNMPNetWalker {
     import org.snmp4j.CommunityTarget
     import org.snmp4j.MessageDispatcher
     import org.snmp4j.MessageDispatcherImpl
@@ -30,63 +30,15 @@
     import org.snmp4j.transport.DefaultUdpTransportMapping
 
     import info.ngms.nmtree.NMDescription
-    import info.ngms.nmtree.NMTree.TDescriptionElement
+    import info.ngms.nmtree.NMDescriptions
 
-    // param key
-    val KEY_ADDR: String = "addr"
-    val KEY_OIDS: String = "oids"
-    val KEY_VERSION: String = "version"
-    val KEY_RETRY: String = "retry"
-    val KEY_TIMEOUT: String = "timeout"
-    val KEY_COMMUNITY: String = "community"
+    def walk(param: SNMPNetWalkerParameter): NetWalkerResult = {
+        val descriptions = new NMDescriptions
 
-    // param value
-    private var addr: String = null
-    private var oids: Array[String] = null
-    private var version: Int = 0
-    private var retry: Int = 0
-    private var timeout: Long = 0L
-    private var community: String = null
-
-    private var initialized: Boolean = false
-
-    override def parse(): Unit = {
-        val addrStr = params(KEY_ADDR)
-        require((addrStr != null) && (addrStr.length() >= 1), "address is null")
-        this.addr = String.format("udp:%s/161", addrStr)
-
-        val oidsStr = params(KEY_OIDS)
-        require((oidsStr!= null) && (oidsStr.length() >= 1), "oids is null")
-        this.oids = oidsStr.split(",")
-
-        val versionStr = params(KEY_VERSION)
-        require((versionStr != null) && (versionStr.length() >= 1), "version is null")
-        this.version = versionStr.toInt
-
-        val retryStr = params(KEY_RETRY)
-        require((retryStr != null) && (retryStr.length() >= 1), "retry is null")
-        this.retry = retryStr.toInt
-
-        val timeoutStr = params(KEY_TIMEOUT)
-        require((timeoutStr != null) && (timeoutStr.length() >= 1), "timeout is null")
-        this.timeout = timeoutStr.toLong
-
-        val communityStr = params(KEY_COMMUNITY)
-        require((communityStr != null) && (communityStr.length() >= 1), "community is null")
-        this.community = communityStr
-
-        initialized = true
-    }
-
-    override def get(element: TDescriptionElement): TDescriptionElement = {
-        if (!initialized) {
-            parse
-        }
-
         val snmp = createSnmp()
         try {
-            val pdu = createPDU()
-            val target = createCommunityTarget()
+            val pdu = createPDU(param)
+            val target = createCommunityTarget(param)
 
             val resEvent = snmp.get(pdu, target)
 
@@ -99,7 +51,9 @@
                     val index = resultStr.indexOf("=")
                     val desc = NMDescription.make(resultStr.substring(0, index).trim,
                                                   resultStr.substring(index + 1).trim)
-                    element.set(desc)
+
+                    // FIXME
+                    descriptions.header += (resultStr.substring(0, index).trim -> desc)
                 }
             }
         } finally {
@@ -108,7 +62,7 @@
             }
         }
 
-        element
+        new NetWalkerResult(descriptions)
     }
 
     private def createSnmp(): Snmp = {
@@ -125,23 +79,24 @@
         snmp
     }
 
-    private def createCommunityTarget(): CommunityTarget = {
-        val targetAddress = GenericAddress.parse(addr)
+    private def createCommunityTarget(param: SNMPNetWalkerParameter): CommunityTarget = {
+        val convertedAddress = String.format("udp:%s/161", param.address)
+        val targetAddress = GenericAddress.parse(convertedAddress)
 
         val target = new CommunityTarget()
-        target.setCommunity(new OctetString(community))
+        target.setCommunity(new OctetString(param.community))
         target.setAddress(targetAddress)
-        target.setRetries(retry)
-        target.setTimeout(timeout)
-        target.setVersion(version)
+        target.setRetries(param.retry)
+        target.setTimeout(param.timeout)
+        target.setVersion(param.version)
 
         target
     }
 
-    private def createPDU(): PDU = {
+    private def createPDU(param: SNMPNetWalkerParameter): PDU = {
         val pdu = new PDU()
         pdu.setType(PDU.GET)
-        for (oid <- oids) {
+        for (oid <- param.oids) {
             pdu.add(new VariableBinding(new OID(oid.trim)))
         }
 

Added: trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/SNMPNetWalkerParameter.scala
===================================================================
--- trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/SNMPNetWalkerParameter.scala	                        (rev 0)
+++ trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/SNMPNetWalkerParameter.scala	2009-12-18 10:49:39 UTC (rev 74)
@@ -0,0 +1,77 @@
+/*
+ *  Next Generation Management System Project
+ *  Copyright(c) 2009, NGMS Project Team All Rights Reserved.
+ */
+package info.ngms.nmnetwalker
+
+import java.net.InetAddress
+
+/**
+ * SNMP でネットワークから情報を収集するのに必要な
+ * パラメーターを生成するオブジェクト
+ *
+ * @version $Id$
+ * @author
+ */
+private[nmnetwalker] object SNMPNetWalkerParameter {
+    // param key
+    val ADDRESS: String = "address"
+    val TIMEOUT: String = "timeout"
+    val RETRY: String = "retry"
+    val COMMUNITY: String = "community"
+    val VERSION: String = "version"
+    val OIDS: String = "oids"
+
+    /**
+     * 
+     */
+    def fromMap(params: Map[String, String]): SNMPNetWalkerParameter = {
+        val addressStr = params(ADDRESS)
+        require((addressStr != null) && (addressStr.length() >= 1), "address is null")
+        val address = InetAddress.getByName(addressStr)
+
+        val timeoutStr = params(TIMEOUT)
+        require((timeoutStr != null) && (timeoutStr.length() >= 1), "timeout is null")
+        val timeout = timeoutStr.toLong
+
+        val retryStr = params(RETRY)
+        require((retryStr != null) && (retryStr.length() >= 1), "retry is null")
+        val retry = retryStr.toInt
+
+        val communityStr = params(COMMUNITY)
+        require((communityStr != null) && (communityStr.length() >= 1), "community is null")
+        val community = communityStr
+
+        val versionStr = params(VERSION)
+        require((versionStr != null) && (versionStr.length() >= 1), "version is null")
+        val version = versionStr.toInt
+
+        val oidsStr = params(OIDS)
+        require((oidsStr!= null) && (oidsStr.length() >= 1), "oids is null")
+        val oids = oidsStr.split(",").toList
+
+        new SNMPNetWalkerParameter(address, timeout, retry, community, version, oids)
+    }
+}
+
+/**
+ * SNMP でネットワークから情報を収集するのに必要な
+ * パラメータークラス
+ *
+ * @version $Id$
+ * @author
+ */
+private[nmnetwalker] class SNMPNetWalkerParameter(val a: InetAddress,
+                                                  val t: Long,
+                                                  val r: Int,
+                                                  val c: String,
+                                                  val v: Int,
+                                                  val o: List[String]) extends NetWalkerParameter {
+    val address: InetAddress = a
+    val timeout: Long = t
+    val retry: Int = r
+    val community : String = c
+    val version : Int = v
+    val oids : List[String] = o
+}
+


Property changes on: trunk/source/NMNetWalker/src/info/ngms/nmnetwalker/SNMPNetWalkerParameter.scala
___________________________________________________________________
Added: svn:keywords
   + Date Id




Ngms-svn メーリングリストの案内
Back to archive index