diff options
author | elie <elie> | 2012-08-12 16:44:39 +0000 |
---|---|---|
committer | elie <elie> | 2012-08-12 16:44:39 +0000 |
commit | 3d99027a83bfe72759178784bebf843651964c09 (patch) | |
tree | dc69d79e492dd151459086092ef7a1086df0eb14 | |
parent | dec43da377f929a51584cfd4e98fdf8630172bfa (diff) | |
download | pysnmp-3d99027a83bfe72759178784bebf843651964c09.tar.gz |
MibVariable.addMibSources() added
-rw-r--r-- | pysnmp/entity/rfc3413/oneliner/mibvar.py | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/pysnmp/entity/rfc3413/oneliner/mibvar.py b/pysnmp/entity/rfc3413/oneliner/mibvar.py index de517da..99297f5 100644 --- a/pysnmp/entity/rfc3413/oneliner/mibvar.py +++ b/pysnmp/entity/rfc3413/oneliner/mibvar.py @@ -1,5 +1,6 @@ import sys from pysnmp.proto import rfc1902 +from pysnmp.smi.builder import ZipMibSource from pysnmp.error import PySnmpError from pyasn1.error import PyAsn1Error @@ -19,7 +20,7 @@ class MibVariable: def __init__(self, *args): self.__args = args - self.__modNamesToLoad = None + self.__mibSourcesToAdd = self.__modNamesToLoad = None self.__state = self.stDirty # @@ -52,7 +53,15 @@ class MibVariable: def isFullyResolved(self): return not (self.__state & self.stUnresolved) - # a gateway to MibViewController to perform a deferred load + # + # A gateway to MIBs manipulation routines + # + + def addMibSource(self, *mibSources): + self.__mibSourcesToAdd = mibSources + return self + + # provides deferred MIBs load def loadMibs(self, *modNames): self.__modNamesToLoad = modNames return self @@ -60,6 +69,13 @@ class MibVariable: # this would eventually be called by an entity which posses a # reference to MibViewController def resolveWithMib(self, mibViewController, oidOnly=False): + if self.__mibSourcesToAdd is not None: + mibSources = tuple( + [ ZipMibSource(x) for x in self.__mibSourcesToAdd ] + ) + mibViewController.mibBuilder.getMibSources() + mibViewController.mibBuilder.setMibSources(*mibSources) + self.__mibSourcesToAdd = None + if self.__modNamesToLoad is not None: mibViewController.mibBuilder.loadModules(*self.__modNamesToLoad) self.__modNamesToLoad = None @@ -202,5 +218,5 @@ class MibVariable: return getattr(self.__oid, attr) raise AttributeError else: - raise PySnmpError('%s object not properly initialized' % self.__class__.__name__) + raise PySnmpError('%s object not properly initialized for %s access' % (self.__class__.__name__, attr)) |