Sweet, I patched my development instance and have it up and running.  It
does exactly what I wanted.

My only thought is that I may change the way the hrstoragedescr directory
names are parsed so that I can always determine the original name from them.
Maybe convert each char in the string to ascii equiv or something.

Might be a moot point since hrStorageDescr is stored in strings.properties
anyway if you're collecting it.

Thanks Alejandro!

-Will

On 6/12/08 12:16 PM, "Alejandro Galue" <[EMAIL PROTECTED]> wrote:

> 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/FrameRelayStorageStra
> tegy.java
> ===================================================================
> --- 
> opennms-dao/src/main/java/org/opennms/netmgt/dao/support/FrameRelayStorageStra
> tegy.java (revision 0)
> +++ 
> opennms-dao/src/main/java/org/opennms/netmgt/dao/support/FrameRelayStorageStra
> tegy.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/HostFileSystemStorage
> Strategy.java
> ===================================================================
> --- 
> opennms-dao/src/main/java/org/opennms/netmgt/dao/support/HostFileSystemStorage
> Strategy.java (revision 0)
> +++ 
> opennms-dao/src/main/java/org/opennms/netmgt/dao/support/HostFileSystemStorage
> Strategy.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 (revi
> sion 9264)
> +++ 
> opennms-dao/src/main/java/org/opennms/netmgt/config/StorageStrategy.java (work
> ing 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,ms
> sqllockwaittime, \
>  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 (revi
> sion 9264)
> +++ 
> opennms-services/src/main/java/org/opennms/netmgt/collectd/NodeInfo.java (work
> ing 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.jav>
a
> ===================================================================
> --- 
> opennms-services/src/main/java/org/opennms/netmgt/collectd/AliasedResource.jav
> a (revision 9264)
> +++ 
> opennms-services/src/main/java/org/opennms/netmgt/collectd/AliasedResource.jav
> a (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.jav>
a
> ===================================================================
> --- 
> opennms-services/src/main/java/org/opennms/netmgt/collectd/CollectionAgent.jav
> a (revision 9264)
> +++ 
> opennms-services/src/main/java/org/opennms/netmgt/collectd/CollectionAgent.jav
> a (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/GenericIndexResourc
> e.java
> ===================================================================
> --- 
> opennms-services/src/main/java/org/opennms/netmgt/collectd/GenericIndexResourc
> e.java (revision 9264)
> +++ 
> opennms-services/src/main/java/org/opennms/netmgt/collectd/GenericIndexResourc
> e.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/DefaultCollectionAg
> ent.java
> ===================================================================
> --- 
> opennms-services/src/main/java/org/opennms/netmgt/collectd/DefaultCollectionAg
> ent.java (revision 9264)
> +++ 
> opennms-services/src/main/java/org/opennms/netmgt/collectd/DefaultCollectionAg
> ent.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/GenericIndexResourc
> eType.java
> ===================================================================
> --- 
> opennms-services/src/main/java/org/opennms/netmgt/collectd/GenericIndexResourc
> eType.java (revision 9264)
> +++ 
> opennms-services/src/main/java/org/opennms/netmgt/collectd/GenericIndexResourc
> eType.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/AbstractCollectionR
> esource.java
> ===================================================================
> --- 
> opennms-services/src/main/java/org/opennms/netmgt/collectd/AbstractCollectionR
> esource.java (revision 9264)
> +++ 
> opennms-services/src/main/java/org/opennms/netmgt/collectd/AbstractCollectionR
> esource.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


-------------------------------------------------------------------------
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

Reply via email to