[Twisted-Python] SNMPProtocol, request for review...

Mike C. Fletcher mcfletch at rogers.com
Sun Nov 2 13:56:15 EST 2003

I've built an SNMP Protocol for Twisted (based on a pattern from Patrick 
K. O'Brien), but as I'm a rather new Twisted developer, I'm wondering if 
someone more "in the know" could take a look at the package and see if I 
got the "ideas" right.  That is, whether I'm going about the entire 
thing incorrectly/correctly, or whether I've missed anything that would 
be obvious to an experienced twisted developer.

The protocol provides for sending get, getnext and getbulk requests, but 
doesn't yet support trap or answering any query (i.e. in SNMP-eese it's 
a manager-only protocol at the moment, not an agent-side protocol).

I'm particularly interested in:

    * whether the timeouts are handled properly (we do a crude callLater
      and check for deferred.called for them), is there a more elegant
      Twisted mechanism for handling timed-out operations?
    * whether the message IDs are handled properly (we just store all
      "live" messages in a dictionary and delete them when they are
      timed out or responded to), is there some more elegant Twisted
    * whether the entire approach is okay. I put most of the code and
      API on the protocol object, with a helper object for managing
      tabular downloads.  Is there a more "Twisted" way of doing this? 
      Should the get method on the protocol be implemented as a separate
      object driving the protocol as well?  What should be in the
      "protocol" level, (as opposed to higher-level "application" code)?

Package is here:
It requires pysnmp-3.3.5, available here:

You'll need an SNMP agent against which to test (as well as some OIDs 
for that agent), as the ips in the scripts won't work without the proper 
community IDs (or from unrecognised manager IPs, for that matter).

Feedback appreciated,

  Mike C. Fletcher
  Designer, VR Plumber, Coder

More information about the Twisted-Python mailing list