diff options
author | elie <elie> | 2014-06-09 09:35:43 +0000 |
---|---|---|
committer | elie <elie> | 2014-06-09 09:35:43 +0000 |
commit | e95d7d81d2efde462171e0f45aceeec3009322d8 (patch) | |
tree | 6f9e5cee51956ab3379e51fa938560d8fa2fd1be | |
parent | 70caa4259ac547d412af41d6c00212a3c8ff1d3c (diff) | |
download | pysnmp-e95d7d81d2efde462171e0f45aceeec3009322d8.tar.gz |
ContextData container introduced to the newest (async) API
9 files changed, 54 insertions, 35 deletions
diff --git a/examples/v3arch/oneliner/agent/ntforg/inform-async-multiple-snmp-engines.py b/examples/v3arch/oneliner/agent/ntforg/inform-async-multiple-snmp-engines.py index 6acaf28..bf04e67 100644 --- a/examples/v3arch/oneliner/agent/ntforg/inform-async-multiple-snmp-engines.py +++ b/examples/v3arch/oneliner/agent/ntforg/inform-async-multiple-snmp-engines.py @@ -77,6 +77,7 @@ for authData, transportTarget in targets: context.SnmpContext(snmpEngine), authData, transportTarget, + ntforg.ContextData(), 'inform', ntforg.MibVariable('SNMPv2-MIB', 'coldStart'), ( ( rfc1902.ObjectName('1.3.6.1.2.1.1.1.0'), diff --git a/examples/v3arch/oneliner/agent/ntforg/inform-async-multiple-transports-and-protocols.py b/examples/v3arch/oneliner/agent/ntforg/inform-async-multiple-transports-and-protocols.py index bc679d6..7d9b497 100644 --- a/examples/v3arch/oneliner/agent/ntforg/inform-async-multiple-transports-and-protocols.py +++ b/examples/v3arch/oneliner/agent/ntforg/inform-async-multiple-transports-and-protocols.py @@ -49,6 +49,7 @@ for authData, transportTarget in targets: context.SnmpContext(snmpEngine), authData, transportTarget, + cmdgen.ContextData(), 'inform', ntforg.MibVariable('SNMPv2-MIB', 'coldStart'), ( ( rfc1902.ObjectName('1.3.6.1.2.1.1.1.0'), diff --git a/examples/v3arch/oneliner/agent/ntforg/trap-async-multiple-transports-and-protocols.py b/examples/v3arch/oneliner/agent/ntforg/trap-async-multiple-transports-and-protocols.py index c8f4246..1fdee69 100644 --- a/examples/v3arch/oneliner/agent/ntforg/trap-async-multiple-transports-and-protocols.py +++ b/examples/v3arch/oneliner/agent/ntforg/trap-async-multiple-transports-and-protocols.py @@ -37,6 +37,7 @@ for authData, transportTarget in targets: context.SnmpContext(snmpEngine), authData, transportTarget, + ntforg.ContextData(), 'trap', ntforg.MibVariable('SNMPv2-MIB', 'coldStart'), ( ( rfc1902.ObjectName('1.3.6.1.2.1.1.1.0'), diff --git a/examples/v3arch/oneliner/manager/cmdgen/get-async-multiple-snmp-engines.py b/examples/v3arch/oneliner/manager/cmdgen/get-async-multiple-snmp-engines.py index da9c515..8b5eec2 100644 --- a/examples/v3arch/oneliner/manager/cmdgen/get-async-multiple-snmp-engines.py +++ b/examples/v3arch/oneliner/manager/cmdgen/get-async-multiple-snmp-engines.py @@ -96,7 +96,7 @@ for authData, transportTarget, varBinds in targets: snmpEngine = transportTarget.getTransportInfo()[1][1] % 3 and \ snmpEngineA or snmpEngineB cmdGen.getCmd( - snmpEngine, authData, transportTarget, varBinds, + snmpEngine, authData, transportTarget, cmdgen.ContextData(), varBinds, (cbFun, (snmpEngine, authData, transportTarget)) ) diff --git a/examples/v3arch/oneliner/manager/cmdgen/get-async-multiple-transports-and-protocols.py b/examples/v3arch/oneliner/manager/cmdgen/get-async-multiple-transports-and-protocols.py index fab37aa..2ff0438 100644 --- a/examples/v3arch/oneliner/manager/cmdgen/get-async-multiple-transports-and-protocols.py +++ b/examples/v3arch/oneliner/manager/cmdgen/get-async-multiple-transports-and-protocols.py @@ -78,7 +78,7 @@ cmdGen = cmdgen.AsyncCommandGenerator() # Submit GET requests for authData, transportTarget, varNames in targets: cmdGen.getCmd( - snmpEngine, authData, transportTarget, varNames, + snmpEngine, authData, transportTarget, cmdgen.ContextData(), varNames, # User-space callback function and its context (cbFun, (authData, transportTarget)), lookupNames=True, lookupValues=True diff --git a/examples/v3arch/oneliner/manager/cmdgen/getnext-async-multiple-transports-and-protocols.py b/examples/v3arch/oneliner/manager/cmdgen/getnext-async-multiple-transports-and-protocols.py index 73ce642..50bece9 100644 --- a/examples/v3arch/oneliner/manager/cmdgen/getnext-async-multiple-transports-and-protocols.py +++ b/examples/v3arch/oneliner/manager/cmdgen/getnext-async-multiple-transports-and-protocols.py @@ -80,7 +80,7 @@ cmdGen = cmdgen.AsyncCommandGenerator() for authData, transportTarget, varNames in targets: varBindHead = cmdGen.makeVarBindsHead(snmpEngine, varNames) cmdGen.nextCmd( - snmpEngine, authData, transportTarget, varNames, + snmpEngine, authData, transportTarget, cmdgen.ContextData(), varNames, # User-space callback function and its context (cbFun, (varBindHead, authData, transportTarget)), lookupNames=True, lookupValues=True diff --git a/pysnmp/entity/rfc3413/oneliner/cmdgen.py b/pysnmp/entity/rfc3413/oneliner/cmdgen.py index cbad8c6..2b62da0 100644 --- a/pysnmp/entity/rfc3413/oneliner/cmdgen.py +++ b/pysnmp/entity/rfc3413/oneliner/cmdgen.py @@ -3,7 +3,8 @@ from pysnmp.entity.rfc3413 import cmdgen from pysnmp.entity.rfc3413.oneliner.mibvar import MibVariable from pysnmp.entity.rfc3413.oneliner.auth import CommunityData, UsmUserData from pysnmp.entity.rfc3413.oneliner.target import UdpTransportTarget, \ - Udp6TransportTarget, UnixTransportTarget + Udp6TransportTarget, UnixTransportTarget +from pysnmp.entity.rfc3413.oneliner.ctx import ContextData from pysnmp.proto import rfc1905, errind from pysnmp.smi import view from pysnmp import nextid, error @@ -256,9 +257,8 @@ class AsyncCommandGenerator: # Async SNMP apps - def getCmd(self, snmpEngine, authData, transportTarget, varNames, cbInfo, - lookupNames=False, lookupValues=False, - contextEngineId=None, contextName=null): + def getCmd(self, snmpEngine, authData, transportTarget, contextData, + varNames, cbInfo, lookupNames=False, lookupValues=False): def __cbFun(sendRequestHandle, errorIndication, errorStatus, errorIndex, varBinds, cbCtx): @@ -285,12 +285,11 @@ class AsyncCommandGenerator: self.makeVarBinds(snmpEngine, [(x, self._null) for x in varNames]), __cbFun, (lookupNames, lookupValues, cbFun, cbCtx), - contextEngineId, contextName + contextData.contextEngineId, contextData.contextName ) - def setCmd(self, snmpEngine, authData, transportTarget, varBinds, cbInfo, - lookupNames=False, lookupValues=False, - contextEngineId=None, contextName=null): + def setCmd(self, snmpEngine, authData, transportTarget, contextData, + varBinds, cbInfo, lookupNames=False, lookupValues=False): def __cbFun(sendRequestHandle, errorIndication, errorStatus, errorIndex, varBinds, cbCtx): @@ -317,12 +316,11 @@ class AsyncCommandGenerator: self.makeVarBinds(snmpEngine, varBinds), __cbFun, (lookupNames, lookupValues, cbFun, cbCtx), - contextEngineId, contextName + contextData.contextEngineId, contextData.contextName ) - def nextCmd(self, snmpEngine, authData, transportTarget, varNames, cbInfo, - lookupNames=False, lookupValues=False, - contextEngineId=None, contextName=null): + def nextCmd(self, snmpEngine, authData, transportTarget, contextData, + varNames, cbInfo, lookupNames=False, lookupValues=False): def __cbFun(sendRequestHandle, errorIndication, errorStatus, errorIndex, varBindTable, cbCtx): @@ -346,13 +344,12 @@ class AsyncCommandGenerator: self.makeVarBinds(snmpEngine, [(x, self._null) for x in varNames]), __cbFun, (lookupNames, lookupValues, cbFun, cbCtx), - contextEngineId, contextName + contextData.contextEngineId, contextData.contextName ) - def bulkCmd(self, snmpEngine, authData, transportTarget, + def bulkCmd(self, snmpEngine, authData, transportTarget, contextData, nonRepeaters, maxRepetitions, varNames, cbInfo, - lookupNames=False, lookupValues=False, - contextEngineId=None, contextName=null): + lookupNames=False, lookupValues=False): def __cbFun(sendRequestHandle, errorIndication, errorStatus, errorIndex, varBindTable, cbCtx): @@ -377,7 +374,7 @@ class AsyncCommandGenerator: self.makeVarBinds(snmpEngine, [(x, self._null) for x in varNames]), __cbFun, (lookupNames, lookupValues, cbFun, cbCtx), - contextEngineId, contextName + contextData.contextEngineId, contextData.contextName ) # compatibility implementation, never use this class for new applications @@ -432,8 +429,10 @@ class AsynCommandGenerator: contextName = authData.contextName return self.__asyncCmdGen.getCmd( - self.snmpEngine, authData, transportTarget, varNames, cbInfo, - lookupNames, lookupValues, contextEngineId, contextName + self.snmpEngine, + authData, transportTarget, + ContextData(contextEngineId, contextName), varNames, cbInfo, + lookupNames, lookupValues ) asyncGetCmd = getCmd @@ -447,8 +446,10 @@ class AsynCommandGenerator: contextName = authData.contextName return self.__asyncCmdGen.setCmd( - self.snmpEngine, authData, transportTarget, varBinds, cbInfo, - lookupNames, lookupValues, contextEngineId, contextName + self.snmpEngine, + authData, transportTarget, + ContextData(contextEngineId, contextName), varBinds, cbInfo, + lookupNames, lookupValues ) asyncSetCmd = setCmd @@ -462,8 +463,10 @@ class AsynCommandGenerator: contextName = authData.contextName return self.__asyncCmdGen.nextCmd( - self.snmpEngine, authData, transportTarget, varNames, cbInfo, - lookupNames, lookupValues, contextEngineId, contextName + self.snmpEngine, + authData, transportTarget, + ContextData(contextEngineId, contextName), varNames, cbInfo, + lookupNames, lookupValues ) asyncNextCmd = nextCmd @@ -478,9 +481,11 @@ class AsynCommandGenerator: contextName = authData.contextName return self.__asyncCmdGen.bulkCmd( - self.snmpEngine, authData, transportTarget, - nonRepeaters, maxRepetitions, varNames, cbInfo, - lookupNames, lookupValues, contextEngineId, contextName + self.snmpEngine, + authData, transportTarget, + nonRepeaters, maxRepetitions, + ContextData(contextEngineId, contextName), varNames, cbInfo, + lookupNames, lookupValues ) asyncBulkCmd = bulkCmd diff --git a/pysnmp/entity/rfc3413/oneliner/ctx.py b/pysnmp/entity/rfc3413/oneliner/ctx.py new file mode 100644 index 0000000..3449912 --- /dev/null +++ b/pysnmp/entity/rfc3413/oneliner/ctx.py @@ -0,0 +1,11 @@ +from pyasn1.compat.octets import null + +class ContextData: + def __init__(self, contextEngineId=None, contextName=null): + self.contextEngineId = contextEngineId + self.contextName = contextName + + def __repr__(self): + return '%s(contextEngineId=%r, contextName=%r)' % ( + self.__class__.__name__, self.contextEngineId, self.contextName + ) diff --git a/pysnmp/entity/rfc3413/oneliner/ntforg.py b/pysnmp/entity/rfc3413/oneliner/ntforg.py index 6e933c5..b65f2e1 100644 --- a/pysnmp/entity/rfc3413/oneliner/ntforg.py +++ b/pysnmp/entity/rfc3413/oneliner/ntforg.py @@ -6,6 +6,7 @@ from pysnmp.entity.rfc3413.oneliner.mibvar import MibVariable from pysnmp.entity.rfc3413.oneliner.auth import CommunityData, UsmUserData from pysnmp.entity.rfc3413.oneliner.target import UdpTransportTarget, \ Udp6TransportTarget, UnixTransportTarget +from pysnmp.entity.rfc3413.oneliner.ctx import ContextData from pysnmp.entity.rfc3413.oneliner import cmdgen # Auth protocol @@ -113,13 +114,12 @@ class AsyncNotificationOriginator(cmdgen.AsyncCommandGenerator): del cache['auth'][authDataKey] def sendNotification(self, snmpEngine, snmpContext, - authData, transportTarget, + authData, transportTarget, contextData, notifyType, notificationType, instanceIndex, varBinds=(), cbInfo=(None, None), - lookupNames=False, lookupValues=False, - contextName=null): + lookupNames=False, lookupValues=False): def __cbFun(snmpEngine, sendRequestHandle, errorIndication, errorStatus, errorIndex, varBinds, cbCtx): @@ -155,7 +155,7 @@ class AsyncNotificationOriginator(cmdgen.AsyncCommandGenerator): cache['mibViewController'], oidOnly=True ) - return ntforg.NotificationOriginator().sendVarBinds(snmpEngine, snmpContext, contextName, notifyName, notificationType, instanceIndex, self.makeVarBinds(snmpEngine, varBinds), __cbFun, (lookupNames, lookupValues, cbFun, cbCtx)) + return ntforg.NotificationOriginator().sendVarBinds(snmpEngine, snmpContext, contextData.contextName, notifyName, notificationType, instanceIndex, self.makeVarBinds(snmpEngine, varBinds), __cbFun, (lookupNames, lookupValues, cbFun, cbCtx)) # substitute sendNotification return object for backward compatibility class ErrorIndicationReturn: @@ -231,10 +231,10 @@ class AsynNotificationOriginator(cmdgen.AsynCommandGenerator): return self.__asyncNtfOrg.sendNotification( self.snmpEngine, self.snmpContext, - authData, transportTarget, + authData, transportTarget, ContextData(contextName=contextName), notifyType, notificationType, None, varBinds, (__cbFun, cbInfo), - lookupNames, lookupValues, contextName + lookupNames, lookupValues ) asyncSendNotification = sendNotification |