How can I do that from StorageStrategy implementation ?
It would be great if StorageStrategy can access data
configured on datacollection-config.xml and avoid SNMP
request (as I suggested on my implementation).
I included here my new version for new features on
StorageStrategy that includes
HostFileSystemStorageStrategy. This patch is based on
1.6-testing branch rev. 9264.
Hope this help.
Alejandro.
Matt Brozowski wrote:
Could you just add hrStorageDescr as a collection value? and then access
it from the collection set?
On Thu, Jun 12, 2008 at 11:13 AM, Will Fraley <[EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]>> wrote:
Hello,
In an attempt to to make collection of disk usage data from
hrstoragetable resistant to index changes (like ip interface data
is), I've been attempting to implement a solution similar to one
Alejandro outlines in bug #1851.
Is there a quick and dirty way I can get the IP of the current host
(so I can in turn call getAgentConfig()) from within a class
extending IndexStorageStrategy? This will allow an additional snmp
request to get the hrstoragedescr of the particular index, which is
extremely ugly, but should work for my needs.
Thanks!
-Will
-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
Please read the OpenNMS Mailing List FAQ:
http://www.opennms.org/index.php/Mailing_List_FAQ
opennms-devel mailing list
To *unsubscribe* or change your subscription options, see the bottom
of this page:
https://lists.sourceforge.net/lists/listinfo/opennms-devel
------------------------------------------------------------------------
-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
------------------------------------------------------------------------
_______________________________________________
Please read the OpenNMS Mailing List FAQ:
http://www.opennms.org/index.php/Mailing_List_FAQ
opennms-devel mailing list
To *unsubscribe* or change your subscription options, see the bottom of this
page:
https://lists.sourceforge.net/lists/listinfo/opennms-devel
Index:
opennms-dao/src/main/java/org/opennms/netmgt/dao/support/FrameRelayStorageStrategy.java
===================================================================
---
opennms-dao/src/main/java/org/opennms/netmgt/dao/support/FrameRelayStorageStrategy.java
(revision 0)
+++
opennms-dao/src/main/java/org/opennms/netmgt/dao/support/FrameRelayStorageStrategy.java
(revision 0)
@@ -0,0 +1,56 @@
+//
+// This file is part of the OpenNMS(R) Application.
+//
+// OpenNMS(R) is Copyright (C) 2006 The OpenNMS Group, Inc. All rights
reserved.
+// OpenNMS(R) is a derivative work, containing both original code, included
code and modified
+// code that was published under the GNU General Public License. Copyrights
for modified
+// and included code are below.
+//
+// OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc.
+//
+// Original code base Copyright (C) 1999-2001 Oculan Corp. All rights
reserved.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+//
+// For more information contact:
+// OpenNMS Licensing <[EMAIL PROTECTED]>
+// http://www.opennms.org/
+// http://www.opennms.com/
+//
+package org.opennms.netmgt.dao.support;
+
+import java.util.StringTokenizer;
+
+/**
+ * This class use the new implementation of SnmpStorageStrategy extending the
new
+ * IndexStorageStrategy from opennms-services
+ */
+public class FrameRelayStorageStrategy extends IndexStorageStrategy {
+
+ @Override
+ public String getResourceNameFromIndex(String resourceParent, String
resourceIndex) {
+ StringTokenizer indexes = new StringTokenizer(resourceIndex, ".");
+ String ifIndex = indexes.nextToken();
+ String ifName = getInterfaceName(resourceParent, ifIndex);
+ String dlci = indexes.nextToken();
+ return ifName + "." + dlci;
+ }
+
+ public String getInterfaceName(String nodeId, String ifIndex) {
+ String label = m_collectionAgent.getSnmpInterfaceLabel(new
Integer(ifIndex));
+ return label != null ? label : ifIndex;
+ }
+
+}
Index:
opennms-dao/src/main/java/org/opennms/netmgt/dao/support/IndexStorageStrategy.java
===================================================================
---
opennms-dao/src/main/java/org/opennms/netmgt/dao/support/IndexStorageStrategy.java
(revision 9264)
+++
opennms-dao/src/main/java/org/opennms/netmgt/dao/support/IndexStorageStrategy.java
(working copy)
@@ -33,10 +33,12 @@
import java.io.File;
+import org.opennms.netmgt.config.SnmpCollectionAgent;
import org.opennms.netmgt.config.StorageStrategy;
public class IndexStorageStrategy implements StorageStrategy {
private String m_resourceTypeName;
+ protected SnmpCollectionAgent m_collectionAgent;
public String getRelativePathForAttribute(String resourceParent, String
resource,
String attribute) {
@@ -46,9 +48,11 @@
buffer.append(m_resourceTypeName);
buffer.append(File.separator);
buffer.append(resource);
- buffer.append(File.separator);
- buffer.append(attribute);
- buffer.append(RrdFileConstants.getRrdSuffix());
+ if (attribute != null) {
+ buffer.append(File.separator);
+ buffer.append(attribute);
+ buffer.append(RrdFileConstants.getRrdSuffix());
+ }
return buffer.toString();
}
@@ -59,4 +63,12 @@
public String getResourceTypeName() {
return m_resourceTypeName;
}
+
+ public String getResourceNameFromIndex(String resourceParent, String
resourceIndex) {
+ return resourceIndex;
+ }
+
+ public void setCollectionAgent(SnmpCollectionAgent agent) {
+ m_collectionAgent = agent;
+ }
}
Index:
opennms-dao/src/main/java/org/opennms/netmgt/dao/support/HostFileSystemStorageStrategy.java
===================================================================
---
opennms-dao/src/main/java/org/opennms/netmgt/dao/support/HostFileSystemStorageStrategy.java
(revision 0)
+++
opennms-dao/src/main/java/org/opennms/netmgt/dao/support/HostFileSystemStorageStrategy.java
(revision 0)
@@ -0,0 +1,61 @@
+//
+// This file is part of the OpenNMS(R) Application.
+//
+// OpenNMS(R) is Copyright (C) 2006 The OpenNMS Group, Inc. All rights
reserved.
+// OpenNMS(R) is a derivative work, containing both original code, included
code and modified
+// code that was published under the GNU General Public License. Copyrights
for modified
+// and included code are below.
+//
+// OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc.
+//
+// Original code base Copyright (C) 1999-2001 Oculan Corp. All rights
reserved.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+//
+// For more information contact:
+// OpenNMS Licensing <[EMAIL PROTECTED]>
+// http://www.opennms.org/
+// http://www.opennms.com/
+//
+package org.opennms.netmgt.dao.support;
+
+import org.opennms.netmgt.snmp.SnmpObjId;
+import org.opennms.netmgt.snmp.SnmpUtils;
+import org.opennms.netmgt.snmp.SnmpValue;
+
+public class HostFileSystemStorageStrategy extends IndexStorageStrategy {
+
+ public static String HR_STORAGE_DESC = ".1.3.6.1.2.1.25.2.3.1.3";
+
+ @Override
+ public String getResourceNameFromIndex(String resourceParent, String
resourceIndex) {
+ SnmpObjId oid = SnmpObjId.get(HR_STORAGE_DESC + "." + resourceIndex);
+ SnmpValue snmpValue =
SnmpUtils.get(m_collectionAgent.getAgentConfig(), oid);
+ String value = (snmpValue != null ? snmpValue.toString() :
resourceIndex);
+ /*
+ * Use special translation for root (base) filesystem
+ */
+ if (value.equals("/"))
+ return "_root_fs";
+ /*
+ * 1. Eliminate first slash character
+ * 2. Eliminate tabs and spaces on filesystem names
+ * 3. Replace slash (file separator) character with "-"
+ * 4. Remove Additional Information on Windows Drives
+ */
+ return value.replaceFirst("/", "").replaceAll("\\s",
"").replaceAll("/", "-").replaceAll(":\\\\.*", "");
+ }
+
+}
Index:
opennms-dao/src/main/java/org/opennms/netmgt/config/SnmpCollectionAgent.java
===================================================================
---
opennms-dao/src/main/java/org/opennms/netmgt/config/SnmpCollectionAgent.java
(revision 0)
+++
opennms-dao/src/main/java/org/opennms/netmgt/config/SnmpCollectionAgent.java
(revision 0)
@@ -0,0 +1,16 @@
+package org.opennms.netmgt.config;
+
+import org.opennms.netmgt.snmp.SnmpAgentConfig;
+
+public interface SnmpCollectionAgent {
+
+ public SnmpAgentConfig getAgentConfig();
+
+ /*
+ * This method is used on SnmpStorageStrategy implementation when the
resource index is associated to
+ * a physical interface like frame relay resources. OpenNMS always track
changes on ifTable so, make SNMP
+ * queries on this table is redundant, and implementations of
CollectionAgent know ifTable content always.
+ * This method give interface information from a specific ifIndex.
+ */
+ public String getSnmpInterfaceLabel(int ifIndex);
+}
Index: opennms-dao/src/main/java/org/opennms/netmgt/config/StorageStrategy.java
===================================================================
--- opennms-dao/src/main/java/org/opennms/netmgt/config/StorageStrategy.java
(revision 9264)
+++ opennms-dao/src/main/java/org/opennms/netmgt/config/StorageStrategy.java
(working copy)
@@ -35,4 +35,21 @@
public String getRelativePathForAttribute(String resourceParent, String
resource, String attribute);
public void setResourceTypeName(String name);
+
+ /*
+ * This functions translate resourceIndex into a "unique" and
"non-variable" name that could be identify
+ * a resource, as described earlier.
+ *
+ * This method could be expensive because it could require send SNMP
queries and make complicated functions to
+ * build the name. So you must try to call it only when is necessary.
+ */
+ public String getResourceNameFromIndex(String resourceParent, String
resourceIndex);
+
+ /*
+ * Add to a strategy the possibility to get additional information using
SNMP when is necessary.
+ * There are complex tables on some MIBs where indexes depends on indexes
from other tables (indirect indexing).
+ * For this kind of resources we must send some additional SNMP queries to
build a unique name.
+ */
+ public void setCollectionAgent(SnmpCollectionAgent agent);
+
}
Index: opennms-daemon/src/main/filtered/etc/snmp-graph.properties
===================================================================
--- opennms-daemon/src/main/filtered/etc/snmp-graph.properties (revision 9264)
+++ opennms-daemon/src/main/filtered/etc/snmp-graph.properties (working copy)
@@ -118,7 +118,8 @@
airport.numClients,iisTraffic,iisRequests,exchangeMessages,exchangeBytes, \
exchangeRecipPartitions,dnsThroughput,mssqlmemory,mssqlusage,mssqlhitratios,mssqllockwaittime,
\
windowsCPU,livecommsusers,livecommsmessages,mailmarshal, \
-alvarion.droppedrec,alvarion.surb-stats,alvarion.lqi-stats
+alvarion.droppedrec,alvarion.surb-stats,alvarion.lqi-stats, \
+framerelay.bits, framerelay.frames, framerelay.congestion
# values available to prefab reports:
@@ -5946,5 +5947,71 @@
GPRINT:pktsOut:AVERAGE:"Avg \\: %8.2lf %s" \
GPRINT:pktsOut:MIN:"Min \\: %8.2lf %s" \
GPRINT:pktsOut:MAX:"Max \\: %8.2lf %s\\n"
-
+
+report.framerelay.bits.name=Bits In/Out
+report.framerelay.bits.columns=frReceivedOctets,frSentOctets
+report.framerelay.bits.propertiesValues=frDlci
+report.framerelay.bits.type=frCircuitIfIndex
+report.framerelay.bits.command=--title="Bits In/Out of DLCI {frDlci}" \
+ --vertical-label="Bits per second" \
+ DEF:octIn={rrd1}:frReceivedOctets:AVERAGE \
+ DEF:octOut={rrd2}:frSentOctets:AVERAGE \
+ CDEF:rawbitsIn=octIn,8,* \
+ CDEF:rawbitsOut=octOut,8,* \
+ CDEF:rawbitsOutNeg=0,rawbitsOut,- \
+ CDEF:rawtotBits=octIn,octOut,+,8,* \
+ CDEF:bitsIn=rawbitsIn,UN,0,rawbitsIn,IF \
+ CDEF:bitsOut=rawbitsOut,UN,0,rawbitsOut,IF \
+ CDEF:totBits=rawtotBits,UN,0,rawtotBits,IF \
+ CDEF:outSum=bitsOut,{diffTime},* \
+ CDEF:inSum=bitsIn,{diffTime},* \
+ CDEF:totSum=totBits,{diffTime},* \
+ AREA:rawbitsIn#00ff00:"In " \
+ GPRINT:rawbitsIn:AVERAGE:"Avg \\: %8.2lf %s" \
+ GPRINT:rawbitsIn:MIN:"Min \\: %8.2lf %s" \
+ GPRINT:rawbitsIn:MAX:"Max \\: %8.2lf %s\\n" \
+ AREA:rawbitsOutNeg#0000ff:"Out" \
+ GPRINT:rawbitsOut:AVERAGE:"Avg \\: %8.2lf %s" \
+ GPRINT:rawbitsOut:MIN:"Min \\: %8.2lf %s" \
+ GPRINT:rawbitsOut:MAX:"Max \\: %8.2lf %s\\n" \
+ GPRINT:inSum:AVERAGE:" Tot In \\: %8.2lf %s" \
+ GPRINT:outSum:AVERAGE:" Tot Out \\: %8.2lf %s" \
+ GPRINT:totSum:AVERAGE:" Tot \\: %8.2lf %s\\n"
+
+report.framerelay.frames.name=Frames In/Out
+report.framerelay.frames.columns=frReceivedFrames,frSentFrames
+report.framerelay.frames.propertiesValues=frDlci
+report.framerelay.frames.type=frCircuitIfIndex
+report.framerelay.frames.command=--title="Frames In/Out of DLCI {frDlci}" \
+ --vertical-label="Frames per Second" \
+ DEF:fpsIn={rrd1}:frReceivedFrames:AVERAGE \
+ DEF:fpsOut={rrd2}:frSentFrames:AVERAGE \
+ CDEF:fpsOutNeg=0,fpsOut,- \
+ AREA:fpsIn#00ff00:"In " \
+ GPRINT:fpsIn:AVERAGE:"Avg \\: %8.2lf %s" \
+ GPRINT:fpsIn:MIN:"Min \\: %8.2lf %s" \
+ GPRINT:fpsIn:MAX:"Max \\: %8.2lf %s\\n" \
+ AREA:fpsOutNeg#0000ff:"Out" \
+ GPRINT:fpsOut:AVERAGE:"Avg \\: %8.2lf %s" \
+ GPRINT:fpsOut:MIN:"Min \\: %8.2lf %s" \
+ GPRINT:fpsOut:MAX:"Max \\: %8.2lf %s\\n" \
+
+report.framerelay.congestion.name=FECNs / BECNs
+report.framerelay.congestion.columns=frReceivedBECNs,frReceivedFECNs
+report.framerelay.congestion.propertiesValues=frDlci
+report.framerelay.congestion.type=frCircuitIfIndex
+report.framerelay.congestion.command=--title="FECNs/BECNs of DLCI {frDlci}" \
+ --vertical-label="FECN/BECN per Second" \
+ DEF:becns={rrd1}:frReceivedBECNs:AVERAGE \
+ DEF:fecns={rrd2}:frReceivedFECNs:AVERAGE \
+ CDEF:fecnsNeg=0,fecns,- \
+ AREA:becns#00ff00:"BECNs" \
+ GPRINT:becns:AVERAGE:"Avg \\: %8.2lf %s" \
+ GPRINT:becns:MIN:"Min \\: %8.2lf %s" \
+ GPRINT:becns:MAX:"Max \\: %8.2lf %s\\n" \
+ AREA:fecnsNeg#0000ff:"FECNs" \
+ GPRINT:fecns:AVERAGE:"Avg \\: %8.2lf %s" \
+ GPRINT:fecns:MIN:"Min \\: %8.2lf %s" \
+ GPRINT:fecns:MAX:"Max \\: %8.2lf %s\\n" \
+
## EOF
Index: opennms-daemon/src/main/filtered/etc/datacollection-config.xml
===================================================================
--- opennms-daemon/src/main/filtered/etc/datacollection-config.xml
(revision 9264)
+++ opennms-daemon/src/main/filtered/etc/datacollection-config.xml
(working copy)
@@ -9,6 +9,11 @@
<rra>RRA:MIN:0.5:288:366</rra>
</rrd>
+ <resourceType name="frCircuitIfIndex" label="Frame-Relay (RFC1315)">
+ <persistenceSelectorStrategy
class="org.opennms.netmgt.collectd.PersistAllSelectorStrategy"/>
+ <storageStrategy
class="org.opennms.netmgt.dao.support.FrameRelayStorageStrategy"/>
+ </resourceType>
+
<resourceType name="ciscoEnvMonTemperatureStatusIndex" label="Cisco
Temperature"
resourceLabel="${cvmTempStatusDescr} (index ${index})">
<persistenceSelectorStrategy
class="org.opennms.netmgt.collectd.PersistAllSelectorStrategy"/>
@@ -36,7 +41,7 @@
<resourceType name="hrStorageIndex" label="Storage (MIB-2 Host Resources)"
resourceLabel="${hrStorageDescr} (index ${index})">
<persistenceSelectorStrategy
class="org.opennms.netmgt.collectd.PersistAllSelectorStrategy"/>
- <storageStrategy
class="org.opennms.netmgt.dao.support.IndexStorageStrategy"/>
+ <storageStrategy
class="org.opennms.netmgt.dao.support.HostFileSystemStorageStrategy"/>
</resourceType>
<resourceType name="ipuMGCPMsgStatsEntry" label="IP Unity MGCP Message
Stats"
@@ -129,6 +134,27 @@
</resourceType>
<groups>
+ <group name="cisco-frame-relay" ifType="all">
+ <mibObj oid=".1.3.6.1.4.1.9.9.49.1.2.2.1.1"
instance="frCircuitIfIndex" alias="frIfName" type="string" />
+ <mibObj oid=".1.3.6.1.4.1.9.9.49.1.2.2.1.2"
instance="frCircuitIfIndex" alias="frIfType" type="string" />
+ <mibObj oid=".1.3.6.1.4.1.9.9.49.1.2.2.1.3"
instance="frCircuitIfIndex" alias="frSubifIndex" type="string" />
+ <mibObj oid=".1.3.6.1.4.1.9.9.49.1.2.1.1.1"
instance="frCircuitIfIndex" alias="frDEins" type="counter" />
+ <mibObj oid=".1.3.6.1.4.1.9.9.49.1.2.1.1.2"
instance="frCircuitIfIndex" alias="frDEouts" type="counter" />
+ <mibObj oid=".1.3.6.1.4.1.9.9.49.1.2.1.1.3"
instance="frCircuitIfIndex" alias="frDropPktsOuts" type="counter" />
+ </group>
+
+ <group name="rfc1315-frame-relay" ifType="all">
+ <mibObj oid=".1.3.6.1.2.1.10.32.2.1.1" instance="frCircuitIfIndex"
alias="frIfIndex" type="string" />
+ <mibObj oid=".1.3.6.1.2.1.10.32.2.1.2" instance="frCircuitIfIndex"
alias="frDlci" type="string" />
+ <mibObj oid=".1.3.6.1.2.1.10.32.2.1.3" instance="frCircuitIfIndex"
alias="frState" type="string" />
+ <mibObj oid=".1.3.6.1.2.1.10.32.2.1.4" instance="frCircuitIfIndex"
alias="frReceivedFECNs" type="Counter" />
+ <mibObj oid=".1.3.6.1.2.1.10.32.2.1.5" instance="frCircuitIfIndex"
alias="frReceivedBECNs" type="Counter" />
+ <mibObj oid=".1.3.6.1.2.1.10.32.2.1.6" instance="frCircuitIfIndex"
alias="frSentFrames" type="Counter" />
+ <mibObj oid=".1.3.6.1.2.1.10.32.2.1.7" instance="frCircuitIfIndex"
alias="frSentOctets" type="Counter" />
+ <mibObj oid=".1.3.6.1.2.1.10.32.2.1.8" instance="frCircuitIfIndex"
alias="frReceivedFrames" type="Counter" />
+ <mibObj oid=".1.3.6.1.2.1.10.32.2.1.9" instance="frCircuitIfIndex"
alias="frReceivedOctets" type="Counter" />
+ </group>
+
<!-- data from standard (mib-2) sources -->
<group name="mib2-interfaces" ifType="all">
<mibObj oid=".1.3.6.1.2.1.2.2.1.10" instance="ifIndex"
alias="ifInOctets" type="counter" />
@@ -1642,6 +1668,8 @@
<includeGroup>adsl-line</includeGroup>
<includeGroup>cisco-rttmon-latest-jitter-stats</includeGroup>
<includeGroup>cisco-rttmon-latest-rtp-stats</includeGroup>
+ <includeGroup>rfc1315-frame-relay</includeGroup>
+ <includeGroup>cisco-frame-relay</includeGroup>
</collect>
</systemDef>
@@ -1810,6 +1838,7 @@
<collect>
<includeGroup>mib2-host-resources-system</includeGroup>
<includeGroup>mib2-host-resources-memory</includeGroup>
+ <includeGroup>mib2-host-resources-storage</includeGroup>
<includeGroup>net-snmp-disk</includeGroup>
<includeGroup>ucd-loadavg</includeGroup>
<includeGroup>ucd-memory</includeGroup>
Index: opennms-services/src/main/java/org/opennms/netmgt/collectd/NodeInfo.java
===================================================================
--- opennms-services/src/main/java/org/opennms/netmgt/collectd/NodeInfo.java
(revision 9264)
+++ opennms-services/src/main/java/org/opennms/netmgt/collectd/NodeInfo.java
(working copy)
@@ -91,4 +91,9 @@
public String getInstance() {
return null; //For node type resources, use the default instance
}
+
+ public String getLabel() {
+ return null;
+ }
+
} // end class
Index:
opennms-services/src/main/java/org/opennms/netmgt/collectd/AliasedResource.java
===================================================================
---
opennms-services/src/main/java/org/opennms/netmgt/collectd/AliasedResource.java
(revision 9264)
+++
opennms-services/src/main/java/org/opennms/netmgt/collectd/AliasedResource.java
(working copy)
@@ -123,4 +123,8 @@
public String getInstance() {
return null; //For node and interface type resources, use the default
instance
}
+
+ public String getLabel() {
+ return getDomain() + '/' + getAliasDir();
+ }
}
Index:
opennms-services/src/main/java/org/opennms/netmgt/collectd/CollectionResource.java
===================================================================
---
opennms-services/src/main/java/org/opennms/netmgt/collectd/CollectionResource.java
(revision 9264)
+++
opennms-services/src/main/java/org/opennms/netmgt/collectd/CollectionResource.java
(working copy)
@@ -67,4 +67,11 @@
* @return
*/
public String getInstance();
+
+ /**
+ * Returns a unique label for each resource depending on resource type.
+ * This label is the same label used when constructing the resource ID.
+ * @Return
+ */
+ public String getLabel();
}
Index:
opennms-services/src/main/java/org/opennms/netmgt/collectd/CollectionAgent.java
===================================================================
---
opennms-services/src/main/java/org/opennms/netmgt/collectd/CollectionAgent.java
(revision 9264)
+++
opennms-services/src/main/java/org/opennms/netmgt/collectd/CollectionAgent.java
(working copy)
@@ -38,6 +38,7 @@
import java.net.InetAddress;
import java.util.Set;
+import org.opennms.netmgt.config.SnmpCollectionAgent;
import org.opennms.netmgt.poller.NetworkInterface;
import org.opennms.netmgt.snmp.SnmpAgentConfig;
@@ -45,7 +46,7 @@
*
* @author <a href="mailto:[EMAIL PROTECTED]">Mathew Brozowski</a>
*/
-public interface CollectionAgent extends NetworkInterface {
+public interface CollectionAgent extends NetworkInterface,SnmpCollectionAgent {
public abstract void setMaxVarsPerPdu(int maxVarsPerPdu);
Index:
opennms-services/src/main/java/org/opennms/netmgt/collectd/GenericIndexResource.java
===================================================================
---
opennms-services/src/main/java/org/opennms/netmgt/collectd/GenericIndexResource.java
(revision 9264)
+++
opennms-services/src/main/java/org/opennms/netmgt/collectd/GenericIndexResource.java
(working copy)
@@ -33,6 +33,7 @@
import java.io.File;
+import org.opennms.netmgt.config.StorageStrategy;
import org.opennms.netmgt.model.RrdRepository;
import org.opennms.netmgt.snmp.SnmpInstId;
@@ -40,6 +41,7 @@
private SnmpInstId m_inst;
private String m_name;
+ private String m_resourceLabel;
public GenericIndexResource(ResourceType def, String name, SnmpInstId
inst) {
super(def);
@@ -47,19 +49,16 @@
m_inst = inst;
}
- // XXX should be based on the storageStrategy
@Override
public File getResourceDir(RrdRepository repository) {
- File rrdBaseDir = repository.getRrdBaseDir();
- File nodeDir = new File(rrdBaseDir,
String.valueOf(getCollectionAgent().getNodeId()));
- File typeDir = new File(nodeDir, m_name);
- File instDir = new File(typeDir, m_inst.toString());
- log().debug("getResourceDir: " + instDir.toString());
- return instDir;
+ String resourcePath =
getStrategy().getRelativePathForAttribute(getParent(), getLabel(), null);
+ File resourceDir = new File(repository.getRrdBaseDir(), resourcePath);
+ log().debug("getResourceDir: " + resourceDir);
+ return resourceDir;
}
public String toString() {
- return "node["+getCollectionAgent().getNodeId() + "]." +
getResourceTypeName() + "[" + m_inst + "]";
+ return "node["+getCollectionAgent().getNodeId() + "]." +
getResourceTypeName() + "[" + getLabel() + "]";
}
@@ -80,4 +79,23 @@
public String getInstance() {
return m_inst.toString();
}
+
+ private StorageStrategy getStrategy() {
+ return
((GenericIndexResourceType)getResourceType()).getStorageStrategy();
+ }
+
+ private String getParent() {
+ return String.valueOf(getCollectionAgent().getNodeId());
+ }
+
+ /*
+ * Because call getResourceNameFromIndex could be expensive.
+ * This class save the returned value from Strategy on a local variable.
+ */
+ public String getLabel() {
+ if (m_resourceLabel == null) {
+ m_resourceLabel =
getStrategy().getResourceNameFromIndex(getParent(), getInstance());
+ }
+ return m_resourceLabel;
+ }
}
Index:
opennms-services/src/main/java/org/opennms/netmgt/collectd/DefaultCollectionAgent.java
===================================================================
---
opennms-services/src/main/java/org/opennms/netmgt/collectd/DefaultCollectionAgent.java
(revision 9264)
+++
opennms-services/src/main/java/org/opennms/netmgt/collectd/DefaultCollectionAgent.java
(working copy)
@@ -279,6 +279,14 @@
return ifInfos;
}
+ public String getSnmpInterfaceLabel(int ifIndex) {
+ for (SnmpIfData ifData : getSnmpInterfaceData()) {
+ if (ifData.getIfIndex() == ifIndex)
+ return ifData.getLabelForRRD();
+ }
+ return null;
+ }
+
public long getSavedSysUpTime() {
return m_sysUpTime;
}
Index:
opennms-services/src/main/java/org/opennms/netmgt/collectd/GenericIndexResourceType.java
===================================================================
---
opennms-services/src/main/java/org/opennms/netmgt/collectd/GenericIndexResourceType.java
(revision 9264)
+++
opennms-services/src/main/java/org/opennms/netmgt/collectd/GenericIndexResourceType.java
(working copy)
@@ -85,6 +85,8 @@
}
m_storageStrategy.setResourceTypeName(m_name);
+ if (getAgent() != null)
+ m_storageStrategy.setCollectionAgent(getAgent());
}
@Override
Index:
opennms-services/src/main/java/org/opennms/netmgt/collectd/HttpCollector.java
===================================================================
---
opennms-services/src/main/java/org/opennms/netmgt/collectd/HttpCollector.java
(revision 9264)
+++
opennms-services/src/main/java/org/opennms/netmgt/collectd/HttpCollector.java
(working copy)
@@ -675,6 +675,10 @@
public String getInstance() {
return null;
}
+
+ public String getLabel() {
+ return null;
+ }
}
class HttpCollectionAttributeType implements CollectionAttributeType {
Index:
opennms-services/src/main/java/org/opennms/netmgt/collectd/AbstractCollectionResource.java
===================================================================
---
opennms-services/src/main/java/org/opennms/netmgt/collectd/AbstractCollectionResource.java
(revision 9264)
+++
opennms-services/src/main/java/org/opennms/netmgt/collectd/AbstractCollectionResource.java
(working copy)
@@ -111,4 +111,8 @@
public abstract boolean shouldPersist(ServiceParameters params);
-}
\ No newline at end of file
+ public String getLabel() {
+ return null;
+ }
+
+}
-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
Please read the OpenNMS Mailing List FAQ:
http://www.opennms.org/index.php/Mailing_List_FAQ
opennms-devel mailing list
To *unsubscribe* or change your subscription options, see the bottom of this
page:
https://lists.sourceforge.net/lists/listinfo/opennms-devel