def makeVarBinds(self, snmpEngine, varBinds, oidOnly=False): cache = self._getCmdCache(snmpEngine) mibViewController = cache['mibViewController'] __varBinds = [] for varName, varVal in varBinds: if isinstance(varName, MibVariable): if oidOnly or isinstance(varVal, base.AbstractSimpleAsn1Item): varName.resolveWithMib(mibViewController, oidOnly=True) else: varName.resolveWithMib(mibViewController) varVal = varName.getMibNode().getSyntax().clone(varVal) elif isinstance(varName[0], tuple): # legacy varName = MibVariable(varName[0][0], varName[0][1], *varName[1:]).resolveWithMib(mibViewController) if not oidOnly and \ not isinstance(varVal, base.AbstractSimpleAsn1Item): varVal = varName.getMibNode().getSyntax().clone(varVal) else: if oidOnly or isinstance(varVal, base.AbstractSimpleAsn1Item): varName = MibVariable(varName).resolveWithMib(mibViewController, oidOnly=True) else: varName = MibVariable(varName).resolveWithMib(mibViewController) varVal = varName.getMibNode().getSyntax().clone(varVal) __varBinds.append((varName, varVal)) return __varBinds
def setCmd(self, authData, transportTarget, varBinds, cbInfo): (cbFun, cbCtx) = cbInfo addrName, paramsName = self.cfgCmdGen( authData, transportTarget ) __varBinds = [] for varName, varVal in varBinds: if isinstance(varName, MibVariable): varName.resolveWithMib(self.mibViewController) if not isinstance(varVal, base.AbstractSimpleAsn1Item): varVal = varName.getMibNode().getSyntax().clone(varVal) elif isinstance(varName[0], tuple): # legacy varName = MibVariable(varName[0][0], varName[0][1], *varName[1:]).resolveWithMib(self.mibViewController) if not isinstance(varVal, base.AbstractSimpleAsn1Item): varVal = varName.getMibNode().getSyntax().clone(varVal) else: if isinstance(varVal, base.AbstractSimpleAsn1Item): varName = MibVariable(varName).resolveWithMib(self.mibViewController, oidOnly=True) else: varName = MibVariable(varName).resolveWithMib(self.mibViewController) varVal = varName.getMibNode().getSyntax().clone(varVal) __varBinds.append((varName, varVal)) return cmdgen.SetCommandGenerator().sendReq( self.snmpEngine, addrName, __varBinds, cbFun, cbCtx, authData.contextEngineId, authData.contextName )
def sendNotification( self, authData, transportTarget, notifyType, notificationType=None, varBinds=None, cbInfo=(None, None) ): (cbFun, cbCtx) = cbInfo notifyName = self.cfgNtfOrg(authData, transportTarget, notifyType) if notificationType is not None: if isinstance(notificationType, MibVariable): notificationType = notificationType.resolveWithMib(self.mibViewController, oidOnly=True) elif isinstance(notificationType[0], tuple): # legacy notificationType = MibVariable(notificationType[0][0], notificationType[0][1], *notificationType[1:]).resolveWithMib(self.mibViewController) if varBinds: __varBinds = [] for varName, varVal in varBinds: if isinstance(varName, MibVariable): varName.resolveWithMib(self.mibViewController) if not isinstance(varVal, base.AbstractSimpleAsn1Item): varVal = varName.getMibNode().getSyntax().clone(varVal) elif isinstance(varName[0], tuple): # legacy varName = MibVariable(varName[0][0], varName[0][1], *varName[1:]).resolveWithMib(self.mibViewController) if not isinstance(varVal, base.AbstractSimpleAsn1Item): varVal = varName.getMibNode().getSyntax().clone(varVal) else: if isinstance(varVal, base.AbstractSimpleAsn1Item): varName = MibVariable(varName).resolveWithMib(self.mibViewController, oidOnly=True) else: varName = MibVariable(varName).resolveWithMib(self.mibViewController) varVal = varName.getMibNode().getSyntax().clone(varVal) __varBinds.append((varName, varVal)) else: __varBinds = None return ntforg.NotificationOriginator(self.snmpContext).sendNotification(self.snmpEngine, notifyName, notificationType, __varBinds, cbFun, cbCtx)
def makeVarBinds(self, varBinds, oidOnly=False): __varBinds = [] for varName, varVal in varBinds: if isinstance(varName, MibVariable): if oidOnly or isinstance(varVal, base.AbstractSimpleAsn1Item): varName.resolveWithMib(self.mibViewController, oidOnly=True) else: varName.resolveWithMib(self.mibViewController) varVal = varName.getMibNode().getSyntax().clone(varVal) elif isinstance(varName[0], tuple): # legacy varName = MibVariable(varName[0][0], varName[0][1], *varName[1:]).resolveWithMib( self.mibViewController) if not oidOnly and \ not isinstance(varVal, base.AbstractSimpleAsn1Item): varVal = varName.getMibNode().getSyntax().clone(varVal) else: if oidOnly or isinstance(varVal, base.AbstractSimpleAsn1Item): varName = MibVariable(varName).resolveWithMib( self.mibViewController, oidOnly=True) else: varName = MibVariable(varName).resolveWithMib( self.mibViewController) varVal = varName.getMibNode().getSyntax().clone(varVal) __varBinds.append((varName, varVal)) return __varBinds
def unmakeVarBinds(self, varBinds, lookupNames=True, lookupValues=True): _varBinds = [] for name, value in varBinds: if lookupNames or lookupValues: varName = MibVariable(name).resolveWithMib(self.mibViewController) if lookupNames: name = varName if lookupValues: if value.tagSet not in (rfc1905.NoSuchObject.tagSet, rfc1905.NoSuchInstance.tagSet, rfc1905.EndOfMibView.tagSet): value = varName.getMibNode().getSyntax().clone(value) _varBinds.append((name, value)) return _varBinds
def setCmd(self, authData, transportTarget, varBinds, cbInfo): (cbFun, cbCtx) = cbInfo addrName, paramsName = self.cfgCmdGen(authData, transportTarget) __varBinds = [] for varName, varVal in varBinds: if isinstance(varName, MibVariable): varName.resolveWithMib(self.mibViewController) if not isinstance(varVal, base.AbstractSimpleAsn1Item): varVal = varName.getMibNode().getSyntax().clone(varVal) elif isinstance(varName[0], tuple): # legacy varName = MibVariable(varName[0][0], varName[0][1], *varName[1:]).resolveWithMib( self.mibViewController) if not isinstance(varVal, base.AbstractSimpleAsn1Item): varVal = varName.getMibNode().getSyntax().clone(varVal) else: if isinstance(varVal, base.AbstractSimpleAsn1Item): varName = MibVariable(varName).resolveWithMib( self.mibViewController, oidOnly=True) else: varName = MibVariable(varName).resolveWithMib( self.mibViewController) varVal = varName.getMibNode().getSyntax().clone(varVal) __varBinds.append((varName, varVal)) return cmdgen.SetCommandGenerator().sendReq(self.snmpEngine, addrName, __varBinds, cbFun, cbCtx, authData.contextEngineId, authData.contextName)
def makeReadVarBinds(self, varNames): varBinds = [] for varName in varNames: if isinstance(varName, MibVariable): varName.resolveWithMib(self.mibViewController, oidOnly=True) elif isinstance(varName[0], tuple): # legacy varName = MibVariable(varName[0][0], varName[0][1], *varName[1:]).resolveWithMib( self.mibViewController) else: varName = MibVariable(varName).resolveWithMib( self.mibViewController, oidOnly=True) varBinds.append((varName, self._null)) return varBinds
def unmakeVarBinds(self, varBinds, lookupNames=True, lookupValues=True): _varBinds = [] for name, value in varBinds: if lookupNames or lookupValues: varName = MibVariable(name).resolveWithMib( self.mibViewController) if lookupNames: name = varName if lookupValues: if value.tagSet not in (rfc1905.NoSuchObject.tagSet, rfc1905.NoSuchInstance.tagSet, rfc1905.EndOfMibView.tagSet): value = varName.getMibNode().getSyntax().clone(value) _varBinds.append((name, value)) return _varBinds
def sendNotification(self, authData, transportTarget, notifyType, notificationType=None, varBinds=None, cbInfo=(None, None)): (cbFun, cbCtx) = cbInfo notifyName = self.cfgNtfOrg(authData, transportTarget, notifyType) if notificationType is not None: if isinstance(notificationType, MibVariable): notificationType = notificationType.resolveWithMib( self.mibViewController, oidOnly=True) elif isinstance(notificationType[0], tuple): # legacy notificationType = MibVariable( notificationType[0][0], notificationType[0][1], *notificationType[1:]).resolveWithMib( self.mibViewController) if varBinds: __varBinds = [] for varName, varVal in varBinds: if isinstance(varName, MibVariable): varName.resolveWithMib(self.mibViewController) if not isinstance(varVal, base.AbstractSimpleAsn1Item): varVal = varName.getMibNode().getSyntax().clone(varVal) elif isinstance(varName[0], tuple): # legacy varName = MibVariable(varName[0][0], varName[0][1], *varName[1:]).resolveWithMib( self.mibViewController) if not isinstance(varVal, base.AbstractSimpleAsn1Item): varVal = varName.getMibNode().getSyntax().clone(varVal) else: if isinstance(varVal, base.AbstractSimpleAsn1Item): varName = MibVariable(varName).resolveWithMib( self.mibViewController, oidOnly=True) else: varName = MibVariable(varName).resolveWithMib( self.mibViewController) varVal = varName.getMibNode().getSyntax().clone(varVal) __varBinds.append((varName, varVal)) else: __varBinds = None return ntforg.NotificationOriginator( self.snmpContext).sendNotification(self.snmpEngine, notifyName, notificationType, __varBinds, cbFun, cbCtx)
def unmakeVarBinds(self, snmpEngine, varBinds, lookupNames, lookupValues): if lookupNames or lookupValues: cache = self._getCmdCache(snmpEngine) mibViewController = cache['mibViewController'] _varBinds = [] for name, value in varBinds: varName = MibVariable(name).resolveWithMib(mibViewController) if lookupNames: name = varName if lookupValues: if value.tagSet not in (rfc1905.NoSuchObject.tagSet, rfc1905.NoSuchInstance.tagSet, rfc1905.EndOfMibView.tagSet): if varName.isFullyResolved(): value = varName.getMibNode().getSyntax().clone(value) _varBinds.append((name, value)) return _varBinds else: return varBinds
def sendNotification(self, authData, transportTarget, notifyType, notificationType, varBinds=(), cbInfo=(None, None), lookupNames=False, lookupValues=False, contextName=null): def __cbFun(sendRequestHandle, errorIndication, errorStatus, errorIndex, varBinds, cbCtx): lookupNames, lookupValues, cbFun, cbCtx = cbCtx if cbFun is None: # user callback not supplied return try: # we need to pass response PDU information to user for INFORMs return cbFun( sendRequestHandle, errorIndication, errorStatus, errorIndex, self.unmakeVarBinds(varBinds, lookupNames, lookupValues), cbCtx) except TypeError: # a backward compatible way of calling user function return cbFun(sendRequestHandle, errorIndication, cbCtx) # for backward compatibility if contextName is null and authData.contextName: contextName = authData.contextName (cbFun, cbCtx) = cbInfo # Create matching transport tags if not given by user if not transportTarget.tagList: transportTarget.tagList = str( hash((authData.securityName, transportTarget.transportAddr))) if isinstance(authData, CommunityData) and not authData.tag: authData.tag = transportTarget.tagList.split()[0] notifyName = self.cfgNtfOrg(authData, transportTarget, notifyType) if isinstance(notificationType, MibVariable): notificationType = notificationType.resolveWithMib( self.mibViewController, oidOnly=True) elif isinstance(notificationType[0], tuple): # legacy notificationType = MibVariable( notificationType[0][0], notificationType[0][1], *notificationType[1:]).resolveWithMib(self.mibViewController) return ntforg.NotificationOriginator( self.snmpContext).sendNotification( self.snmpEngine, notifyName, notificationType, self.makeVarBinds(varBinds), __cbFun, (lookupNames, lookupValues, cbFun, cbCtx), contextName)
def sendNotification(self, authData, transportTarget, notifyType, notificationType, varBinds=(), cbInfo=(None, None), lookupNames=False, lookupValues=False, contextName=null): def __cbFun(sendRequestHandle, errorIndication, errorStatus, errorIndex, varBinds, cbCtx): cbFun, cbCtx = cbCtx try: # we need to pass response PDU information to user for INFORMs return cbFun and cbFun(sendRequestHandle, errorIndication, errorStatus, errorIndex, varBinds, cbCtx) except TypeError: # a backward compatible way of calling user function return cbFun(sendRequestHandle, errorIndication, cbCtx) # for backward compatibility if contextName is null and authData.contextName: contextName = authData.contextName # legacy if not isinstance(notificationType, MibVariable) and \ isinstance(notificationType[0], tuple): notificationType = MibVariable( notificationType[0][0], notificationType[0][1], *notificationType[1:]).resolveWithMib(self.mibViewController) return self.__asyncNtfOrg.sendNotification( self.snmpEngine, self.snmpContext, authData, transportTarget, notifyType, notificationType, varBinds, (__cbFun, cbInfo), lookupNames, lookupValues, contextName)