diff --git a/devapp/dev_types.py b/devapp/dev_types.py index c759242..d9798cc 100644 --- a/devapp/dev_types.py +++ b/devapp/dev_types.py @@ -5,22 +5,6 @@ from datetime import timedelta from .base_intr import DevBase, SNMPBaseWorker, BasePort - -oids = { - 'reboot': '.1.3.6.1.4.1.2021.8.1.101.1', - 'get_ports': { - 'names': '.1.3.6.1.4.1.171.10.134.2.1.1.100.2.1.3', - 'stats': '.1.3.6.1.2.1.2.2.1.7', - 'macs': '.1.3.6.1.2.1.2.2.1.6', - 'speeds': '.1.3.6.1.2.1.31.1.1.1.15' - }, - 'name': '.1.3.6.1.2.1.1.1.0', - 'position': '.1.3.6.1.2.1.1.5.0', - 'toggle_port': '.1.3.6.1.2.1.2.2.1.7', - 'uptime': '.1.3.6.1.2.1.1.8.0' -} - - class DLinkPort(BasePort): def __init__(self, num, name, status, mac, speed, snmpWorker): @@ -31,15 +15,13 @@ class DLinkPort(BasePort): # выключаем этот порт def disable(self): self.snmp_worker.set_int_value( - "%s.%d" % (oids['toggle_port'], self.num), - 2 + "%s.%d" % ('.1.3.6.1.2.1.2.2.1.7', self.num), 2 ) # включаем этот порт def enable(self): self.snmp_worker.set_int_value( - "%s.%d" % (oids['toggle_port'], self.num), - 1 + "%s.%d" % ('.1.3.6.1.2.1.2.2.1.7', self.num), 1 ) @@ -54,18 +36,17 @@ class DLinkDevice(DevBase, SNMPBaseWorker): return _('DLink switch') def reboot(self): - pass + return self.get_item('.1.3.6.1.4.1.2021.8.1.101.1') def get_ports(self): - nams = self.get_list(oids['get_ports']['names']) - stats = self.get_list(oids['get_ports']['stats']) - macs = self.get_list(oids['get_ports']['macs']) - speeds = self.get_list(oids['get_ports']['speeds']) + nams = self.get_list('.1.3.6.1.4.1.171.10.134.2.1.1.100.2.1.3') + stats = self.get_list('.1.3.6.1.2.1.2.2.1.7') + macs = self.get_list('.1.3.6.1.2.1.2.2.1.6') + speeds = self.get_list('.1.3.6.1.2.1.31.1.1.1.15') res = [] ln = len(speeds) for n in range(ln): status = True if int(stats[n]) == 1 else False - print(len(nams), len(speeds), len(macs)) res.append(DLinkPort( n+1, nams[n] if len(nams) > 0 else _('does not fetch the name'), @@ -76,10 +57,10 @@ class DLinkDevice(DevBase, SNMPBaseWorker): return res def get_device_name(self): - return self.get_item(oids['name']) + return self.get_item('.1.3.6.1.2.1.1.1.0') def uptime(self): - uptimestamp = safe_int(self.get_item(oids['uptime'])) + uptimestamp = safe_int(self.get_item('.1.3.6.1.2.1.1.8.0')) tm = RuTimedelta(timedelta(seconds=uptimestamp/100)) or RuTimedelta(timedelta()) return tm @@ -194,3 +175,65 @@ class OnuDevice(DevBase, SNMPBaseWorker): @staticmethod def is_use_device_port(): return False + + +class EltexPort(BasePort): + + def __init__(self, num, name, status, mac, speed, snmpWorker): + BasePort.__init__(self, num, name, status, mac, speed) + assert issubclass(snmpWorker.__class__ , SNMPBaseWorker) + self.snmp_worker = snmpWorker + + # выключаем этот порт + def disable(self): + self.snmp_worker.set_int_value( + "%s.%d" % ('.1.3.6.1.2.1.2.2.1.7', self.num), + 2 + ) + + # включаем этот порт + def enable(self): + self.snmp_worker.set_int_value( + "%s.%d" % ('.1.3.6.1.2.1.2.2.1.7', self.num), + 1 + ) + + +class EltexSwitch(DLinkDevice): + + @staticmethod + def description(): + return _('Eltex switch') + + def get_ports(self): + #nams = self.get_list('.1.3.6.1.4.1.171.10.134.2.1.1.100.2.1.3') + stats = self.get_list('.1.3.6.1.2.1.2.2.1.7') + oper_stats = 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 = self.get_list('.1.3.6.1.2.1.31.1.1.1.15') + res = [] + for n in range(28): + res.append(EltexPort( + 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, + self)) + return res + + def get_device_name(self): + return self.get_item('.1.3.6.1.2.1.1.5.0') + + def uptime(self): + uptimestamp = safe_int(self.get_item('.1.3.6.1.2.1.1.3.0')) + tm = RuTimedelta(timedelta(seconds=uptimestamp/100)) or RuTimedelta(timedelta()) + return tm + + @staticmethod + def has_attachable_to_subscriber(): + return False + + @staticmethod + def is_use_device_port(): + return False diff --git a/devapp/locale/ru/LC_MESSAGES/django.po b/devapp/locale/ru/LC_MESSAGES/django.po index 2d29775..7a6f8e3 100644 --- a/devapp/locale/ru/LC_MESSAGES/django.po +++ b/devapp/locale/ru/LC_MESSAGES/django.po @@ -298,3 +298,5 @@ msgstr "Найти абонента" msgid "View the device" msgstr "Посмотреть устройство" +msgid "Eltex switch" +msgstr "Элтекс свич" diff --git a/devapp/models.py b/devapp/models.py index a028786..eef53b5 100644 --- a/devapp/models.py +++ b/devapp/models.py @@ -4,16 +4,17 @@ from django.db import models from djing.fields import MACAddressField from .base_intr import DevBase from mydefs import MyGenericIPAddressField, MyChoicesAdapter -from .dev_types import DLinkDevice, OLTDevice, OnuDevice +from . import dev_types from mapapp.models import Dot from subprocess import call from django.conf import settings DEVICE_TYPES = ( - ('Dl', DLinkDevice), - ('Pn', OLTDevice), - ('On', OnuDevice) + ('Dl', dev_types.DLinkDevice), + ('Pn', dev_types.OLTDevice), + ('On', dev_types.OnuDevice), + ('Ex', dev_types.EltexSwitch) ) diff --git a/devapp/templates/devapp/custom_dev_page/ports.html b/devapp/templates/devapp/custom_dev_page/ports.html index 9488ecf..e6f8884 100644 --- a/devapp/templates/devapp/custom_dev_page/ports.html +++ b/devapp/templates/devapp/custom_dev_page/ports.html @@ -18,10 +18,16 @@ {% if port.st %} {% if port.sp == 10 %}
+ 10 mbps {% elif port.sp == 100 %}
+ 100 mbps {% elif port.sp == 1000 %}
+ 1 gbps + {% elif port.sp == 10000 %} +
+ 10 gbps {% else %}
{% endif %}