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