Browse Source

Fix Eltex snmp ports view

devel
bashmak 8 years ago
parent
commit
392c8bdbed
  1. 44
      devapp/dev_types.py
  2. 2
      devapp/templates/devapp/custom_dev_page/ports.html

44
devapp/dev_types.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from django.utils.translation import gettext_lazy as _, gettext from django.utils.translation import gettext_lazy as _, gettext
from mydefs import RuTimedelta, safe_int from mydefs import RuTimedelta, safe_int
from datetime import timedelta from datetime import timedelta
@ -7,20 +6,17 @@ from .base_intr import DevBase, SNMPBaseWorker, BasePort, DeviceImplementationEr
class DLinkPort(BasePort): class DLinkPort(BasePort):
def __init__(self, num, name, status, mac, speed, snmpWorker): def __init__(self, num, name, status, mac, speed, snmpWorker):
BasePort.__init__(self, num, name, status, mac, speed) BasePort.__init__(self, num, name, status, mac, speed)
if not issubclass(snmpWorker.__class__ , SNMPBaseWorker):
if not issubclass(snmpWorker.__class__, SNMPBaseWorker):
raise TypeError raise TypeError
self.snmp_worker = snmpWorker self.snmp_worker = snmpWorker
# выключаем этот порт
def disable(self): def disable(self):
self.snmp_worker.set_int_value( self.snmp_worker.set_int_value(
"%s.%d" % ('.1.3.6.1.2.1.2.2.1.7', self.num), 2 "%s.%d" % ('.1.3.6.1.2.1.2.2.1.7', self.num), 2
) )
# включаем этот порт
def enable(self): def enable(self):
self.snmp_worker.set_int_value( self.snmp_worker.set_int_value(
"%s.%d" % ('.1.3.6.1.2.1.2.2.1.7', self.num), 1 "%s.%d" % ('.1.3.6.1.2.1.2.2.1.7', self.num), 1
@ -28,7 +24,6 @@ class DLinkPort(BasePort):
class DLinkDevice(DevBase, SNMPBaseWorker): class DLinkDevice(DevBase, SNMPBaseWorker):
def __init__(self, dev_instance): def __init__(self, dev_instance):
DevBase.__init__(self, dev_instance) DevBase.__init__(self, dev_instance)
SNMPBaseWorker.__init__(self, dev_instance.ip_address, dev_instance.man_passw, 2) SNMPBaseWorker.__init__(self, dev_instance.ip_address, dev_instance.man_passw, 2)
@ -51,7 +46,7 @@ class DLinkDevice(DevBase, SNMPBaseWorker):
for n in range(interfaces_count): for n in range(interfaces_count):
status = True if int(stats[n]) == 1 else False status = True if int(stats[n]) == 1 else False
res.append(DLinkPort( res.append(DLinkPort(
n+1,
n + 1,
nams[n] if len(nams) > 0 else '', nams[n] if len(nams) > 0 else '',
status, status,
macs[n] if len(macs) > 0 else _('does not fetch the mac'), macs[n] if len(macs) > 0 else _('does not fetch the mac'),
@ -64,9 +59,9 @@ class DLinkDevice(DevBase, SNMPBaseWorker):
def get_device_name(self): def get_device_name(self):
return self.get_item('.1.3.6.1.2.1.1.1.0') return self.get_item('.1.3.6.1.2.1.1.1.0')
def uptime(self):
def uptime(self) -> timedelta:
uptimestamp = safe_int(self.get_item('.1.3.6.1.2.1.1.8.0')) uptimestamp = safe_int(self.get_item('.1.3.6.1.2.1.1.8.0'))
tm = RuTimedelta(timedelta(seconds=uptimestamp/100)) or RuTimedelta(timedelta())
tm = RuTimedelta(timedelta(seconds=uptimestamp / 100)) or RuTimedelta(timedelta())
return tm return tm
def get_template_name(self): def get_template_name(self):
@ -89,11 +84,9 @@ class ONUdev(BasePort):
self.snmp_worker = snmpWorker self.snmp_worker = snmpWorker
self.signal = signal self.signal = signal
# выключаем этот порт
def disable(self): def disable(self):
pass pass
# включаем этот порт
def enable(self): def enable(self):
pass pass
@ -102,7 +95,6 @@ class ONUdev(BasePort):
class OLTDevice(DevBase, SNMPBaseWorker): class OLTDevice(DevBase, SNMPBaseWorker):
def __init__(self, dev_instance): def __init__(self, dev_instance):
DevBase.__init__(self, dev_instance) DevBase.__init__(self, dev_instance)
SNMPBaseWorker.__init__(self, dev_instance.ip_address, dev_instance.man_passw, 2) SNMPBaseWorker.__init__(self, dev_instance.ip_address, dev_instance.man_passw, 2)
@ -143,7 +135,7 @@ class OLTDevice(DevBase, SNMPBaseWorker):
def uptime(self): def uptime(self):
uptimestamp = safe_int(self.get_item('.1.3.6.1.2.1.1.9.1.4.1')) uptimestamp = safe_int(self.get_item('.1.3.6.1.2.1.1.9.1.4.1'))
tm = RuTimedelta(timedelta(seconds=uptimestamp/100)) or RuTimedelta(timedelta())
tm = RuTimedelta(timedelta(seconds=uptimestamp / 100)) or RuTimedelta(timedelta())
return tm return tm
def get_template_name(self): def get_template_name(self):
@ -159,7 +151,6 @@ class OLTDevice(DevBase, SNMPBaseWorker):
class OnuDevice(DevBase, SNMPBaseWorker): class OnuDevice(DevBase, SNMPBaseWorker):
def __init__(self, dev_instance): def __init__(self, dev_instance):
DevBase.__init__(self, dev_instance) DevBase.__init__(self, dev_instance)
SNMPBaseWorker.__init__(self, dev_instance.ip_address, dev_instance.man_passw, 2) SNMPBaseWorker.__init__(self, dev_instance.ip_address, dev_instance.man_passw, 2)
@ -214,23 +205,19 @@ class OnuDevice(DevBase, SNMPBaseWorker):
return {'err': "%s: %s" % (_('ONU not connected'), e)} return {'err': "%s: %s" % (_('ONU not connected'), e)}
class EltexPort(BasePort): class EltexPort(BasePort):
def __init__(self, snmpWorker, *args, **kwargs): def __init__(self, snmpWorker, *args, **kwargs):
BasePort.__init__(self, *args, **kwargs) BasePort.__init__(self, *args, **kwargs)
if not issubclass(snmpWorker.__class__, SNMPBaseWorker): if not issubclass(snmpWorker.__class__, SNMPBaseWorker):
raise TypeError raise TypeError
self.snmp_worker = snmpWorker self.snmp_worker = snmpWorker
# выключаем этот порт
def disable(self): def disable(self):
self.snmp_worker.set_int_value( self.snmp_worker.set_int_value(
"%s.%d" % ('.1.3.6.1.2.1.2.2.1.7', self.num), "%s.%d" % ('.1.3.6.1.2.1.2.2.1.7', self.num),
2 2
) )
# включаем этот порт
def enable(self): def enable(self):
self.snmp_worker.set_int_value( self.snmp_worker.set_int_value(
"%s.%d" % ('.1.3.6.1.2.1.2.2.1.7', self.num), "%s.%d" % ('.1.3.6.1.2.1.2.2.1.7', self.num),
@ -239,25 +226,20 @@ class EltexPort(BasePort):
class EltexSwitch(DLinkDevice): class EltexSwitch(DLinkDevice):
@staticmethod @staticmethod
def description(): def description():
return _('Eltex switch') return _('Eltex switch')
def get_ports(self) -> ListOrError: def get_ports(self) -> ListOrError:
#nams = self.get_list('.1.3.6.1.4.1.171.10.134.2.1.1.100.2.1.3')
stats = list(self.get_list('.1.3.6.1.2.1.2.2.1.7'))
oper_stats = list(self.get_list('.1.3.6.1.2.1.2.2.1.8'))
#macs = self.get_list('.1.3.6.1.2.1.2.2.1.6')
speeds = list(self.get_list('.1.3.6.1.2.1.31.1.1.1.15'))
res = [] res = []
for n in range(28):
for i, n in enumerate(range(49, 77), 1):
speed = self.get_item('.1.3.6.1.2.1.2.2.1.5.%d' % n)
res.append(EltexPort(self, res.append(EltexPort(self,
n+1,
'',#nams[n] if len(nams) > 0 else _('does not fetch the name'),
True if int(stats[n]) == 1 else False,
'',#macs[n] if len(macs) > 0 else _('does not fetch the mac'),
int(speeds[n]) if len(speeds) > 0 and int(oper_stats[n]) == 1 else 0,
i,
self.get_item('.1.3.6.1.2.1.31.1.1.1.18.%d' % n),
self.get_item('.1.3.6.1.2.1.2.2.1.8.%d' % n),
self.get_item('.1.3.6.1.2.1.2.2.1.6.%d' % n),
int(speed),
)) ))
return res return res
@ -266,7 +248,7 @@ class EltexSwitch(DLinkDevice):
def uptime(self): def uptime(self):
uptimestamp = safe_int(self.get_item('.1.3.6.1.2.1.1.3.0')) uptimestamp = safe_int(self.get_item('.1.3.6.1.2.1.1.3.0'))
tm = RuTimedelta(timedelta(seconds=uptimestamp/100)) or RuTimedelta(timedelta())
tm = RuTimedelta(timedelta(seconds=uptimestamp / 100)) or RuTimedelta(timedelta())
return tm return tm
@staticmethod @staticmethod

2
devapp/templates/devapp/custom_dev_page/ports.html

@ -111,7 +111,7 @@
{% for port in ports %} {% for port in ports %}
<tr> <tr>
<td>{{ port.num }}</td> <td>{{ port.num }}</td>
<td>{{ port.nm|default:_('Not assigned') }}</td>
<td>{{ port.nm|default:'-' }}</td>
</tr> </tr>
{% empty %} {% empty %}
<tr> <tr>

Loading…
Cancel
Save