From 15cfc9d5dd71bdf09c0b515fd46ec2685f1dd366 Mon Sep 17 00:00:00 2001 From: John-Mark Gurney Date: Fri, 20 Sep 2019 11:22:16 -0700 Subject: [PATCH] the import in a module gets a different class that the script does, so we need to import and use that one... catch more cases for only tagged ports.. --- vlanmang.py | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/vlanmang.py b/vlanmang.py index 66bb1b9..2c18d91 100644 --- a/vlanmang.py +++ b/vlanmang.py @@ -69,9 +69,11 @@ def _intstobits(*ints): return ''.join(r) +import vlanmang + def checkchanges(module): mod = importlib.import_module(module) - mods = [ i for i in mod.__dict__.itervalues() if isinstance(i, SwitchConfig) ] + mods = [ i for i in mod.__dict__.itervalues() if isinstance(i, vlanmang.SwitchConfig) ] res = [] @@ -121,7 +123,7 @@ def getpvidmapping(data, lookupfun): res = [] for id in data: - for i in data[id]['u']: + for i in data[id].get('u', []): if isinstance(i, str): i = lookupfun(i) res.append((i, id)) @@ -131,15 +133,15 @@ def getpvidmapping(data, lookupfun): def getegress(data, lookupfun): r = {} for id in data: - r[id] = _intstobits(*(getidxs(data[id]['u'], lookupfun) + - getidxs(data[id].get('t', []), lookupfun))) + r[id] = _intstobits(*(getidxs(data[id].get('u', []), + lookupfun) + getidxs(data[id].get('t', []), lookupfun))) return r def getuntagged(data, lookupfun): r = {} for id in data: - r[id] = _intstobits(*getidxs(data[id]['u'], lookupfun)) + r[id] = _intstobits(*getidxs(data[id].get('u', []), lookupfun)) return r @@ -149,7 +151,7 @@ def getportlist(data, lookupfun): res = set() for id in data: - res.update(data[id]['u']) + res.update(data[id].get('u', [])) res.update(data[id].get('t', [])) # filter out the strings @@ -230,7 +232,7 @@ class SNMPSwitch(object): ObjectType(oid), lexicographicMode=False): if errorInd: # pragma: no cover - raise ValueError(errorIndication) + raise ValueError(errorInd) elif errorStatus: # pragma: no cover raise ValueError('%s at %s' % (errorStatus.prettyPrint(), errorIndex and varBinds[int(errorIndex)-1][0] or '?')) else: @@ -299,6 +301,9 @@ class SNMPSwitch(object): return r +if __name__ == '__main__': # pragma: no cover + print `checkchanges('data')` + class _TestMisc(unittest.TestCase): def setUp(self): import test_data @@ -319,14 +324,17 @@ class _TestMisc(unittest.TestCase): data = { 1: { 'u': [ 1, 5, 10 ] + range(13, 20), - 't': [ 'lag2', 6, 7 ] + 't': [ 'lag2', 6, 7 ], }, 10: { 'u': [ 2, 3, 6, 7, 8, 'lag2' ], }, 13: { 'u': [ 4, 9 ], - 't': [ 'lag2', 6, 7 ] + 't': [ 'lag2', 6, 7 ], + }, + 14: { + 't': [ 'lag2' ], }, } lookup = { @@ -351,6 +359,7 @@ class _TestMisc(unittest.TestCase): 1: '1000111001001111111' + '0' * (30 - 20) + '1', 10: '01100111' + '0' * (30 - 9) + '1', 13: '000101101' + '0' * (30 - 10) + '1', + 14: '0' * (30 - 1) + '1', } self.assertEqual(getegress(data, lufun), checkegress) @@ -359,6 +368,7 @@ class _TestMisc(unittest.TestCase): 1: '1000100001001111111', 10: '01100111' + '0' * (30 - 9) + '1', 13: '000100001', + 14: '', } self.assertEqual(getuntagged(data, lufun), checkuntagged)