[openstack-dev] [all][monasca] pysnmp autogenerated code

Ilya Etingof ietingof at redhat.com
Fri May 11 07:26:09 UTC 2018

On 05/10/2018 05:01 PM, Stefano Canepa wrote:
> On 10 May 2018 at 10:55, Ilya Etingof <ietingof at redhat.com
> <mailto:ietingof at redhat.com>> wrote:
>     Hi Stefano,
>     The best solution would be of course to fix pysmi code generator [1] to
>     behave. ;-)
> ​This is something that pysmi author already gives for granted in the
> Release notes.
> I bet you know this better then me ;-)​
>     On the other hand, if you won't include the autogenerated code into your
>     package, the code generation would happen just once at run time - the
>     autogenerated module would get cached on the file system and loaded from
>     there ever after.
>     Theoretically, not pinning Python MIB in your package has an advantage
>     of letting pysmi pulling newer ASN.1 MIB and turning it into Python
>     whenever newer MIB revision becomes available.
> ​Ilya you're confusing me. Do you mean that, even if I load my MIB and
> all other it depends on from ASN.1, they are compiled into python byte
> code and cached and blah blah? ​

The workflow is this:

* pysnmp wants to load a MY-MIB by name (e.g. evaluate the contents of
MY-MIB.py, turn it into Python objects and link them up to its in-memory
MIB tree)
* pysnmp searches for MY-MIB.py[co] in its search path
* if pysnmp is successful, we are done
* if pysnmp does not find MY-MIB.py[co] and pysmi package is present,
pysnmp calls pysmi with MY-MIB name on input
* pysmi tries to find MY-MIB (e.g. in ASN.1 form) in its search path
(possibly including remote locations), compile it into MY-MIB.py[co] and
cache it somewhere within pysnmp search path
* if pysmi is successful, pysnmp starts over loading MY-MIB.py[co]

Hope this is helpful. ;)

More information about the OpenStack-dev mailing list