1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
#
# Attach PySMI MIB compiler to PySNMP MIB builder and configure
# both accordingly.
#
import os
import sys
defaultSources = [ 'file:///usr/share/snmp/mibs' ]
if sys.platform[:3] == 'win':
defaultDest = os.path.join(os.path.expanduser("~"),
'PySNMP Configuration', 'mibs')
else:
defaultDest = os.path.join(os.path.expanduser("~"), '.pysnmp', 'mibs')
defaultBorrowers = []
try:
from pysmi.reader.url import getReadersFromUrls
from pysmi.searcher.pypackage import PyPackageSearcher
from pysmi.searcher.stub import StubSearcher
from pysmi.borrower.pyfile import PyFileBorrower
from pysmi.writer.pyfile import PyFileWriter
from pysmi.parser.smi import parserFactory
from pysmi.parser.dialect import smiV1Relaxed
from pysmi.codegen.pysnmp import PySnmpCodeGen, baseMibs
from pysmi.compiler import MibCompiler
except ImportError:
from pysnmp.smi import error
def addMibCompiler(mibBuilder,
sources=[],
destination='',
borrowers=[]):
raise error.SmiError('MIB compiler not available (pysmi not installed)')
else:
def addMibCompiler(mibBuilder,
sources=defaultSources,
destination=defaultDest,
borrowers=defaultBorrowers):
compiler = MibCompiler(
parserFactory(**smiV1Relaxed)(),
PySnmpCodeGen(),
PyFileWriter(destination)
)
compiler.addSources(*getReadersFromUrls(*sources))
compiler.addSearchers(
StubSearcher(*baseMibs) # XXX
)
compiler.addSearchers(
*[ PyPackageSearcher(x.fullPath()) for x in mibBuilder.getMibSources() ]
)
compiler.addBorrowers(
*[ PyFileBorrower(x, genTexts=mibBuilder.loadTexts) for x in getReadersFromUrls(*borrowers, **dict(originalMatching=False, lowcaseMatching=False)) ]
)
mibBuilder.setMibCompiler(compiler, destination)
|