Skip to content

Commit

Permalink
Merge pull request #4 from priittrees/multiprocess
Browse files Browse the repository at this point in the history
isam software 56 ifIndexs is changed
  • Loading branch information
frogmaster committed May 2, 2017
2 parents 4f2fbe5 + 0974197 commit ade4b9a
Show file tree
Hide file tree
Showing 3 changed files with 114 additions and 2 deletions.
8 changes: 6 additions & 2 deletions setup.py
Expand Up @@ -53,12 +53,16 @@
"huawei_temp=opentsdb.snmp.resolvers.huawei:HuaweiTemperature",
"huawei_ont_port=opentsdb.snmp.resolvers.huawei:HuaweiOnt",
"d500_xdsl=opentsdb.snmp.resolvers.d500_xdsl:D500_xdsl",
"isam_nfxsa_xdsl=opentsdb.snmp.resolvers.isam_xdsl:IsamNFXSA",
"isam_nfxsa_card=opentsdb.snmp.resolvers.isam_xdsl:NFXSAcard",
"isam_nfxsb_card=opentsdb.snmp.resolvers.isam_xdsl:NFXSBcard",
"isam_nfxsa_octets=opentsdb.snmp.resolvers.isam_xdsl:IsamNFXSAOctets",
"isam_nfxsa_xdsl=opentsdb.snmp.resolvers.isam_xdsl:IsamNFXSA",
"isam56_nfxsa_xdsl=opentsdb.snmp.resolvers.isam_xdsl:Isam56NFXSA",
"isam_nfxsb_xdsl=opentsdb.snmp.resolvers.isam_xdsl:IsamNFXSB",
"isam56_nfxsb_xdsl=opentsdb.snmp.resolvers.isam_xdsl:Isam56NFXSB",
"isam_nfxsa_octets=opentsdb.snmp.resolvers.isam_xdsl:IsamNFXSAOctets",
"isam56_nfxsa_octets=opentsdb.snmp.resolvers.isam_xdsl:Isam56NFXSAOctets",
"isam_nfxsb_octets=opentsdb.snmp.resolvers.isam_xdsl:IsamNFXSBOctets",
"isam56_nfxsb_octets=opentsdb.snmp.resolvers.isam_xdsl:Isam56NFXSBOctets",
"isam_old_xdsl=opentsdb.snmp.resolvers.isam_xdsl:IsamOld",
"isam_old_octets=opentsdb.snmp.resolvers.isam_xdsl:IsamOldOctets",
"nec_ipaso_modem=opentsdb.snmp.resolvers.nec_paso:NECIPasoModem",
Expand Down
57 changes: 57 additions & 0 deletions src/opentsdb/snmp/resolvers/isam_xdsl.py 100644 → 100755
Expand Up @@ -103,6 +103,25 @@ def resolve(self, index, device=None):
return {"interface": interface}


class Isam56NFXSA(object):
def __init__(self, cache=None):
self.cache = cache

def resolve(self, index, device=None):
bstr = "{:032b}".format(int(index))
slot = int(bstr[4:11], 2)
port = int(bstr[16:23], 2) + 1
if str(bstr[0:6]) == "000000":
slot = 1
elif slot < 10:
slot = slot - 1
else:
slot = slot + 2

interface = "1/1/{0}/{1}".format(slot, port)
return {"interface": interface}


class IsamNFXSB(object):
def __init__(self, cache=None):
self.cache = cache
Expand All @@ -126,6 +145,28 @@ def resolve(self, index, device=None):
return {"interface": interface}


class Isam56NFXSB(object):
def __init__(self, cache=None):
self.cache = cache

def resolve(self, index, device=None):
bstr = "{:032b}".format(int(index))
rack = int(bstr[4:8], 2)
shelf = int(bstr[8:10], 2)
slot = int(bstr[10:11], 2)
port = int(bstr[16:23], 2) + 1
if rack <= 1:
rack = 1
shelf = 1
slot = int(bstr[4:11], 2) + 2
else:
shelf += 1
slot += 1

interface = "{0}/{1}/{2}/{3}".format(rack, shelf, slot, port)
return {"interface": interface}


class _SplitIndexVlan(object):
def __init__(self, cache=None):
self.cache = cache
Expand All @@ -146,6 +187,14 @@ def resolve(self, index, device=None):
return tags


class Isam56NFXSAOctets(_SplitIndexVlan):
def resolve(self, index, device=None):
tags = super(Isam56NFXSAOctets, self).resolve(index, device)
interface_tags = Isam56NFXSA().resolve(tags["index"], device)
tags.update(interface_tags)
return tags


class IsamNFXSBOctets(_SplitIndexVlan):
def resolve(self, index, device=None):
tags = super(IsamNFXSBOctets, self).resolve(index, device)
Expand All @@ -154,6 +203,14 @@ def resolve(self, index, device=None):
return tags


class Isam56NFXSBOctets(_SplitIndexVlan):
def resolve(self, index, device=None):
tags = super(Isam56NFXSBOctets, self).resolve(index, device)
interface_tags = Isam56NFXSB().resolve(tags["index"], device)
tags.update(interface_tags)
return tags


class IsamOld(object):
def __init__(self, cache=None):
self.cache = cache
Expand Down
51 changes: 51 additions & 0 deletions test/resolver_isam_tests.py
Expand Up @@ -111,6 +111,18 @@ def test_IsamNFXSB_resolver(self):
tags = resolver.resolve(item["index"])
eq_(item["expected"], tags["interface"])

def test_Isam56NFXSB_resolver(self):
resolver = i.Isam56NFXSB()
testdata = [
{"index": "1080040960", "expected": "1/1/5/16"},
{"index": "1077960192", "expected": "1/1/4/48"},
{"index": "1077957120", "expected": "1/1/4/42"},
]

for item in testdata:
tags = resolver.resolve(item["index"])
eq_(item["expected"], tags["interface"])

def test_IsamNFXSA_resolver(self):
resolver = i.IsamNFXSA()
testdata = [
Expand All @@ -128,6 +140,23 @@ def test_IsamNFXSA_resolver(self):
tags = resolver.resolve(item["index"])
eq_(item["expected"], tags["interface"])

def test_Isam56NFXSA_resolver(self):
resolver = i.Isam56NFXSA()
testdata = [
{"index": "1077938176", "expected": "1/1/1/5"},
{"index": "1080049152", "expected": "1/1/2/32"},
{"index": "1084238848", "expected": "1/1/4/23"},
{"index": "1086325760", "expected": "1/1/5/3"},
{"index": "1092640256", "expected": "1/1/8/48"},
{"index": "1098929152", "expected": "1/1/14/43"},
{"index": "1107558400", "expected": "1/1/18/1"},
{"index": "1094713856", "expected": "1/1/12/2"},
]

for item in testdata:
tags = resolver.resolve(item["index"])
eq_(item["expected"], tags["interface"])

def test_IsamNFXSBOctets_resolver(self):
resolver = i.IsamNFXSBOctets()
testdata = [
Expand All @@ -139,6 +168,17 @@ def test_IsamNFXSBOctets_resolver(self):
eq_(item["expected"], tags["interface"])
eq_(101, tags["vlan"])

def test_Isam56NFXSBOctets_resolver(self):
resolver = i.Isam56NFXSBOctets()
testdata = [
{"index": "1080835072.101", "expected": "1/1/5/31"},
{"index": "1078723072.101", "expected": "1/1/4/2"},
]
for item in testdata:
tags = resolver.resolve(item["index"])
eq_(item["expected"], tags["interface"])
eq_(101, tags["vlan"])

def test_IsamNFXSAOctets_resolver(self):
resolver = i.IsamNFXSAOctets()
testdata = [
Expand All @@ -150,6 +190,17 @@ def test_IsamNFXSAOctets_resolver(self):
eq_(item["expected"], tags["interface"])
eq_(101, tags["vlan"])

def test_Isam56NFXSAOctets_resolver(self):
resolver = i.Isam56NFXSAOctets()
testdata = [
{"index": "1085028928.101", "expected": "1/1/4/30"},
{"index": "1108082688.101", "expected": "1/1/18/1"},
]
for item in testdata:
tags = resolver.resolve(item["index"])
eq_(item["expected"], tags["interface"])
eq_(101, tags["vlan"])

def test_IsamOld_resolver(self):
resolver = i.IsamOld()
testdata = [
Expand Down

0 comments on commit ade4b9a

Please sign in to comment.