Browse Source

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..
ssh-lenovo
John-Mark Gurney 5 years ago
parent
commit
15cfc9d5dd
1 changed files with 19 additions and 9 deletions
  1. +19
    -9
      vlanmang.py

+ 19
- 9
vlanmang.py View File

@@ -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)



Loading…
Cancel
Save