all dict.has_key() & dict.get() invocations replaced with modern syntax

(this breaks compatibility with Python 2.1 and older).
pull/45/head
elie 2011-01-20 17:11:43 +00:00
parent e661d69e48
commit 2d34d4d970
30 changed files with 359 additions and 381 deletions

View File

@ -5,6 +5,9 @@ Revision 4.1.16a
protocols implemented.
- The error-indication codes moved from literals to objects for reliability
and clarity
- changes towards performance improvement:
+ all dict.has_key() & dict.get() invocations replaced with modern syntax
(this breaks compatibility with Python 2.1 and older).
Revision 4.1.15a
----------------

View File

@ -33,7 +33,7 @@ for mibVar in mibInstr:
def cbFun(transportDispatcher, transportDomain, transportAddress, wholeMsg):
while wholeMsg:
msgVer = api.decodeMessageVersion(wholeMsg)
if api.protoModules.has_key(msgVer):
if msgVer in api.protoModules:
pMod = api.protoModules[msgVer]
else:
print 'Unsupported SNMP version %s' % msgVer
@ -66,7 +66,7 @@ def cbFun(transportDispatcher, transportDomain, transportAddress, wholeMsg):
)
elif reqPDU.isSameTypeWith(pMod.GetRequestPDU()):
for oid, val in pMod.apiPDU.getVarBinds(reqPDU):
if mibInstrIdx.has_key(oid):
if oid in mibInstrIdx:
varBinds.append((oid, mibInstrIdx[oid](msgVer)))
else:
# No such instance

View File

@ -7,7 +7,7 @@ from pysnmp.proto import api
def cbFun(transportDispatcher, transportDomain, transportAddress, wholeMsg):
while wholeMsg:
msgVer = int(api.decodeMessageVersion(wholeMsg))
if api.protoModules.has_key(msgVer):
if msgVer in api.protoModules:
pMod = api.protoModules[msgVer]
else:
print 'Unsupported SNMP version %s' % msgVer

View File

@ -49,7 +49,7 @@ class AbstractSocketTransport(asyncore.dispatcher):
def del_channel (self, sockMap=None):
if sockMap is None:
sockMap = asyncore.socket_map
if sockMap.has_key(self):
if self in sockMap:
del sockMap[self]
def registerSocket(self, sockMap=None):

View File

@ -56,7 +56,7 @@ class DgramSocketTransport(AbstractSocketTransport):
try:
self.socket.sendto(outgoingMessage, transportAddress)
except socket.error, why:
if sockErrors.has_key(why[0]):
if why[0] in sockErrors:
debug.logger & debug.flagIO and debug.logger('handle_write: ignoring socket error %s' % (why,))
else:
raise socket.error, why
@ -73,7 +73,7 @@ class DgramSocketTransport(AbstractSocketTransport):
self._cbFun(self, transportAddress, incomingMessage)
return
except socket.error, why:
if sockErrors.has_key(why[0]):
if why[0] in sockErrors:
debug.logger & debug.flagIO and debug.logger('handle_read: known socket error %s' % (why,))
sockErrors[why[0]] and self.handle_close()
return

View File

@ -61,7 +61,7 @@ class AbstractTransportDispatcher:
self.__timerCallables.remove(timerCbFun)
def registerTransport(self, tDomain, transport):
if self.__transports.has_key(tDomain):
if tDomain in self.__transports:
raise error.CarrierError(
'Transport %s already registered' % (tDomain,)
)
@ -69,7 +69,7 @@ class AbstractTransportDispatcher:
self.__transports[tDomain] = transport
def unregisterTransport(self, tDomain):
if not self.__transports.has_key(tDomain):
if tDomain not in self.__transports:
raise error.CarrierError(
'Transport %s not registered' % (tDomain,)
)
@ -77,24 +77,30 @@ class AbstractTransportDispatcher:
del self.__transports[tDomain]
def getTransport(self, transportDomain):
return self.__transports.get(transportDomain)
if transportDomain in self.__transports:
return self.__transports[transportDomain]
def sendMessage(
self, outgoingMessage, transportDomain, transportAddress
):
transport = self.__transports.get(transportDomain)
if transport is None:
if transportDomain in self.__transports:
self.__transports[transportDomain].sendMessage(
outgoingMessage, transportAddress
)
else:
raise error.CarrierError(
'No suitable transport domain for %s' % (transportDomain,)
)
transport.sendMessage(outgoingMessage, transportAddress)
def handleTimerTick(self, timeNow):
for timerCallable in self.__timerCallables:
timerCallable(timeNow)
def jobStarted(self, jobId):
self.__jobs[jobId] = self.__jobs.get(jobId, 0) + 1
if jobId in self.__jobs:
self.__jobs[jobId] = self.__jobs[jobId] + 1
else:
self.__jobs[jobId] = 1
def jobFinished(self, jobId):
self.__jobs[jobId] = self.__jobs[jobId] - 1

View File

@ -18,7 +18,10 @@ class TwistedDispatcher(AbstractTransportDispatcher):
def __init__(self, *args, **kwargs):
AbstractTransportDispatcher.__init__(self)
self.__transportCount = 0
self.timeout = kwargs.get('timeout', 1.0)
if 'timeout' in kwargs:
self.timeout = kwargs['timeout']
else:
self.timeout = 1.0
self.loopingcall = task.LoopingCall(self.handleTimeout)
def handleTimeout(self):

View File

@ -34,7 +34,7 @@ class Debug:
self._flags = flagNone
self._printer = self.defaultPrinter
for f in flags:
if not flagMap.has_key(f):
if f not in flagMap:
raise error.PySnmpError('bad debug flag %s' % f)
self._flags = self._flags | flagMap[f]
self('debug category %s enabled' % f)

View File

@ -137,7 +137,7 @@ def addV3User(snmpEngine, securityName,
)
# Localize keys
if authServices.has_key(authProtocol):
if authProtocol in authServices:
hashedAuthPassphrase = authServices[authProtocol].hashPassphrase(
authKey and authKey or ''
)
@ -147,7 +147,7 @@ def addV3User(snmpEngine, securityName,
else:
raise error.PySnmpError('Unknown auth protocol %s' % (authProtocol,))
if privServices.has_key(privProtocol):
if privProtocol in privServices:
hashedPrivPassphrase = privServices[privProtocol].hashPassphrase(
authProtocol, privKey and privKey or ''
)

View File

@ -100,8 +100,8 @@ class CommandResponderBase:
origPdu = None
# 3.2.1
if not rfc3411.readClassPDUs.has_key(PDU.tagSet) and \
not rfc3411.writeClassPDUs.has_key(PDU.tagSet):
if PDU.tagSet not in rfc3411.readClassPDUs and \
PDU.tagSet not in rfc3411.writeClassPDUs:
raise error.ProtocolError('Unexpected PDU class %s' % PDU.tagSet)
# 3.2.2 --> no-op
@ -144,7 +144,7 @@ class CommandResponderBase:
# SNMPv2 SMI exceptions
except pysnmp.smi.error.GenError, errorIndication:
debug.logger & debug.flagApp and debug.logger('processPdu: stateReference %s, errorIndication %s' % (stateReference, errorIndication))
if errorIndication.has_key('oid'):
if 'oid' in errorIndication:
# Request REPORT generation
statusInformation['oid'] = errorIndication['oid']
statusInformation['val'] = errorIndication['val']

View File

@ -15,7 +15,7 @@ class SnmpContext:
}
def registerContextName(self, contextName, mibInstrum=None):
if self.contextNames.has_key(contextName):
if contextName in self.contextNames:
raise error.PySnmpError(
'Duplicate contextName %s' % contextName
)
@ -26,12 +26,12 @@ class SnmpContext:
self.contextNames[contextName] = mibInstrum
def unregisterContextName(self, contextName):
if self.contextNames.has_key(contextName):
if contextName in self.contextNames:
debug.logger & debug.flagIns and debug.logger('unregisterContextName: unregistered contextName \"%s\"' % contextName)
del self.contextNames[contextName]
def getMibInstrum(self, contextName):
if not self.contextNames.has_key(contextName):
if contextName not in self.contextNames:
debug.logger & debug.flagIns and debug.logger('getMibInstrum: contextName \"%s\" not registered' % contextName)
raise error.PySnmpError(
'Missing contextName %s' % contextName

View File

@ -52,7 +52,7 @@ class NotificationReceiver:
debug.logger & debug.flagApp and debug.logger('processPdu: stateReference %s, varBinds %s' % (stateReference, varBinds))
# 3.4
if rfc3411.confirmedClassPDUs.has_key(PDU.tagSet):
if PDU.tagSet in rfc3411.confirmedClassPDUs:
# 3.4.1 --> no-op
rspPDU = v2c.apiPDU.getResponse(PDU)
@ -91,7 +91,7 @@ class NotificationReceiver:
snmpSilentDrops, = snmpEngine.msgAndPduDsp.mibInstrumController.mibBuilder.importSymbols('__SNMPv2-MIB', 'snmpSilentDrops')
snmpSilentDrops.syntax = snmpSilentDrops.syntax + 1
elif rfc3411.unconfirmedClassPDUs.has_key(PDU.tagSet):
elif PDU.tagSet in rfc3411.unconfirmedClassPDUs:
pass
else:
raise error.ProtocolError('Unexpected PDU class %s' % PDU.tagSet)

View File

@ -145,7 +145,7 @@ class AsynCommandGenerator:
def cfgCmdGen(self, authData, transportTarget, tagList=''):
if isinstance(authData, CommunityData):
tagList = '%s %s' % (tagList, authData.securityName)
if self.__knownAuths.has_key(authData):
if authData in self.__knownAuths:
paramsName = self.__knownAuths[authData]
else:
paramsName = 'p%s' % nextID()
@ -179,7 +179,7 @@ class AsynCommandGenerator:
raise error.PySnmpError('Unsupported authentication object')
self.__knownAuths[authData] = paramsName
if not self.__knownTransports.has_key(transportTarget.transportDomain):
if transportTarget.transportDomain not in self.__knownTransports:
transport = transportTarget.openClientMode()
config.addSocketTransport(
self.snmpEngine,
@ -189,7 +189,7 @@ class AsynCommandGenerator:
self.__knownTransports[transportTarget.transportDomain] = transport
k = paramsName, transportTarget, tagList
if self.__knownTransportAddrs.has_key(k):
if k in self.__knownTransportAddrs:
addrName = self.__knownTransportAddrs[k]
else:
addrName = 'a%s' % nextID()

View File

@ -37,7 +37,7 @@ class AsynNotificationOriginator(cmdgen.AsynCommandGenerator):
authData, transportTarget, tagList
)
k = paramsName, tagList, notifyType
if self.__knownNotifyNames.has_key(k):
if k in self.__knownNotifyNames:
notifyName, _ = self.__knownNotifyNames[k]
else:
notifyName = 'n%s' % cmdgen.nextID()
@ -49,7 +49,7 @@ class AsynNotificationOriginator(cmdgen.AsynCommandGenerator):
notifyType
)
self.__knownNotifyNames[k] = notifyName, paramsName
if not self.__knownAuths.has_key(authData):
if authData not in self.__knownAuths:
subTree = (1,3,6)
config.addTrapUser(
self.snmpEngine,
@ -131,4 +131,5 @@ class NotificationOriginator(AsynNotificationOriginator):
(__cbFun, appReturn)
)
self.snmpEngine.transportDispatcher.runDispatcher()
return appReturn.get('errorIndication')
if 'errorIndication' in appReturn:
return appReturn['errorIndication']

View File

@ -14,7 +14,7 @@ class StatusInformation(SnmpV3Error):
debug.logger & (debug.flagDsp|debug.flagMP|debug.flagSM|debug.flagACL) and debug.logger('StatusInformation: %s' % kwargs)
def __str__(self): return str(self.__errorIndication)
def __getitem__(self, key): return self.__errorIndication[key]
def has_key(self, key): return self.__errorIndication.has_key(key)
def __contains__(self, key): return key in self.__errorIndication
def get(self, key, defVal=None):
return self.__errorIndication.get(key, defVal)
class CacheExpiredError(SnmpV3Error): pass

View File

@ -65,7 +65,7 @@ class AbstractMessageProcessingModel:
# Server mode cache handling
def _cachePushByStateRef(self, stateReference, **msgInfo):
if self.__stateReferenceIndex.has_key(stateReference):
if stateReference in self.__stateReferenceIndex:
raise error.ProtocolError(
'Cache dup for stateReference=%s at %s' %
(stateReference, self)
@ -74,15 +74,16 @@ class AbstractMessageProcessingModel:
self.__stateReferenceIndex[stateReference] = ( msgInfo, expireAt )
# Schedule to expire
if not self.__expirationQueue.has_key(expireAt):
if expireAt not in self.__expirationQueue:
self.__expirationQueue[expireAt] = {}
if not self.__expirationQueue[expireAt].has_key('stateReference'):
if 'stateReference' not in self.__expirationQueue[expireAt]:
self.__expirationQueue[expireAt]['stateReference'] = {}
self.__expirationQueue[expireAt]['stateReference'][stateReference] = 1
def _cachePopByStateRef(self, stateReference):
cacheInfo = self.__stateReferenceIndex.get(stateReference)
if cacheInfo is None:
if stateReference in self.__stateReferenceIndex:
cacheInfo = self.__stateReferenceIndex[stateReference]
else:
raise error.ProtocolError(
'Cache miss for stateReference=%s at %s' %
(stateReference, self)
@ -101,7 +102,7 @@ class AbstractMessageProcessingModel:
return self.__msgID
def _cachePushByMsgId(self, msgId, **msgInfo):
if self.__msgIdIndex.has_key(msgId):
if msgId in self.__msgIdIndex:
raise error.ProtocolError(
'Cache dup for msgId=%s at %s' % (msgId, self)
)
@ -111,15 +112,16 @@ class AbstractMessageProcessingModel:
self.__sendPduHandleIdx[msgInfo['sendPduHandle']] = msgId
# Schedule to expire
if not self.__expirationQueue.has_key(expireAt):
if expireAt not in self.__expirationQueue:
self.__expirationQueue[expireAt] = {}
if not self.__expirationQueue[expireAt].has_key('msgId'):
if 'msgId' not in self.__expirationQueue[expireAt]:
self.__expirationQueue[expireAt]['msgId'] = {}
self.__expirationQueue[expireAt]['msgId'][msgId] = 1
def _cachePopByMsgId(self, msgId):
cacheInfo = self.__msgIdIndex.get(msgId)
if cacheInfo is None:
if msgId in self.__msgIdIndex:
cacheInfo = self.__msgIdIndex[msgId]
else:
raise error.ProtocolError(
'Cache miss for msgId=%s at %s' % (msgId, self)
)
@ -131,17 +133,17 @@ class AbstractMessageProcessingModel:
return cacheEntry
def _cachePopBySendPduHandle(self, sendPduHandle):
if self.__sendPduHandleIdx.has_key(sendPduHandle):
if sendPduHandle in self.__sendPduHandleIdx:
self._cachePopByMsgId(self.__sendPduHandleIdx[sendPduHandle])
def __expireCaches(self):
# Uses internal clock to expire pending messages
if self.__expirationQueue.has_key(self.__expirationTimer):
if self.__expirationTimer in self.__expirationQueue:
cacheInfo = self.__expirationQueue[self.__expirationTimer]
if cacheInfo.has_key('stateReference'):
if 'stateReference' in cacheInfo:
for stateReference in cacheInfo['stateReference'].keys():
del self.__stateReferenceIndex[stateReference]
if cacheInfo.has_key('msgId'):
if 'msgId' in cacheInfo:
for msgId in cacheInfo['msgId'].keys():
del self.__msgIdIndex[msgId]
del self.__expirationQueue[self.__expirationTimer]

View File

@ -36,7 +36,7 @@ class SnmpV1MessageProcessingModel(AbstractMessageProcessingModel):
snmpEngineID = snmpEngineID.syntax
# rfc3412: 7.1.1b
if rfc3411.confirmedClassPDUs.has_key(pdu.tagSet):
if pdu.tagSet in rfc3411.confirmedClassPDUs:
pdu.setComponentByPosition(1)
msgID = pdu.getComponentByPosition(0)
@ -63,8 +63,10 @@ class SnmpV1MessageProcessingModel(AbstractMessageProcessingModel):
# rfc3412: 7.1.7
globalData = ( msg, )
smHandler = snmpEngine.securityModels.get(int(securityModel))
if smHandler is None:
k = int(securityModel)
if k in snmpEngine.securityModels:
smHandler = snmpEngine.securityModels[k]
else:
raise error.StatusInformation(
errorIndication = errind.unsupportedSecurityModel
)
@ -88,7 +90,7 @@ class SnmpV1MessageProcessingModel(AbstractMessageProcessingModel):
)
# rfc3412: 7.1.9.c
if rfc3411.confirmedClassPDUs.has_key(pdu.tagSet):
if pdu.tagSet in rfc3411.confirmedClassPDUs:
# XXX rfc bug? why stateReference should be created?
self._cachePushByMsgId(
long(msgID),
@ -174,8 +176,10 @@ class SnmpV1MessageProcessingModel(AbstractMessageProcessingModel):
# rfc3412: 7.1.7
globalData = ( msg, )
smHandler = snmpEngine.securityModels.get(int(securityModel))
if smHandler is None:
k = int(securityModel)
if k in snmpEngine.securityModels:
smHandler = snmpEngine.securityModels[k]
else:
raise error.StatusInformation(
errorIndication = errind.unsupportedSecurityModel
)
@ -241,8 +245,10 @@ class SnmpV1MessageProcessingModel(AbstractMessageProcessingModel):
# rfc3412: 7.2.4 -- 7.2.5 -> noop
smHandler = snmpEngine.securityModels.get(int(securityModel))
if smHandler is None:
k = int(securityModel)
if k in snmpEngine.securityModels:
smHandler = snmpEngine.securityModels[k]
else:
raise error.StatusInformation(
errorIndication = errind.unsupportedSecurityModel
)
@ -281,7 +287,7 @@ class SnmpV1MessageProcessingModel(AbstractMessageProcessingModel):
# rfc3412: 7.2.8, 7.2.9 -> noop
# rfc3412: 7.2.10
if rfc3411.responseClassPDUs.has_key(pduType):
if pduType in rfc3411.responseClassPDUs:
# 7.2.10a
try:
cachedReqParams = self._cachePopByMsgId(long(msgID))
@ -301,7 +307,7 @@ class SnmpV1MessageProcessingModel(AbstractMessageProcessingModel):
# rfc3412: 7.2.11 -> noop
# rfc3412: 7.2.12
if rfc3411.responseClassPDUs.has_key(pduType):
if pduType in rfc3411.responseClassPDUs:
# rfc3412: 7.2.12a -> noop
# rfc3412: 7.2.12b
if securityModel != cachedReqParams['securityModel'] or \
@ -333,7 +339,7 @@ class SnmpV1MessageProcessingModel(AbstractMessageProcessingModel):
stateReference )
# rfc3412: 7.2.13
if rfc3411.confirmedClassPDUs.has_key(pduType):
if pduType in rfc3411.confirmedClassPDUs:
# rfc3412: 7.2.13a
snmpEngineID, = snmpEngine.msgAndPduDsp.mibInstrumController.mibBuilder.importSymbols('__SNMP-FRAMEWORK-MIB', 'snmpEngineID')
if securityEngineID != snmpEngineID.syntax:
@ -378,7 +384,7 @@ class SnmpV1MessageProcessingModel(AbstractMessageProcessingModel):
stateReference )
# rfc3412: 7.2.14
if rfc3411.unconfirmedClassPDUs.has_key(pduType):
if pduType in rfc3411.unconfirmedClassPDUs:
# This is not specified explicitly in RFC
smHandler.releaseStateInformation(securityStateReference)
return ( messageProcessingModel,

View File

@ -84,10 +84,12 @@ class SnmpV3MessageProcessingModel(AbstractMessageProcessingModel):
msgID = self._newMsgID()
debug.logger & debug.flagMP and debug.logger('prepareOutgoingMessage: new msgID %s' % msgID)
peerSnmpEngineData = self.__engineIDs.get(
(transportDomain, transportAddress)
)
k = (transportDomain, transportAddress)
if k in self.__engineIDs:
peerSnmpEngineData = self.__engineIDs[k]
else:
peerSnmpEngineData = None
debug.logger & debug.flagMP and debug.logger('prepareOutgoingMessage: peer SNMP engine data %s for transport %s, address %s' % (peerSnmpEngineData, transportDomain, transportAddress))
@ -147,7 +149,7 @@ class SnmpV3MessageProcessingModel(AbstractMessageProcessingModel):
'Unknown securityLevel %s' % securityLevel
)
if rfc3411.confirmedClassPDUs.has_key(pdu.tagSet):
if pdu.tagSet in rfc3411.confirmedClassPDUs:
msgFlags = msgFlags | 0x04
headerData.setComponentByPosition(2, chr(msgFlags))
@ -158,14 +160,15 @@ class SnmpV3MessageProcessingModel(AbstractMessageProcessingModel):
debug.logger & debug.flagMP and debug.logger('prepareOutgoingMessage: %s' % (msg.prettyPrint(),))
smHandler = snmpEngine.securityModels.get(securityModel)
if smHandler is None:
if securityModel in snmpEngine.securityModels:
smHandler = snmpEngine.securityModels[securityModel]
else:
raise error.StatusInformation(
errorIndication = errind.unsupportedSecurityModel
)
# 7.1.9.a
if rfc3411.unconfirmedClassPDUs.has_key(pdu.tagSet):
if pdu.tagSet in rfc3411.unconfirmedClassPDUs:
securityEngineID = snmpEngineID
else:
if peerSnmpEngineData is None:
@ -212,7 +215,7 @@ class SnmpV3MessageProcessingModel(AbstractMessageProcessingModel):
raise error.StatusInformation(errorIndication=errind.tooBig)
# 7.1.9.c
if rfc3411.confirmedClassPDUs.has_key(pdu.tagSet):
if pdu.tagSet in rfc3411.confirmedClassPDUs:
# XXX rfc bug? why stateReference should be created?
self._cachePushByMsgId(
msgID,
@ -267,7 +270,7 @@ class SnmpV3MessageProcessingModel(AbstractMessageProcessingModel):
debug.logger & debug.flagMP and debug.logger('prepareResponseMessage: stateReference %s' % (stateReference))
# 7.1.3
if statusInformation is not None and statusInformation.has_key('oid'):
if statusInformation is not None and 'oid' in statusInformation:
# 7.1.3a
if pdu is not None:
requestID = pdu.getComponentByPosition(0)
@ -278,7 +281,7 @@ class SnmpV3MessageProcessingModel(AbstractMessageProcessingModel):
# 7.1.3b
if pdu is None and not reportableFlag or \
pduType is not None and \
not rfc3411.confirmedClassPDUs.has_key(pduType):
pduType not in rfc3411.confirmedClassPDUs:
raise error.StatusInformation(
errorIndication = errind.loopTerminated
)
@ -297,19 +300,19 @@ class SnmpV3MessageProcessingModel(AbstractMessageProcessingModel):
pMod.apiPDU.setRequestID(reportPDU, requestID)
# 7.1.3d.1
if statusInformation.has_key('securityLevel'):
if 'securityLevel' in statusInformation:
securityLevel = statusInformation['securityLevel']
else:
securityLevel = 1
# 7.1.3d.2
if statusInformation.has_key('contextEngineId'):
if 'contextEngineId' in statusInformation:
contextEngineId = statusInformation['contextEngineId']
else:
contextEngineId = snmpEngineID
# 7.1.3d.3
if statusInformation.has_key('contextName'):
if 'contextName' in statusInformation:
contextName = statusInformation['contextName']
else:
contextName = ""
@ -367,7 +370,7 @@ class SnmpV3MessageProcessingModel(AbstractMessageProcessingModel):
'Unknown securityLevel %s' % securityLevel
)
if rfc3411.confirmedClassPDUs.has_key(pdu.tagSet): # XXX not needed?
if pdu.tagSet in rfc3411.confirmedClassPDUs: # XXX not needed?
msgFlags = msgFlags | 0x04
headerData.setComponentByPosition(2, chr(msgFlags))
@ -377,8 +380,9 @@ class SnmpV3MessageProcessingModel(AbstractMessageProcessingModel):
debug.logger & debug.flagMP and debug.logger('prepareResponseMessage: %s' % (msg.prettyPrint(),))
smHandler = snmpEngine.securityModels.get(securityModel)
if smHandler is None:
if securityModel in snmpEngine.securityModels:
smHandler = snmpEngine.securityModels[securityModel]
else:
raise error.StatusInformation(
errorIndication = errind.unsupportedSecurityModel
)
@ -445,7 +449,7 @@ class SnmpV3MessageProcessingModel(AbstractMessageProcessingModel):
debug.logger & debug.flagMP and debug.logger('prepareDataElements: msg data msgVersion %s msgID %s securityModel %s' % (msgVersion, msgID, securityModel))
# 7.2.4
if not snmpEngine.securityModels.has_key(securityModel):
if securityModel not in snmpEngine.securityModels:
snmpUnknownSecurityModels, = snmpEngine.msgAndPduDsp.mibInstrumController.mibBuilder.importSymbols('__SNMPv2-MIB', 'snmpUnknownSecurityModels')
snmpUnknownSecurityModels.syntax = snmpUnknownSecurityModels.syntax + 1
raise error.StatusInformation(
@ -491,17 +495,17 @@ class SnmpV3MessageProcessingModel(AbstractMessageProcessingModel):
debug.logger & debug.flagMP and debug.logger('prepareDataElements: SM succeeded')
except error.StatusInformation, statusInformation:
debug.logger & debug.flagMP and debug.logger('prepareDataElements: SM failed, statusInformation %s' % statusInformation)
if statusInformation.has_key('errorIndication'):
if 'errorIndication' in statusInformation:
# 7.2.6a
if statusInformation.has_key('oid'):
if 'oid' in statusInformation:
# 7.2.6a1
securityStateReference = statusInformation[
'securityStateReference'
]
contextEngineId = statusInformation['contextEngineId']
contextName = statusInformation['contextName']
scopedPDU = statusInformation.get('scopedPDU')
if scopedPDU is not None:
if 'scopedPDU' in statusInformation:
scopedPDU = statusInformation['scopedPDU']
pdu = scopedPDU.getComponentByPosition(2).getComponent()
else:
pdu = None
@ -554,7 +558,7 @@ class SnmpV3MessageProcessingModel(AbstractMessageProcessingModel):
else:
# Sniff for engineIDs
k = (transportDomain, transportAddress)
if not self.__engineIDs.has_key(k):
if k not in self.__engineIDs:
contextEngineId, contextName, pdu = scopedPDU
self.__engineIDs[k] = {
@ -564,7 +568,7 @@ class SnmpV3MessageProcessingModel(AbstractMessageProcessingModel):
}
expireAt = self.__expirationTimer + 300
if not self.__engineIDsExpQueue.has_key(expireAt):
if expireAt not in self.__engineIDsExpQueue:
self.__engineIDsExpQueue[expireAt] = []
self.__engineIDsExpQueue[expireAt].append(k)
@ -584,8 +588,8 @@ class SnmpV3MessageProcessingModel(AbstractMessageProcessingModel):
pduType = pdu.tagSet
# 7.2.10
if rfc3411.responseClassPDUs.has_key(pduType) or \
rfc3411.internalClassPDUs.has_key(pduType):
if pduType in rfc3411.responseClassPDUs or \
pduType in rfc3411.internalClassPDUs:
# 7.2.10a
try:
cachedReqParams = self._cachePopByMsgId(msgID)
@ -602,7 +606,7 @@ class SnmpV3MessageProcessingModel(AbstractMessageProcessingModel):
debug.logger & debug.flagMP and debug.logger('prepareDataElements: using sendPduHandle %s for msgID %s' % (sendPduHandle, msgID))
# 7.2.11
if rfc3411.internalClassPDUs.has_key(pduType):
if pduType in rfc3411.internalClassPDUs:
# 7.2.11a
varBinds = pMod.apiPDU.getVarBinds(pdu)
if varBinds:
@ -629,7 +633,7 @@ class SnmpV3MessageProcessingModel(AbstractMessageProcessingModel):
statusInformation = None # no errors ahead
# 7.2.12
if rfc3411.responseClassPDUs.has_key(pduType):
if pduType in rfc3411.responseClassPDUs:
# 7.2.12a -> noop
# 7.2.12b
@ -663,7 +667,7 @@ class SnmpV3MessageProcessingModel(AbstractMessageProcessingModel):
stateReference )
# 7.2.13
if rfc3411.confirmedClassPDUs.has_key(pduType):
if pduType in rfc3411.confirmedClassPDUs:
# 7.2.13a
if securityEngineID != snmpEngineID:
smHandler.releaseStateInformation(securityStateReference)
@ -708,7 +712,7 @@ class SnmpV3MessageProcessingModel(AbstractMessageProcessingModel):
stateReference )
# 7.2.14
if rfc3411.unconfirmedClassPDUs.has_key(pduType):
if pduType in rfc3411.unconfirmedClassPDUs:
# Pass new stateReference to let app browse request details
stateReference = self._newStateReference()
@ -735,7 +739,7 @@ class SnmpV3MessageProcessingModel(AbstractMessageProcessingModel):
)
def __expireEnginesInfo(self):
if self.__engineIDsExpQueue.has_key(self.__expirationTimer):
if self.__expirationTimer in self.__engineIDsExpQueue:
for engineKey in self.__engineIDsExpQueue[self.__expirationTimer]:
del self.__engineIDs[engineKey]
debug.logger & debug.flagMP and debug.logger('__expireEnginesInfo: expiring %s' % (engineKey,))

View File

@ -99,7 +99,7 @@ def v1ToV2(v1Pdu, origV2Pdu=None):
v2VarBinds = []
# 3.1
if rfc3411.notificationClassPDUs.has_key(pduType):
if pduType in rfc3411.notificationClassPDUs:
# 3.1.1
sysUpTime = v1.apiTrapPDU.getTimeStamp(v1Pdu)
@ -138,7 +138,7 @@ def v1ToV2(v1Pdu, origV2Pdu=None):
(oid, __v1ToV2ValueMap[v1Val.tagSet].clone(v1Val))
)
if rfc3411.responseClassPDUs.has_key(pduType):
if pduType in rfc3411.responseClassPDUs:
# 4.1.2.2.1&2
errorStatus = int(v1.apiPDU.getErrorStatus(v1Pdu))
errorIndex = int(v1.apiPDU.getErrorIndex(v1Pdu))
@ -157,7 +157,7 @@ def v1ToV2(v1Pdu, origV2Pdu=None):
# 4.1.2.1 --> no-op
if not rfc3411.notificationClassPDUs.has_key(pduType):
if pduType not in rfc3411.notificationClassPDUs:
v2c.apiPDU.setRequestID(v2Pdu, long(v1.apiPDU.getRequestID(v1Pdu)))
v2c.apiPDU.setVarBinds(v2Pdu, v2VarBinds)
@ -171,7 +171,7 @@ def v2ToV1(v2Pdu, origV1Pdu=None):
pduType = v2Pdu.tagSet
if __v2ToV1PduMap.has_key(pduType):
if pduType in __v2ToV1PduMap:
v1Pdu = __v2ToV1PduMap[pduType].clone()
else:
raise error.ProtocolError('Unsupported PDU type')
@ -179,19 +179,19 @@ def v2ToV1(v2Pdu, origV1Pdu=None):
v2VarBinds = v2c.apiPDU.getVarBinds(v2Pdu)
v1VarBinds = []
if rfc3411.notificationClassPDUs.has_key(pduType):
if pduType in rfc3411.notificationClassPDUs:
v1.apiTrapPDU.setDefaults(v1Pdu)
else:
v1.apiPDU.setDefaults(v1Pdu)
# 3.2
if rfc3411.notificationClassPDUs.has_key(pduType):
if pduType in rfc3411.notificationClassPDUs:
# 3.2.1
(snmpTrapOID, snmpTrapOIDParam) = v2VarBinds[1]
if snmpTrapOID != v2c.apiTrapPDU.snmpTrapOID:
raise error.ProtocolError('Second OID not snmpTrapOID')
if __v2ToV1TrapMap.has_key(snmpTrapOIDParam):
if snmpTrapOIDParam in __v2ToV1TrapMap:
for oid, val in v2VarBinds:
if oid == v2c.apiTrapPDU.snmpTrapEnterprise:
v1.apiTrapPDU.setEnterprise(v1Pdu, val)
@ -215,13 +215,13 @@ def v2ToV1(v2Pdu, origV1Pdu=None):
v1.apiTrapPDU.setAgentAddr(v1Pdu, v1.apiTrapPDU.agentAddress)
# 3.2.3
if __v2ToV1TrapMap.has_key(snmpTrapOIDParam):
if snmpTrapOIDParam in __v2ToV1TrapMap:
v1.apiTrapPDU.setGenericTrap(v1Pdu, __v2ToV1TrapMap[snmpTrapOIDParam])
else:
v1.apiTrapPDU.setGenericTrap(v1Pdu, 6)
# 3.2.4
if __v2ToV1TrapMap.has_key(snmpTrapOIDParam):
if snmpTrapOIDParam in __v2ToV1TrapMap:
v1.apiTrapPDU.setSpecificTrap(v1Pdu, 0)
else:
v1.apiTrapPDU.setSpecificTrap(v1Pdu, snmpTrapOIDParam[-1])
@ -231,7 +231,7 @@ def v2ToV1(v2Pdu, origV1Pdu=None):
__v2VarBinds = []
for oid, val in v2VarBinds[2:]:
if __v2ToV1TrapMap.has_key(oid) or \
if oid in __v2ToV1TrapMap or \
oid in (v2c.apiTrapPDU.sysUpTime,
v2c.apiTrapPDU.snmpTrapAddress,
v2c.apiTrapPDU.snmpTrapEnterprise):
@ -241,7 +241,7 @@ def v2ToV1(v2Pdu, origV1Pdu=None):
# 3.2.6 --> done below
if rfc3411.responseClassPDUs.has_key(pduType):
if pduType in rfc3411.responseClassPDUs:
idx = len(v2VarBinds)-1
while idx >= 0:
# 4.1.2.1
@ -272,7 +272,7 @@ def v2ToV1(v2Pdu, origV1Pdu=None):
v1.apiPDU.setErrorIndex(v1Pdu, v2c.apiPDU.getErrorIndex(v2Pdu))
# Translate Var-Binds
if rfc3411.responseClassPDUs.has_key(pduType) and \
if pduType in rfc3411.responseClassPDUs and \
v1.apiPDU.getErrorStatus(v1Pdu):
v1VarBinds = v1.apiPDU.getVarBinds(origV1Pdu)
else:
@ -281,7 +281,7 @@ def v2ToV1(v2Pdu, origV1Pdu=None):
(oid, __v2ToV1ValueMap[v2Val.tagSet].clone(v2Val))
)
if rfc3411.notificationClassPDUs.has_key(pduType):
if pduType in rfc3411.notificationClassPDUs:
v1.apiTrapPDU.setVarBinds(v1Pdu, v1VarBinds)
else:
v1.apiPDU.setVarBinds(v1Pdu, v1VarBinds)

View File

@ -44,14 +44,15 @@ class MsgAndPduDispatcher:
return index
def __cachePop(self, index):
cachedParams = self.__cacheRepository.get(index)
if cachedParams is None:
if index in self.__cacheRepository:
cachedParams = self.__cacheRepository[index]
else:
return
del self.__cacheRepository[index]
return cachedParams
def __cacheUpdate(self, index, **kwargs):
if not self.__cacheRepository.has_key(index):
if index not in self.__cacheRepository:
raise error.ProtocolError(
'Cache miss on update for %s' % kwargs
)
@ -64,7 +65,7 @@ class MsgAndPduDispatcher:
del self.__cacheRepository[index]
def getTransportInfo(self, stateReference):
if self.__transportInfo.has_key(stateReference):
if stateReference in self.__transportInfo:
return self.__transportInfo[stateReference]
else:
raise error.ProtocolError(
@ -81,7 +82,7 @@ class MsgAndPduDispatcher:
# 4.3.3
for pduType in pduTypes:
k = (str(contextEngineId), pduType)
if self.__appsRegistration.has_key(k):
if k in self.__appsRegistration:
raise error.ProtocolError(
'Duplicate registration %s/%s' % (contextEngineId, pduType)
)
@ -100,17 +101,17 @@ class MsgAndPduDispatcher:
for pduType in pduTypes:
k = (str(contextEngineId), pduType)
if self.__appsRegistration.has_key(k):
if k in self.__appsRegistration:
del self.__appsRegistration[k]
debug.logger & debug.flagDsp and debug.logger('unregisterContextEngineId: contextEngineId %s pduTypes %s' % (repr(contextEngineId), pduTypes))
def getRegisteredApp(self, contextEngineId, pduType):
k = ( str(contextEngineId), pduType )
if self.__appsRegistration.has_key(k):
if k in self.__appsRegistration:
return self.__appsRegistration[k]
k = ( '', pduType )
if self.__appsRegistration.has_key(k):
if k in self.__appsRegistration:
return self.__appsRegistration[k] # wildcard
# Dispatcher <-> application API
@ -134,10 +135,10 @@ class MsgAndPduDispatcher:
):
"""PDU dispatcher -- prepare and serialize a request or notification"""
# 4.1.1.2
mpHandler = snmpEngine.messageProcessingSubsystems.get(
int(messageProcessingModel)
)
if mpHandler is None:
k = int(messageProcessingModel)
if k in snmpEngine.messageProcessingSubsystems:
mpHandler = snmpEngine.messageProcessingSubsystems[k]
else:
raise error.StatusInformation(
errorIndication=errind.unsupportedMsgProcessingModel
)
@ -223,10 +224,10 @@ class MsgAndPduDispatcher:
):
"""PDU dispatcher -- prepare and serialize a response"""
# Extract input values and initialize defaults
mpHandler = snmpEngine.messageProcessingSubsystems.get(
int(messageProcessingModel)
)
if mpHandler is None:
k = int(messageProcessingModel)
if k in snmpEngine.messageProcessingSubsystems:
mpHandler = snmpEngine.messageProcessingSubsystems[k]
else:
raise error.StatusInformation(
errorIndication=errind.unsupportedMsgProcessingModel
)
@ -298,11 +299,11 @@ class MsgAndPduDispatcher:
debug.logger & debug.flagDsp and debug.logger('receiveMessage: msgVersion %s, msg decoded' % msgVersion)
messageProcessingModel = msgVersion
mpHandler = snmpEngine.messageProcessingSubsystems.get(
int(messageProcessingModel)
)
if mpHandler is None:
k = int(messageProcessingModel)
if k in snmpEngine.messageProcessingSubsystems:
mpHandler = snmpEngine.messageProcessingSubsystems[k]
else:
snmpInBadVersions, = self.mibInstrumController.mibBuilder.importSymbols('__SNMPv2-MIB', 'snmpInBadVersions')
snmpInBadVersions.syntax = snmpInBadVersions.syntax + 1
return restOfWholeMsg
@ -331,7 +332,7 @@ class MsgAndPduDispatcher:
)
debug.logger & debug.flagDsp and debug.logger('receiveMessage: MP succeded')
except error.StatusInformation, statusInformation:
if statusInformation.has_key('sendPduHandle'):
if 'sendPduHandle' in statusInformation:
# Dropped REPORT -- re-run pending reqs queue as some
# of them may be waiting for this REPORT
debug.logger & debug.flagDsp and debug.logger('receiveMessage: MP failed, statusInformation %s' % statusInformation)
@ -469,10 +470,10 @@ class MsgAndPduDispatcher:
def releaseStateInformation(
self, snmpEngine, sendPduHandle, messageProcessingModel
):
mpHandler = snmpEngine.messageProcessingSubsystems.get(
int(messageProcessingModel)
)
mpHandler.releaseStateInformation(sendPduHandle)
k = int(messageProcessingModel)
if k in snmpEngine.messageProcessingSubsystems:
mpHandler = snmpEngine.messageProcessingSubsystems[k]
mpHandler.releaseStateInformation(sendPduHandle)
# Cache expiration stuff

View File

@ -63,8 +63,9 @@ class AbstractSecurityModel:
return stateReference
def _cachePop(self, stateReference):
securityData = self.__cacheEntries.get(stateReference)
if securityData is None:
if stateReference in self.__cacheEntries:
securityData = self.__cacheEntries[stateReference]
else:
raise error.ProtocolError(
'Cache miss for stateReference=%s at %s' %
(stateReference, self)

View File

@ -200,7 +200,7 @@ class SnmpV1SecurityModel(base.AbstractSecurityModel):
targetAddrTagList = snmpTargetAddrTagList.getNode(
snmpTargetAddrTagList.name + __instId
).syntax
if not addrToTagMap.has_key(targetAddr):
if targetAddr not in addrToTagMap:
addrToTagMap[targetAddr] = {}
for tag in string.split(str(targetAddrTagList)):
addrToTagMap[targetAddr][tag] = 1
@ -209,9 +209,9 @@ class SnmpV1SecurityModel(base.AbstractSecurityModel):
# XXX snmpTargetAddrTMask matching not implemented
if addrToTagMap.has_key(srcTransport):
if srcTransport in addrToTagMap:
for tag in string.split(str(mibNode.syntax)):
if addrToTagMap[srcTransport].has_key(tag):
if tag in addrToTagMap[srcTransport]:
debug.logger & debug.flagSM and debug.logger('processIncomingMsg: tag %s matched transport %s' % (tag, srcTransport))
break
else:

View File

@ -144,7 +144,7 @@ class SnmpUSMSecurityModel(AbstractSecurityModel):
pysnmpUsmKeyAuthLocalized = pysnmpUsmKeyEntry.getNode(
pysnmpUsmKeyEntry.name + (1,) + tblIdx
)
if self.authServices.has_key(usmUserAuthProtocol.syntax):
if usmUserAuthProtocol.syntax in self.authServices:
localizeKey = self.authServices[usmUserAuthProtocol.syntax].localizeKey
localAuthKey = localizeKey(
pysnmpUsmKeyAuth.syntax,
@ -159,7 +159,7 @@ class SnmpUSMSecurityModel(AbstractSecurityModel):
pysnmpUsmKeyPrivLocalized = pysnmpUsmKeyEntry.getNode(
pysnmpUsmKeyEntry.name + (2,) + tblIdx
)
if self.privServices.has_key(usmUserPrivProtocol.syntax):
if usmUserPrivProtocol.syntax in self.privServices:
localizeKey = self.privServices[usmUserPrivProtocol.syntax].localizeKey
localPrivKey = localizeKey(
usmUserAuthProtocol.syntax,
@ -199,14 +199,22 @@ class SnmpUSMSecurityModel(AbstractSecurityModel):
# 3.1.1a
cachedSecurityData = self._cachePop(securityStateReference)
usmUserName = cachedSecurityData['msgUserName']
usmUserAuthProtocol = cachedSecurityData.get('usmUserAuthProtocol')
usmUserAuthKeyLocalized = cachedSecurityData.get(
'usmUserAuthKeyLocalized'
)
usmUserPrivProtocol = cachedSecurityData.get('usmUserPrivProtocol')
usmUserPrivKeyLocalized = cachedSecurityData.get(
'usmUserPrivKeyLocalized'
)
if 'usmUserAuthProtocol' in cachedSecurityData:
usmUserAuthProtocol = cachedSecurityData['usmUserAuthProtocol']
else:
usmUserAuthProtocol = None
if 'usmUserAuthKeyLocalized' in cachedSecurityData:
usmUserAuthKeyLocalized = cachedSecurityData['usmUserAuthKeyLocalized']
else:
usmUserAuthKeyLocalized = None
if 'usmUserPrivProtocol' in cachedSecurityData:
usmUserPrivProtocol = cachedSecurityData['usmUserPrivProtocol']
else:
usmUserPrivProtocol = None
if 'usmUserPrivKeyLocalized' in cachedSecurityData:
usmUserPrivKeyLocalized = cachedSecurityData['usmUserPrivKeyLocalized']
else:
usmUserPrivKeyLocalized = None
securityEngineID = snmpEngineID
debug.logger & debug.flagSM and debug.logger('__generateRequestOrResponseMsg: user info read from cache')
elif securityName:
@ -277,7 +285,7 @@ class SnmpUSMSecurityModel(AbstractSecurityModel):
if securityStateReference is None and ( # request type check added
securityLevel == 3 or securityLevel == 2
):
if self.__timeline.has_key(securityEngineID):
if securityEngineID in self.__timeline:
( snmpEngineBoots,
snmpEngineTime,
latestReceivedEngineTime,
@ -305,8 +313,9 @@ class SnmpUSMSecurityModel(AbstractSecurityModel):
# 3.1.4a
if securityLevel == 3:
privHandler = self.privServices.get(usmUserPrivProtocol)
if privHandler is None:
if usmUserPrivProtocol in self.privServices:
privHandler = self.privServices[usmUserPrivProtocol]
else:
raise error.StatusInformation(
errorIndication = errind.encryptionError
)
@ -345,8 +354,9 @@ class SnmpUSMSecurityModel(AbstractSecurityModel):
# 3.1.8a
if securityLevel == 3 or securityLevel == 2:
authHandler = self.authServices.get(usmUserAuthProtocol)
if authHandler is None:
if usmUserAuthProtocol in self.authServices:
authHandler = self.authServices[usmUserAuthProtocol]
else:
raise error.StatusInformation(
errorIndication = errind.authenticationFailure
)
@ -482,7 +492,7 @@ class SnmpUSMSecurityModel(AbstractSecurityModel):
contextName = ''
# 3.2.3
if not self.__timeline.has_key(msgAuthoritativeEngineID):
if msgAuthoritativeEngineID not in self.__timeline:
debug.logger & debug.flagSM and debug.logger('processIncomingMsg: unknown securityEngineID %s' % repr(msgAuthoritativeEngineID))
if not msgAuthoritativeEngineID:
# 3.2.3b
@ -615,8 +625,9 @@ class SnmpUSMSecurityModel(AbstractSecurityModel):
# 3.2.6
if securityLevel == 3 or securityLevel == 2:
authHandler = self.authServices.get(usmUserAuthProtocol)
if authHandler is None:
if usmUserAuthProtocol in self.authServices:
authHandler = self.authServices[usmUserAuthProtocol]
else:
raise error.StatusInformation(
errorIndication = errind.authenticationFailure
)
@ -652,7 +663,7 @@ class SnmpUSMSecurityModel(AbstractSecurityModel):
)
expireAt = self.__expirationTimer + 300
if not self.__timelineExpQueue.has_key(expireAt):
if expireAt not in self.__timelineExpQueue:
self.__timelineExpQueue[expireAt] = []
self.__timelineExpQueue[expireAt].append(
msgAuthoritativeEngineID
@ -672,7 +683,7 @@ class SnmpUSMSecurityModel(AbstractSecurityModel):
debug.logger & debug.flagSM and debug.logger('processIncomingMsg: read snmpEngineBoots (%s), snmpEngineTime (%s) from LCD' % (snmpEngineBoots, snmpEngineTime))
else:
# Non-authoritative SNMP engine: use cached estimates
if self.__timeline.has_key(msgAuthoritativeEngineID):
if msgAuthoritativeEngineID in self.__timeline:
( snmpEngineBoots,
snmpEngineTime,
latestReceivedEngineTime,
@ -719,7 +730,7 @@ class SnmpUSMSecurityModel(AbstractSecurityModel):
int(time.time())
)
expireAt = self.__expirationTimer + 300
if not self.__timelineExpQueue.has_key(expireAt):
if expireAt not in self.__timelineExpQueue:
self.__timelineExpQueue[expireAt] = []
self.__timelineExpQueue[expireAt].append(
msgAuthoritativeEngineID
@ -739,8 +750,9 @@ class SnmpUSMSecurityModel(AbstractSecurityModel):
# 3.2.8a
if securityLevel == 3:
privHandler = self.privServices.get(usmUserPrivProtocol)
if privHandler is None:
if usmUserPrivProtocol in self.privServices:
privHandler = self.privServices[usmUserPrivProtocol]
else:
raise error.StatusInformation(
errorIndication = errind.decryptionError
)
@ -822,9 +834,9 @@ class SnmpUSMSecurityModel(AbstractSecurityModel):
securityStateReference )
def __expireTimelineInfo(self):
if self.__timelineExpQueue.has_key(self.__expirationTimer):
if self.__expirationTimer in self.__timelineExpQueue:
for engineIdKey in self.__timelineExpQueue[self.__expirationTimer]:
if self.__timeline.has_key(engineIdKey):
if engineIdKey in self.__timeline:
del self.__timeline[engineIdKey]
debug.logger & debug.flagSM and debug.logger('__expireEnginesInfo: expiring %s' % (engineIdKey,))
del self.__timelineExpQueue[self.__expirationTimer]

View File

@ -107,7 +107,7 @@ class ZipMibSource(__AbstractMibSource):
return tuple(self._uniqNames(l))
def _getTimestamp(self, p):
if self.__loader._files.has_key(p):
if p in self.__loader._files:
return self._parseDosTime(
self.__loader._files[p][6],
self.__loader._files[p][5]
@ -142,9 +142,9 @@ class MibBuilder:
):
sources.append(ZipMibSource(m).init())
# Compatibility variable
if os.environ.has_key('PYSNMP_MIB_DIR'):
if 'PYSNMP_MIB_DIR' in os.environ:
os.environ['PYSNMP_MIB_DIRS'] = os.environ['PYSNMP_MIB_DIR']
if os.environ.has_key('PYSNMP_MIB_DIRS'):
if 'PYSNMP_MIB_DIRS' in os.environ:
for m in string.split(os.environ['PYSNMP_MIB_DIRS'], ':'):
sources.append(DirMibSource(m).init())
if self.defaultMiscMibs:
@ -201,7 +201,7 @@ class MibBuilder:
modPath = mibSource.fullPath(modName, sfx)
if self.__modPathsSeen.has_key(modPath):
if modPath in self.__modPathsSeen:
debug.logger & debug.flagBld and debug.logger('loadModules: seen %s' % modPath)
break
else:
@ -225,7 +225,7 @@ class MibBuilder:
break
if not self.__modSeen.has_key(modName):
if modName not in self.__modSeen:
raise error.SmiError(
'MIB file \"%s\" not found in search path' % (modName and modName + ".py[co]")
)
@ -236,7 +236,7 @@ class MibBuilder:
if not modNames:
modNames = self.mibSymbols.keys()
for modName in modNames:
if not self.mibSymbols.has_key(modName):
if modName not in self.mibSymbols:
raise error.SmiError(
'No module %s at %s' % (modName, self)
)
@ -255,13 +255,13 @@ class MibBuilder:
)
r = ()
for symName in symNames:
if not self.mibSymbols.has_key(modName):
if modName not in self.mibSymbols:
self.loadModules(modName)
if not self.mibSymbols.has_key(modName):
if modName not in self.mibSymbols:
raise error.SmiError(
'No module %s loaded at %s' % (modName, self)
)
if not self.mibSymbols[modName].has_key(symName):
if symName not in self.mibSymbols[modName]:
raise error.SmiError(
'No symbol %s::%s at %s' % (modName, symName, self)
)
@ -269,7 +269,7 @@ class MibBuilder:
return r
def exportSymbols(self, modName, *anonymousSyms, **namedSyms):
if not self.mibSymbols.has_key(modName):
if modName not in self.mibSymbols:
self.mibSymbols[modName] = {}
mibSymbols = self.mibSymbols[modName]
@ -278,7 +278,7 @@ class MibBuilder:
mibSymbols['__pysnmp_%ld' % self._autoName] = symObj
self._autoName = self._autoName + 1
for symName, symObj in namedSyms.items():
if mibSymbols.has_key(symName):
if symName in mibSymbols:
raise error.SmiError(
'Symbol %s already exported at %s' % (symName, modName)
)
@ -295,7 +295,7 @@ class MibBuilder:
self.lastBuildId = self.lastBuildId + 1
def unexportSymbols(self, modName, *symNames):
if not self.mibSymbols.has_key(modName):
if modName not in self.mibSymbols:
raise error.SmiError(
'No module %s at %s' % (modName, self)
)
@ -303,7 +303,7 @@ class MibBuilder:
if not symNames:
symNames = mibSymbols.keys()
for symName in symNames:
if not mibSymbols.has_key(symName):
if symName not in mibSymbols:
raise error.SmiError(
'No symbol %s::%s at %s' % (modName, symName, self)
)

View File

@ -8,7 +8,7 @@ class MibOperationError(SmiError):
self.__class__.__name__, self.__outArgs
)
def __getitem__(self, key): return self.__outArgs[key]
def has_key(self, key): return self.__outArgs.has_key(key)
def __contains__(self, key): return key in self.__outArgs
def get(self, key, defVal=None): return self.__outArgs.get(key, defVal)
def keys(self): return self.__outArgs.keys()
def update(self, d): self.__outArgs.update(d)

View File

@ -3,145 +3,70 @@ from types import DictType, TupleType
from string import join, split, atol
from bisect import bisect
try:
from sys import version_info
except ImportError:
version_info = ( 0, 0 ) # a really early version
class OrderedDict(DictType):
def __init__(self, **kwargs):
self.__keys = []
self.__dirty = 1
super(OrderedDict, self).__init__()
if kwargs:
self.update(kwargs)
def __setitem__(self, key, value):
if key not in self:
self.__keys.append(key)
super(OrderedDict, self).__setitem__(key, value)
self.__dirty = 1
def __repr__(self):
if self.__dirty: self.__order()
return super(OrderedDict, self).__repr__()
def __str__(self):
if self.__dirty: self.__order()
return super(OrderedDict, self).__str__()
def __delitem__(self, key):
if super(OrderedDict, self).__contains__(key):
self.__keys.remove(key)
super(OrderedDict, self).__delitem__(key)
self.__dirty = 1
__delattr__ = __delitem__
def clear(self):
super(OrderedDict, self).clear()
self.__keys = []
self.__dirty = 1
def keys(self):
if self.__dirty: self.__order()
return list(self.__keys)
def values(self):
if self.__dirty: self.__order()
return map(lambda k, d=self: d[k], self.__keys)
def items(self):
if self.__dirty: self.__order()
return map(lambda k, d=self: (k, d[k]), self.__keys)
def update(self, d):
map(lambda (k, v), self=self: self.__setitem__(k, v), d.items())
def sortingFun(self, keys): keys.sort()
def __order(self):
self.sortingFun(self.__keys)
d = {}
for k in self.__keys:
d[len(k)] = 1
l = d.keys()
l.sort(); l.reverse()
self.__keysLens = tuple(l)
self.__dirty = 0
def nextKey(self, key):
keys = self.keys()
if key in self:
nextIdx = keys.index(key) + 1
else:
nextIdx = bisect(keys, key)
if nextIdx < len(keys):
return keys[nextIdx]
else:
raise KeyError(key)
if version_info < (2, 2):
class OrderedDict:
def __init__(self, **kwargs):
self.__dict = {}
self.__keys = []
self.__dirty = 1
if kwargs:
self.update(kwargs)
self.__dirty = 1
def __len__(self): return len(self.__dict)
def __getitem__(self, key): return self.__dict[key]
def __setitem__(self, key, value):
if not self.__dict.has_key(key):
self.__keys.append(key)
self.__dict[key] = value
self.__dirty = 1
def __repr__(self):
if self.__dirty: self.__order()
return repr(self.__dict)
def __str__(self):
if self.__dirty: self.__order()
return str(self.__dict)
def __delitem__(self, key):
if self.__dict.has_key(key):
self.__keys.remove(key)
del self.__dict[key]
self.__dirty = 1
__delattr__ = __delitem__
def clear(self):
self.__dict.clear()
self.__keys = []
self.__dirty = 1
def get(self, key, default=None): return self.__dict.get(key, default)
def has_key(self, key): return self.__dict.has_key(key)
def keys(self):
if self.__dirty: self.__order()
return list(self.__keys)
def values(self):
if self.__dirty: self.__order()
return map(lambda k, d=self.__dict: d[k], self.__keys)
def items(self):
if self.__dirty: self.__order()
return map(lambda k, d=self.__dict: (k, d[k]), self.__keys)
def update(self, d):
map(lambda (k, v), self=self: self.__setitem__(k, v), d.items())
def sortingFun(self, keys): keys.sort()
def __order(self):
self.sortingFun(self.__keys)
d = {}
for k in self.__keys:
d[len(k)] = 1
l = d.keys()
l.sort(); l.reverse()
self.__keysLens = tuple(l)
self.__dirty = 0
def nextKey(self, key):
keys = self.keys()
if self.has_key(key):
nextIdx = keys.index(key) + 1
else:
nextIdx = bisect(keys, key)
if nextIdx < len(keys):
return keys[nextIdx]
else:
raise KeyError(key)
def getKeysLens(self):
if self.__dirty:
self.__order()
return self.__keysLens
else:
class OrderedDict(DictType):
def __init__(self, **kwargs):
self.__keys = []
self.__dirty = 1
super(OrderedDict, self).__init__()
if kwargs:
self.update(kwargs)
def __setitem__(self, key, value):
if not self.has_key(key):
self.__keys.append(key)
super(OrderedDict, self).__setitem__(key, value)
self.__dirty = 1
def __repr__(self):
if self.__dirty: self.__order()
return super(OrderedDict, self).__repr__()
def __str__(self):
if self.__dirty: self.__order()
return super(OrderedDict, self).__str__()
def __delitem__(self, key):
if super(OrderedDict, self).has_key(key):
self.__keys.remove(key)
super(OrderedDict, self).__delitem__(key)
self.__dirty = 1
__delattr__ = __delitem__
def clear(self):
super(OrderedDict, self).clear()
self.__keys = []
self.__dirty = 1
def keys(self):
if self.__dirty: self.__order()
return list(self.__keys)
def values(self):
if self.__dirty: self.__order()
return map(lambda k, d=self: d[k], self.__keys)
def items(self):
if self.__dirty: self.__order()
return map(lambda k, d=self: (k, d[k]), self.__keys)
def update(self, d):
map(lambda (k, v), self=self: self.__setitem__(k, v), d.items())
def sortingFun(self, keys): keys.sort()
def __order(self):
self.sortingFun(self.__keys)
d = {}
for k in self.__keys:
d[len(k)] = 1
l = d.keys()
l.sort(); l.reverse()
self.__keysLens = tuple(l)
self.__dirty = 0
def nextKey(self, key):
keys = self.keys()
if self.has_key(key):
nextIdx = keys.index(key) + 1
else:
nextIdx = bisect(keys, key)
if nextIdx < len(keys):
return keys[nextIdx]
else:
raise KeyError(key)
def getKeysLens(self):
if self.__dirty:
self.__order()
return self.__keysLens
def getKeysLens(self):
if self.__dirty:
self.__order()
return self.__keysLens
class OidOrderedDict(OrderedDict):
def __init__(self, **kwargs):
@ -149,7 +74,7 @@ class OidOrderedDict(OrderedDict):
apply(OrderedDict.__init__, [self], kwargs)
def __setitem__(self, key, value):
if not self.__keysCache.has_key(key):
if key not in self.__keysCache:
if type(key) == TupleType:
self.__keysCache[key] = key
else:
@ -159,7 +84,7 @@ class OidOrderedDict(OrderedDict):
OrderedDict.__setitem__(self, key, value)
def __delitem__(self, key):
if self.__keysCache.has_key(key):
if key in self.__keysCache:
del self.__keysCache[key]
OrderedDict.__delitem__(self, key)
__delattr__ = __delitem__

View File

@ -112,11 +112,11 @@ class MibInstrumController:
# Detach items from each other
for symName, parentName in self.lastBuildSyms.items():
if scalars.has_key(parentName):
if parentName in scalars:
scalars[parentName].unregisterSubtrees(symName)
elif cols.has_key(parentName):
elif parentName in cols:
cols[parentName].unregisterSubtrees(symName)
elif rows.has_key(parentName):
elif parentName in rows:
rows[parentName].unregisterSubtrees(symName)
else:
mibTree.unregisterSubtrees(symName)
@ -125,9 +125,9 @@ class MibInstrumController:
# Attach Managed Objects Instances to Managed Objects
for inst in instances.values():
if scalars.has_key(inst.typeName):
if inst.typeName in scalars:
scalars[inst.typeName].registerSubtrees(inst)
elif cols.has_key(inst.typeName):
elif inst.typeName in cols:
cols[inst.typeName].registerSubtrees(inst)
else:
raise error.SmiError(
@ -138,7 +138,7 @@ class MibInstrumController:
# Attach Table Columns to Table Rows
for col in cols.values():
rowName = col.name[:-1] # XXX
if rows.has_key(rowName):
if rowName in rows:
rows[rowName].registerSubtrees(col)
else:
raise error.SmiError(
@ -177,10 +177,14 @@ class MibInstrumController:
state, status = 'start', 'ok'
myErr = None
while 1:
fsmState = fsmTable.get((state, status))
if fsmState is None:
fsmState = fsmTable.get(('*', status))
if fsmState is None:
k = (state, status)
if k in fsmTable:
fsmState = fsmTable[k]
else:
k = ('*', status)
if k in fsmTable:
fsmState = fsmTable[k]
else:
raise error.SmiError(
'Unresolved FSM state %s, %s' % (state, status)
)

View File

@ -229,7 +229,7 @@ class MibTree(ObjectType):
"""Register subtrees at this tree. Subtrees are always attached
at the level of this tree, not subtrees."""
for subTree in subTrees:
if self._vars.has_key(subTree.name):
if subTree.name in self._vars:
raise error.SmiError(
'MIB subtree %s already registered at %s' % (subTree.name, self)
)
@ -241,7 +241,7 @@ class MibTree(ObjectType):
for name in names:
# This may fail if you fill a table by exporting MibScalarInstances
# but later drop them through SNMP.
if not self._vars.has_key(name):
if name not in self._vars:
raise error.SmiError(
'MIB subtree %s not registered at %s' % (name, self)
)
@ -256,7 +256,7 @@ class MibTree(ObjectType):
if len(self.name) < len(name):
for keyLen in self._vars.getKeysLens():
subName = name[:keyLen]
if self._vars.has_key(subName):
if subName in self._vars:
return self._vars[subName]
raise error.NoSuchObjectError(name=name, idx=idx)
@ -521,7 +521,7 @@ class MibTableColumn(MibScalar):
# No branches here, terminal OIDs only
def getBranch(self, name, idx):
if len(self.name) < len(name):
if self._vars.has_key(name):
if name in self._vars:
return self._vars[name]
raise error.NoSuchObjectError(name=name, idx=idx)
@ -551,7 +551,7 @@ class MibTableColumn(MibScalar):
node = self.getNextNode(node.name)
except error.NoSuchInstanceError:
break
if not self.__valIdx.has_key(node.syntax):
if node.syntax not in self.__valIdx:
self.__valIdx[node.syntax] = OidOrderedDict()
self.__valIdx[node.syntax][node.name] = 1
@ -560,7 +560,7 @@ class MibTableColumn(MibScalar):
# Sync to tree version
self.__valIdxId = self.branchVersionId
if self.__valIdx.has_key(value):
if value in self.__valIdx:
try:
return self.getNode(
self.__valIdx[value].nextKey(name)
@ -587,7 +587,7 @@ class MibTableColumn(MibScalar):
raise error.NoCreationError(idx=idx, name=name)
# Create instances if either it does not yet exist (row creation)
# or a value is passed (multiple OIDs in SET PDU)
if val is None and self.__createdInstances.has_key(name):
if val is None and name in self.__createdInstances:
return
self.__createdInstances[name] = self.protoInstance(
self.name, name[len(self.name):], self.syntax.clone()
@ -598,8 +598,8 @@ class MibTableColumn(MibScalar):
def createCommit(self, name, val, idx, (acFun, acCtx)):
# Commit new instance value
if self._vars.has_key(name): # XXX
if self.__createdInstances.has_key(name):
if name in self._vars: # XXX
if name in self.__createdInstances:
self._vars[name].createCommit(name, val, idx, (acFun, acCtx))
return
self.__createdInstances[name].createCommit(
@ -614,18 +614,18 @@ class MibTableColumn(MibScalar):
self.__valIdx.clear()
# Drop previous column instance
if self.__createdInstances.has_key(name):
if name in self.__createdInstances:
if self.__createdInstances[name] is not None:
self.__createdInstances[name].createCleanup(
name, val, idx, (acFun, acCtx)
)
del self.__createdInstances[name]
elif self._vars.has_key(name):
elif name in self._vars:
self._vars[name].createCleanup(name, val, idx, (acFun, acCtx))
def createUndo(self, name, val, idx, (acFun, acCtx)):
# Set back previous column instance, drop the new one
if self.__createdInstances.has_key(name):
if name in self.__createdInstances:
self._vars[name] = self.__createdInstances[name]
del self.__createdInstances[name]
# Remove new instance on rollback
@ -646,7 +646,7 @@ class MibTableColumn(MibScalar):
# Make sure destruction is allowed
if name == self.name:
raise error.NoAccessError(idx=idx, name=name)
if not self._vars.has_key(name):
if name not in self._vars:
return
if acFun and \
val is not None and \
@ -659,7 +659,7 @@ class MibTableColumn(MibScalar):
def destroyCommit(self, name, val, idx, (acFun, acCtx)):
# Make a copy of column instance and take it off the tree
if self._vars.has_key(name):
if name in self._vars:
self._vars[name].destroyCommit(
name, val, idx, (acFun, acCtx)
)
@ -671,7 +671,7 @@ class MibTableColumn(MibScalar):
self.__valIdx.clear()
# Drop instance copy
if self.__destroyedInstances.has_key(name):
if name in self.__destroyedInstances:
self.__destroyedInstances[name].destroyCleanup(
name, val, idx, (acFun, acCtx)
)
@ -680,7 +680,7 @@ class MibTableColumn(MibScalar):
def destroyUndo(self, name, val, idx, (acFun, acCtx)):
# Set back column instance
if self.__destroyedInstances.has_key(name):
if name in self.__destroyedInstances:
self._vars[name] = self.__destroyedInstances[name]
self._vars[name].destroyUndo(
name, val, idx, (acFun, acCtx)
@ -703,12 +703,12 @@ class MibTableColumn(MibScalar):
except error.RowDestructionWanted:
self.__rowOpWanted[name] = error.RowDestructionWanted()
self.destroyTest(name, val, idx, (acFun, acCtx))
if self.__rowOpWanted.has_key(name):
if name in self.__rowOpWanted:
debug.logger & debug.flagIns and debug.logger('%s flagged by %s=%s' % (self.__rowOpWanted[name], name, repr(val)))
raise self.__rowOpWanted[name]
def __delegateWrite(self, subAction, name, val, idx, (acFun, acCtx)):
if not self.__rowOpWanted.has_key(name):
if name not in self.__rowOpWanted:
getattr(MibScalar, 'write'+subAction)(
self, name, val, idx, (acFun, acCtx)
)
@ -726,7 +726,7 @@ class MibTableColumn(MibScalar):
self.__delegateWrite(
'Commit', name, val, idx, (acFun, acCtx)
)
if self.__rowOpWanted.has_key(name):
if name in self.__rowOpWanted:
raise self.__rowOpWanted[name]
def writeCleanup(self, name, val, idx, (acFun, acCtx)):
@ -736,7 +736,7 @@ class MibTableColumn(MibScalar):
self.__delegateWrite(
'Cleanup', name, val, idx, (acFun, acCtx)
)
if self.__rowOpWanted.has_key(name):
if name in self.__rowOpWanted:
e = self.__rowOpWanted[name]
del self.__rowOpWanted[name]
debug.logger & debug.flagIns and debug.logger('%s dropped by %s=%s' % (e, name, repr(val)))
@ -746,7 +746,7 @@ class MibTableColumn(MibScalar):
self.__delegateWrite(
'Undo', name, val, idx, (acFun, acCtx)
)
if self.__rowOpWanted.has_key(name):
if name in self.__rowOpWanted:
e = self.__rowOpWanted[name]
del self.__rowOpWanted[name]
debug.logger & debug.flagIns and debug.logger('%s dropped by %s=%s' % (e, name, repr(val)))
@ -889,7 +889,7 @@ class MibTableRow(MibTree):
def registerAugmentions(self, *names):
for modName, symName in names:
if self.augmentingRows.has_key((modName, symName)):
if (modName, symName) in self.augmentingRows:
raise error.SmiError(
'Row %s already augmented by %s::%s' % \
(self.name, modName, symName)
@ -918,13 +918,13 @@ class MibTableRow(MibTree):
for name, var in self._vars.items():
if name == excludeName:
continue
if indexVals.has_key(name):
if name in indexVals:
getattr(var, action)(name + nameSuffix, indexVals[name], idx,
(None, None))
else:
getattr(var, action)(name + nameSuffix, val, idx,
(acFun, acCtx))
debug.logger & debug.flagIns and debug.logger('__manageColumns: action %s name %s suffix %s %svalue %s' % (action, name, nameSuffix, indexVals.has_key(name) and "index " or "", repr(indexVals.get(name, val))))
debug.logger & debug.flagIns and debug.logger('__manageColumns: action %s name %s suffix %s %svalue %s' % (action, name, nameSuffix, name in indexVals and "index " or "", repr(indexVals.get(name, val))))
def __delegate(self, subAction, name, val, idx, (acFun, acCtx)):
# Relay operation request to column, expect row operation request.

View File

@ -96,7 +96,7 @@ __sysObjectID = MibScalarInstance(sysObjectID.name, (0,), sysObjectID.syntax.clo
class SysUpTime(TimeTicks):
createdAt = time()
def clone(self, **kwargs):
if kwargs.get('value') is None:
if 'value' not in kwargs:
kwargs['value'] = int((time()-self.createdAt)*100)
return apply(TimeTicks.clone, [self], kwargs)

View File

@ -35,8 +35,14 @@ class MibViewController:
# This is potentionally ambiguous mapping. Sort modules in
# ascending age for resolution
def __sortFun(x, y, s=self.mibBuilder.mibSymbols):
m1 = s[x].get("PYSNMP_MODULE_ID")
m2 = s[y].get("PYSNMP_MODULE_ID")
if "PYSNMP_MODULE_ID" in s[x]:
m1 = s[x]["PYSNMP_MODULE_ID"]
else:
m1 = None
if "PYSNMP_MODULE_ID" in s[y]:
m2 = s[y]["PYSNMP_MODULE_ID"]
else:
m2 = None
r1 = r2 = "1970-01-01 00:00"
if m1:
r = m1.getRevisions()
@ -69,7 +75,7 @@ class MibViewController:
if n == "PYSNMP_MODULE_ID": # do not index this special symbol
continue
if type(v) == ClassType:
if mibMod['typeToModIdx'].has_key(n):
if n in mibMod['typeToModIdx']:
raise error.SmiError(
'Duplicate SMI type %s::%s, has %s' % \
(modName, n, mibMod['typeToModIdx'][n])
@ -79,7 +85,7 @@ class MibViewController:
elif type(v) == InstanceType:
if isinstance(v, MibScalarInstance):
continue
if mibMod['varToNameIdx'].has_key(n):
if n in mibMod['varToNameIdx']:
raise error.SmiError(
'Duplicate MIB variable %s::%s has %s' % \
(modName, n, mibMod['varToNameIdx'][n])
@ -114,8 +120,9 @@ class MibViewController:
keyLen = len(key)
i = keyLen-1
while i:
baseLabel = oidToLabelIdx.get(key[:i])
if baseLabel:
k = key[:i]
if k in oidToLabelIdx:
baseLabel = oidToLabelIdx[k]
if i != keyLen-1:
baseLabel = baseLabel + key[i:-1]
break
@ -158,12 +165,10 @@ class MibViewController:
"""getOidLabel(nodeName) -> (oid, label, suffix)"""
if not nodeName:
return nodeName, nodeName, ()
oid = labelToOidIdx.get(nodeName)
if oid:
return oid, nodeName, ()
label = oidToLabelIdx.get(nodeName)
if label:
return nodeName, label, ()
if nodeName in labelToOidIdx:
return labelToOidIdx[nodeName], nodeName, ()
if nodeName in oidToLabelIdx:
return nodeName, oidToLabelIdx[nodeName], ()
if len(nodeName) < 2:
return nodeName, nodeName, ()
oid, label, suffix = self.__getOidLabel(
@ -171,19 +176,18 @@ class MibViewController:
)
suffix = suffix + nodeName[-1:]
resLabel = label + suffix
resOid = labelToOidIdx.get(resLabel)
if resOid:
return resOid, resLabel, ()
if resLabel in labelToOidIdx:
return labelToOidIdx[resLabel], resLabel, ()
resOid = oid + suffix
resLabel = oidToLabelIdx.get(resOid)
if resLabel:
return resOid, resLabel, ()
if resOid in oidToLabelIdx:
return resOid, oidToLabelIdx[resOid], ()
return oid, label, suffix
def getNodeNameByOid(self, nodeName, modName=''):
self.indexMib()
mibMod = self.__mibSymbolsIdx.get(modName)
if mibMod is None:
if modName in self.__mibSymbolsIdx:
mibMod = self.__mibSymbolsIdx[modName]
else:
raise error.SmiError(
'No module %s at %s' % (modName, self)
)
@ -199,14 +203,16 @@ class MibViewController:
return oid, label, suffix
def getNodeNameByDesc(self, nodeName, modName=''):
self.indexMib()
mibMod = self.__mibSymbolsIdx.get(modName)
if mibMod is None:
self.indexMib()
if modName in self.__mibSymbolsIdx:
mibMod = self.__mibSymbolsIdx[modName]
else:
raise error.SmiError(
'No module %s at %s' % (modName, self)
)
oid = mibMod['varToNameIdx'].get(nodeName)
if oid is None:
if nodeName in mibMod['varToNameIdx']:
oid = mibMod['varToNameIdx'][nodeName]
else:
raise error.NoSuchObjectError(
str='No such symbol %s::%s at %s' % (modName, nodeName, self)
)
@ -230,9 +236,10 @@ class MibViewController:
)
def getFirstNodeName(self, modName=''):
self.indexMib()
mibMod = self.__mibSymbolsIdx.get(modName)
if mibMod is None:
self.indexMib()
if modName in self.__mibSymbolsIdx:
mibMod = self.__mibSymbolsIdx[modName]
else:
raise error.SmiError(
'No module %s at %s' % (modName, self)
)
@ -271,13 +278,15 @@ class MibViewController:
def getTypeName(self, typeName, modName=''):
self.indexMib()
mibMod = self.__mibSymbolsIdx.get(modName)
if mibMod is None:
if modName in self.__mibSymbolsIdx:
mibMod = self.__mibSymbolsIdx[modName]
else:
raise error.SmiError(
'No module %s at %s' % (modName, self)
)
m = mibMod['typeToModIdx'].get(typeName)
if m is None:
if typeName in mibMod['typeToModIdx']:
m = mibMod['typeToModIdx'][typeName]
else:
raise error.NoSuchObjectError(
str='No such type %s::%s at %s' % (modName, typeName, self)
)
@ -285,8 +294,9 @@ class MibViewController:
def getFirstTypeName(self, modName=''):
self.indexMib()
mibMod = self.__mibSymbolsIdx.get(modName)
if mibMod is None:
if modName in self.__mibSymbolsIdx:
mibMod = self.__mibSymbolsIdx[modName]
else:
raise error.SmiError(
'No module %s at %s' % (modName, self)
)