[SNMP4J] Updating registered managed objects (adding rows to MIB table)

Marek Hajduczenia marek.hajduczenia at gmail.com
Tue Feb 26 23:58:56 CET 2013


Frank, 

Here is the code snippet for the main class (snmpAgentClientMain.java):
http://snipt.org/zfhab7. The agent code starts in line 110, MIB table is
constructed in lines 129 (using MOTableBuilder class) and createMibTable
function defined in snmpAgentClientMain class. The MOTableBuilder.java class
is snipped at http://snipt.org/zfhac3 and it is used to build the table
structure in a more organized fashion. 

Looking through the code of the MOTableBuilder class, and seeing how it is
used in snmpAgentClientMain class (line
server.registerManagedObject(builder.build());), I am  not cure how to add
more row values to the table that was constructed using either the
MOTableBuilder wrapper or using just functions defined in snmp4j library. At
some point of time, MOTable has to be created (its structure defined), row
values are added (I assume it is done using addRow function from snmp4j
class), and then registered with the agent (server.registerManagedObject()
function). Once it is registered, is there any way to just add rows with
values to the previously registered MIB table? Can I just use addRow on the
MOMutableTableModel type?

Marek

-----Original Message-----
From: snmp4j-bounces at agentpp.org [mailto:snmp4j-bounces at agentpp.org] On
Behalf Of Frank Fock
Sent: Tuesday, 26 February, 2013 10:00 PM
To: snmp4j at agentpp.org
Subject: Re: [SNMP4J] Updating registered managed objects (adding rows to
MIB table)


Hi Marek,

I do not know a "addRowValue" command and what is a "builder"?
I meant to use the 
http://www.snmp4j.org/agent/doc/org/snmp4j/agent/mo/MOTable.html#addRow(R)
method to add a row.
A table definition (MIB specification) never has any rows.

Best regards,
Frank

Am 26.02.2013 18:39, schrieb Marek Hajduczenia:
> Hi Frank,
>
>   
>
> thanks for the quick feedback. I must have not been really clear in my
> explanation and I apologize for that. What I want to achieve is not to add
> new rows into the table definition, but add new entries (new rows using
> addRowValue command) into the table.
>
>   
>
> In other words, how do I add row values (addRowValue) to builder after
> having executed
>
>   
>
> server.registerManagedObject(builder.build());
>
>   
>
> ?
>
>   
>
> When I try to add row values using builder.addRowValue and then register
the
> MO again, I get exception (quite expected, it is registered already)
>
>   
>
> Thanks again
>
>   
>
> Marek
>
>   
>
>> Hi,
>> The answer is very simple: Just add rows to the table (i.e. its table
>> model).
>> You can do this while the table itself is registered (operation is
>> thread safe).
>> Best regards,
>> Frank
>   
>
>
> Subject: Updating registered managed objects (adding rows to MIB table)
>
>   
>
> Dear all,
>
>   
>
> I am writing a small SNMP related project for my course. The task is to
> create an SNMP agent that will monitor a local selected folder and list
all
> files stored in this folder in a MIB. I have already MIB designed, agent
> working fine on the initial pass, i.e., it creates a MIB table, populates
> initial values (files found at first pass through the folder) and then
> registers MIB with the agent.
>
>   
>
> The code snippet building the table structure is shown below:
>
>   
>
> MOTableBuilder builder = new MOTableBuilder(oidNewRoot);
>
>                                                  
>
> // MIB structure
>
>                                  
>
>
builder.addColumnType(SMIConstants.SYNTAX_INTEGER32,MOAccessImpl.ACCESS_READ
> _ONLY);
>
>
builder.addColumnType(SMIConstants.SYNTAX_OCTET_STRING,MOAccessImpl.ACCESS_R
> EAD_ONLY);
>
>
builder.addColumnType(SMIConstants.SYNTAX_INTEGER,MOAccessImpl.ACCESS_READ_O
> NLY);
>
>
builder.addColumnType(SMIConstants.SYNTAX_OCTET_STRING,MOAccessImpl.ACCESS_R
> EAD_ONLY);
>
>
builder.addColumnType(SMIConstants.SYNTAX_INTEGER32,MOAccessImpl.ACCESS_READ
> _ONLY);
>
>
builder.addColumnType(SMIConstants.SYNTAX_INTEGER32,MOAccessImpl.ACCESS_READ
> _ONLY);
>
>
builder.addColumnType(SMIConstants.SYNTAX_OCTET_STRING,MOAccessImpl.ACCESS_R
> EAD_ONLY);
>
>
builder.addColumnType(SMIConstants.SYNTAX_OCTET_STRING,MOAccessImpl.ACCESS_R
> EAD_ONLY);
>
>
builder.addColumnType(SMIConstants.SYNTAX_INTEGER32,MOAccessImpl.ACCESS_READ
> _ONLY);
>
>
builder.addColumnType(SMIConstants.SYNTAX_INTEGER,MOAccessImpl.ACCESS_READ_W
> RITE);
>
>   
>
> The code snippet adding a row is shown below (it is repeated in a loop to
> add all found files):
>
>   
>
> builder.addRowValue(new Integer32(index));
>
> index++;
>
> builder.addRowValue(new OctetString(fileName.getName()));
>
> builder.addRowValue(new Integer32(3));
>
> builder.addRowValue(new OctetString(fileName.getPath()));
>
> builder.addRowValue(new Integer32((int)fileName.length()));
>
> builder.addRowValue(new Integer32(323));
>
> builder.addRowValue(new OctetString("Artista"));
>
> builder.addRowValue(new OctetString("Album"));
>
> builder.addRowValue(new Integer32(1980));
>
> builder.addRowValue(new Integer32(4));
>
>   
>
> Finally, I register the new MIB with the agent:
>
>   
>
> server.registerManagedObject(builder.build());
>
>   
>
> After that, I run agent on a loop, every 5 seconds checking whether a new
> file was added to the folder. When that happens, I can detect a new file
> added and create list of such files. However, I do not know (could not
find
> any information) on how to add row to already registered MIB. One thought
> was on reusing previously constructed table and just deregister it, then
add
> new rows as needed and the register again but it seems like a very crude
> solution to me. Is there any way to do that better? if so, I would
> appreciate any pointers.
>
>   
>
> Thank you in advance
>
>   
>
> Marek
>
>   
>
> _______________________________________________
> SNMP4J mailing list
> SNMP4J at agentpp.org
> http://lists.agentpp.org/mailman/listinfo/snmp4j

-- 
---
AGENT++
Maximilian-Kolbe-Str. 10
73257 Koengen, Germany
https://agentpp.com
Phone: +49 7024 8688230
Fax:   +49 7024 8688231

_______________________________________________
SNMP4J mailing list
SNMP4J at agentpp.org
http://lists.agentpp.org/mailman/listinfo/snmp4j




More information about the SNMP4J mailing list