summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorelie <elie>2007-03-25 20:41:32 +0000
committerelie <elie>2007-03-25 20:41:32 +0000
commit3b659ebfb855b1525306b29bd484bf3814daea8c (patch)
tree5838b8454601d332bf6f4e6f5159834035522b6d
parentf87c03426c0e526556fe48756f13a0c29edfc9e9 (diff)
downloadpysnmp-3b659ebfb855b1525306b29bd484bf3814daea8c.tar.gz
automatically initialize index values on table management operation
-rw-r--r--pysnmp/smi/mibs/SNMPv2-SMI.py17
1 files changed, 15 insertions, 2 deletions
diff --git a/pysnmp/smi/mibs/SNMPv2-SMI.py b/pysnmp/smi/mibs/SNMPv2-SMI.py
index b4b850c..0b9e96d 100644
--- a/pysnmp/smi/mibs/SNMPv2-SMI.py
+++ b/pysnmp/smi/mibs/SNMPv2-SMI.py
@@ -850,11 +850,24 @@ class MibTableRow(MibTree):
def __manageColumns(self, action, excludeName, nameSuffix,
val, idx, (acFun, acCtx)):
+ # Build a map of index names and values for automatic initialization
+ indexVals = {}; instId = nameSuffix
+ for impliedFlag, modName, symName in self.indexNames:
+ mibObj, = mibBuilder.importSymbols(modName, symName)
+ syntax, instId = self.setFromName(
+ mibObj.syntax, instId, impliedFlag
+ )
+ indexVals[mibObj.name] = syntax
for name, var in self._vars.items():
if name == excludeName:
continue
- getattr(var, action)(name + nameSuffix, val, idx, (acFun, acCtx))
- debug.logger & debug.flagIns and debug.logger('__manageColumns: action %s name %s suffix %s value %s' % (action, name, nameSuffix, val))
+ if indexVals.has_key(name):
+ 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 "", indexVals.get(name, val)))
def __delegate(self, subAction, name, val, idx, (acFun, acCtx)):
# Relay operation request to column, expect row operation request.