[SNMP4J] Overwriting values for different rowIds
Hanish Bansal
hanish.bansal.agarwal at gmail.com
Sat Sep 7 11:49:32 CEST 2013
Hi
I am registering table with snmp agent as:
public static MOTable<MOTableRow<Variable>, MOColumn<Variable>,
MOTableModel<MOTableRow<Variable>>> createTableFromJSON(
JSONObject data) {
MOTable table = null;
if (data != null) {
MOTableSubIndex[] subIndex = new MOTableSubIndex[] { moFactory
.createSubIndex(null, SMIConstants.SYNTAX_INTEGER, 1, 100) };
MOTableIndex index = moFactory.createIndex(subIndex, false,
new MOTableIndexValidator() {
public boolean isValidIndex(OID index) {
boolean isValidIndex = true;
return isValidIndex;
}
});
Object indexesObj = data.get("indexValues");
if(indexesObj!=null){
String indexes = data.getString("indexValues");
String tableOID = data.getString("tableId");
JSONArray columnArray = data.getJSONArray("columns");
int columnSize = columnArray.size();
MOColumn[] columns = new MOColumn[columnSize];
Variable[] initialValues = new Variable[columnSize];
for (int i = 0; i < columnSize; i++) {
JSONObject columnObject = columnArray.getJSONObject(i);
columns[i] = moFactory.createColumn(columnObject
.getInt("columnOID"), columnObject.getInt("dataType"),
moFactory.createAccess(columnObject
.getInt("accessType")));
initialValues[i] =
getVariable(columnObject.get("defaultValue"));
}
MOTableModel tableModel = moFactory.createTableModel(new OID(
tableOID), index, columns);
table = moFactory.createTable(new OID(tableOID), index, columns,
tableModel);
String[] indexArrString = indexes.split(";");
for(String indexStr: indexArrString){
MOTableRow<Variable> row = createRow(new
Integer(indexStr.trim()), initialValues);
table.addRow(row);
}
}
}
return table;
}
where json data is this:
{
"tableName": "table1",
"tableId": ".1.3.6.1.4.1.1.201.6.1",
"columns": [
{
"columnName": "column1",
"columnOID": 1,
"dataType": 70,
"accessType": 1,
"defaultValue":0
},
{
"columnName": "column2",
"columnOID": 2,
"dataType": 70,
"accessType": 1,
"defaultValue":0
},
{
"columnName": "column3",
"columnOID": 3,
"dataType": 70,
"accessType": 1,
"defaultValue":0
},
]
}
Now i have a table with oid .1.3.6.1.4.1.1.201.6.*1* where 1 is entry id
and 6 is table id.
I have registered multiple rows with 1, 2, 3 row index. Now If i send
values for rowindex 1 i.e. oid=
.1.3.6.1.4.1.1.201.6.1.1.1
then this will set values for
.1.3.6.1.4.1.1.201.6.1.1.1
.1.3.6.1.4.1.1.201.6.1.1.2
.1.3.6.1.4.1.1.201.6.1.1.3
The method which i am using for publishing snmp params is:
public void pushValue(String oid, Object value) {
_log.debug("Enter pushValue ");
VariableBinding binding = new VariableBinding();
binding.setOid(new OID(oid));
binding.setVariable(MOCreator.getVariable(value));
// publish snmp parameter
* DefaultMOServer.setValue(getServer(), null, binding);*
}
I debug the code when control goes to*
DefaultMOServer.setValue(getServer(), null, binding); ,
it internally when reach DefaultMoTable class's setValue() method then
it set values of all columns independent of row index.
*
*Please let me know what i am missing ?
*
On Wed, Aug 28, 2013 at 4:03 AM, Frank Fock <fock at agentpp.com> wrote:
> As I already mentioned: the SNMP4J-Agent code cannot cause this
> misbehavior.
>
> You will have to debug your code to find the problem source...
>
> Frank
>
> Am 27.08.2013 06:34, schrieb Hanish Bansal:
>
> Thats the problem i am facing. I debugged the code and everything is
> looking fine. I am able to register table with SNMP agent with their
> default values 0.
>
> When i get using *snmpwalk* command I am able to see different row
> indexes with all column's default value 0. After publishing value for a row
> index using above code(Shared in last mail) values of all columns for all
> row indexes get changed.
>
>
> On Mon, Aug 26, 2013 at 6:40 PM, Frank Fock <fock at agentpp.com> wrote:
>
>> Hi,
>>
>> I think the error is located in your code. I cannot see
>> from the SNMP4J-Agent code in DefaultMOTable
>> how it would be able to modify cells from other
>> columns or rows than specified if the specified OID
>> is a valid instance OID for that table.
>>
>> Best regards,
>> Frank
>>
>> Am 26.08.2013 10:38, schrieb Hanish Bansal:
>>
>> I am using below code to publish snmp parameters:
>>
>> public void pushValue(String oid, Object value) {
>> _log.debug("Enter pushValue ");
>> VariableBinding binding = new VariableBinding();
>> binding.setOid(new OID(oid));
>> binding.setVariable(MOCreator.getVariable(value));
>> // publish snmp parameter
>> DefaultMOServer.setValue(getServer(), null, binding);
>> _log.debug("Exit pushValue ");
>> }
>>
>>
>> Let me know if any more information required.
>>
>>
>>
>> On Mon, Aug 26, 2013 at 2:03 PM, Mark A. Flacy <mflacy at verizon.net>wrote:
>>
>>> I believe you will have to provide a code example before anyone can
>>> provide meaningful suggestions.
>>>
>>>
>>> Hanish Bansal <hanish.bansal.agarwal at gmail.com> wrote:
>>>>
>>>> Any Suggestion ??
>>>>
>>>>
>>>> On Wed, Aug 14, 2013 at 9:20 AM, Hanish Bansal <hanish.bansal.agarwal at gmail.com> wrote:
>>>>
>>>>
>>>>
>>>>> I am using "rowid" term for row index. I have agent configured for snmp
>>>>>
>>>>> table with two row indexes 111,222.
>>>>>
>>>>> I am publishing info using OIDs .1.3.6.1.4.1.1.102.1.1.1.111 to
>>>>>
>>>>> .1.3.6.1.4.1.1.102.1.1.2.111 where last digit(111) is row index. Then it
>>>>> sets values for both rowindexes 111 and 222.
>>>>>
>>>>>
>>>>>
>>>>> On Tue, Aug 13, 2013 at 7:29 PM, Frank Fock <fock at agentpp.com> wrote:
>>>>>
>>>>>
>>>>>> Hi,
>>>>>> I have problems to understand your term "rowid". SMI only knows a row
>>>>>> index. May be here is the source of the problem located?
>>>>>> Best regards,
>>>>>> Frank
>>>>>>
>>>>>> Am 13.08.2013 um 08:08 schrieb Hanish Bansal <
>>>>>> hanish.bansal.agarwal at gmail.com>:
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Hi All,
>>>>>>>
>>>>>>> We are using SNMPv3 for publishing snmp parameters. We are publishing
>>>>>>
>>>>>> data
>>>>>>>
>>>>>>>
>>>>>>> as snmp tables.
>>>>>>>
>>>>>>> I am facing an issue in below case:
>>>>>>>
>>>>>>> Multiple rowIDs for same component : When we are publishing parameters
>>>>>>
>>>>>> of
>>>>>>>
>>>>>>>
>>>>>>> one component using different rowIds from same jvm process,
>>>>>>> every-time
>>>>>>
>>>>>> we
>>>>>>>
>>>>>>> send a parameter using a rowId then it overwrite all columns value in
>>>>>>
>>>>>>
>>>>>> that
>>>>>>>
>>>>>>> table independent of rowID.
>>>>>>> E.g. CPU is a component(MODULE_ID=102). All CPU parameters will be
>>>>>>>
>>>>>>> published on 8001 port.
>>>>>>> There will be multiple cpu cores on a machine then each cpu core's
>>>>>>> parameters will be published using different rowID. All the rowids of
>>>>>>
>>>>>> all
>>>>>>
>>>>>>> the CPUs are set with the last sent value.
>>>>>>>
>>>>>>> I am using below maven dependency in my app:
>>>>>>>
>>>>>>> <dependency>
>>>>>>> <groupId>org.snmp4j</groupId>
>>>>>>> <artifactId>snmp4j-agent</artifactId>
>>>>>>>
>>>>>>> <version>2.0.8</version>
>>>>>>> </dependency>
>>>>>>>
>>>>>>> Any suggestion will be helpful.
>>>>>>>
>>>>>>> Thanks in advance !!
>>>>>>>
>>>>>>> --
>>>>>>> *Regards*
>>>>>>> *Hanish Bansal*
>>>>>>> ------------------------------
>>>>>>> SNMP4J mailing list
>>>>>>> SNMP4J at agentpp.orghttp://lists.agentpp.org/mailman/listinfo/snmp4j
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>> *Thanks & Regards*
>>>>> *Hanish Bansal*
>>>>
>>>>
>>>>
>>>>
>>>>
>>> --
>>> Sent from my Android phone with K-9 Mail. Please excuse my brevity.
>>>
>>
>>
>>
>> --
>> *Thanks & Regards*
>> *Hanish Bansal*
>>
>>
>> --
>> ---
>> AGENT++
>> Maximilian-Kolbe-Str. 10
>> 73257 Koengen, Germanyhttps://agentpp.com
>> Phone: +49 7024 8688230
>> Fax: +49 7024 8688231
>>
>>
>
>
> --
> *Thanks & Regards*
> *Hanish Bansal*
>
>
> --
> ---
> AGENT++
> Maximilian-Kolbe-Str. 10
> 73257 Koengen, Germanyhttps://agentpp.com
> Phone: +49 7024 8688230
> Fax: +49 7024 8688231
>
>
--
*Thanks & Regards*
*Hanish Bansal*
More information about the SNMP4J
mailing list