MIB compiler#
- class pysmi.compiler.MibCompiler(parser, codegen, writer)#
Top-level, user-facing, composite MIB compiler object.
MibCompiler implements high-level MIB transformation processing logic. It executes its actions by calling the following specialized objects:
readers - to acquire ASN.1 MIB data
searchers - to see if transformed MIB already exists and no processing is necessary
parser - to parse ASN.1 MIB into AST
code generator - to perform actual MIB transformation
borrowers - to fetch pre-transformed MIB if transformation is impossible
writer - to store transformed MIB data
Required components must be passed to MibCompiler on instantiation. Those components are: parser, codegenerator and writer.
Optional components could be set or modified at later phases of MibCompiler life. Unlike singular, required components, optional one can be present in sequences to address many possible sources of data. They are readers, searchers and borrowers.
Creates an instance of MibCompiler class.
- Parameters:
parser – ASN.1 MIB parser object
codegen – MIB transformation object
writer – transformed MIB storing object
- addBorrowers(*borrowers)#
Add more transformed MIBs repositories to borrow MIBs from.
Whenever MibCompiler.compile encounters MIB module which neither of the searchers can find or fetched ASN.1 MIB module can not be parsed (due to syntax errors), these borrowers objects will be invoked in order of their addition asking each if already transformed MIB can be fetched (borrowed).
- Parameters:
borrowers – borrower object(s)
- Returns:
reference to itself (can be used for call chaining)
- addSearchers(*searchers)#
Add more transformed MIBs repositories.
MibCompiler.compile will invoke each of configured searcher objects in order of their addition asking each if already transformed MIB module already exists and is more recent than specified.
- Parameters:
searchers – searcher object(s)
- Returns:
reference to itself (can be used for call chaining)
- addSources(*sources)#
Add more ASN.1 MIB source repositories.
MibCompiler.compile will invoke each of configured source objects in order of their addition asking each to fetch MIB module specified by name.
- Parameters:
sources – reader object(s)
- Returns:
reference to itself (can be used for call chaining)
- compile(*mibnames, **options)#
Transform requested and possibly referred MIBs.
The compile method should be invoked when MibCompiler object is operational meaning at least sources are specified.
Once called with a MIB module name, compile will:
fetch ASN.1 MIB module with given name by calling sources
make sure no such transformed MIB already exists (with searchers)
parse ASN.1 MIB text with parser
perform actual MIB transformation into target format with code generator
may attempt to borrow pre-transformed MIB through borrowers
write transformed MIB through writer
The above sequence will be performed for each MIB name given in mibnames and may be performed for all MIBs referred to from MIBs being processed.
- Parameters:
mibnames – list of ASN.1 MIBs names
options – options that affect the way PySMI components work
- Returns:
A dictionary of MIB module names processed (keys) and MibStatus class instances (values)