virtualpdu/requirements.txt
Mathieu Mitchell 047d6a900a Introduce power distribution units SNMP agents
The provided APC RackPDU implementation corresponds to (a subset of) the
actual APC RackPDU devices.

Also provided is a PDUTestHarness test class to be able to have an
actual PDU listen to SNMP requests. This was done so integration tests
can actually run against the test subject in a unitary fashion.

A pysnmp_handler is provided to handle converting an SNMP message to
calls on an "OID store". It was mostly sourced from a pysnmp example
that is not shipped with the package. Heavily modified for our purposes
and code style. This approach was preferred to Twisted-SNMP (and
pysnmp-se), because the latter does not support Python 3 and it allows
only a single reactor per process. That is incompatible with our
integration test approach.

An SNMP client "wrapper" was provided to simplify SNMP requests and to
raise exceptions when errors happen, so we can assert them during tests.
Ideally, the SNMP wrapper could be extracted into it's own project, but
it it deemed small enough to stay here, for now. While looking for
alternatives to writing our own wrapper, we found snmpy and nelsnmp. The
former had a limitation around the fact that you were forced to provide
an MIB and do lookup by names. It was not possible (short of monkey
patching) to strip the name <> OID lookup. On the other hand, nelsnmp
worked for direct OID lookups, but did type validation when querying.
This prevented duck typing because PDU and PDUOutlets use actual ASN.1
pysnmp objects to avoid any confusion. nelsnmp would check for "int"
type and refuse to proceed. An additional mapping table could have been
provided, but this was seen as more work. Finally, only generic
exceptions were raised, with an error message. This was deemed as a
less-than-ideal scenario, especially when trying to assert
RequestTimedOut behaviors.
2016-08-19 10:47:14 -04:00

8 lines
285 B
Plaintext

# The order of packages is significant, because pip processes them in the order
# of appearance. Changing the order has an impact on the overall integration
# process, which may cause wedges in the gate later.
pbr>=1.6 # Apache-2.0
libvirt-python>=1.2.5 # LGPLv2+
pysnmp==4.3.2 # BSD