Browse Source

Добавил реализацию для Eltex

devel
bashmak 9 years ago
parent
commit
5b8f21cf29
  1. 99
      devapp/dev_types.py
  2. 2
      devapp/locale/ru/LC_MESSAGES/django.po
  3. 9
      devapp/models.py
  4. 6
      devapp/templates/devapp/custom_dev_page/ports.html

99
devapp/dev_types.py

@ -5,22 +5,6 @@ from datetime import timedelta
from .base_intr import DevBase, SNMPBaseWorker, BasePort 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): class DLinkPort(BasePort):
def __init__(self, num, name, status, mac, speed, snmpWorker): def __init__(self, num, name, status, mac, speed, snmpWorker):
@ -31,15 +15,13 @@ class DLinkPort(BasePort):
# выключаем этот порт # выключаем этот порт
def disable(self): def disable(self):
self.snmp_worker.set_int_value( 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): def enable(self):
self.snmp_worker.set_int_value( 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') return _('DLink switch')
def reboot(self): def reboot(self):
pass
return self.get_item('.1.3.6.1.4.1.2021.8.1.101.1')
def get_ports(self): 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 = [] res = []
ln = len(speeds) ln = len(speeds)
for n in range(ln): for n in range(ln):
status = True if int(stats[n]) == 1 else False status = True if int(stats[n]) == 1 else False
print(len(nams), len(speeds), len(macs))
res.append(DLinkPort( res.append(DLinkPort(
n+1, n+1,
nams[n] if len(nams) > 0 else _('does not fetch the name'), nams[n] if len(nams) > 0 else _('does not fetch the name'),
@ -76,10 +57,10 @@ class DLinkDevice(DevBase, SNMPBaseWorker):
return res return res
def get_device_name(self): 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): 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()) tm = RuTimedelta(timedelta(seconds=uptimestamp/100)) or RuTimedelta(timedelta())
return tm return tm
@ -194,3 +175,65 @@ class OnuDevice(DevBase, SNMPBaseWorker):
@staticmethod @staticmethod
def is_use_device_port(): def is_use_device_port():
return False 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

2
devapp/locale/ru/LC_MESSAGES/django.po

@ -298,3 +298,5 @@ msgstr "Найти абонента"
msgid "View the device" msgid "View the device"
msgstr "Посмотреть устройство" msgstr "Посмотреть устройство"
msgid "Eltex switch"
msgstr "Элтекс свич"

9
devapp/models.py

@ -4,16 +4,17 @@ from django.db import models
from djing.fields import MACAddressField from djing.fields import MACAddressField
from .base_intr import DevBase from .base_intr import DevBase
from mydefs import MyGenericIPAddressField, MyChoicesAdapter from mydefs import MyGenericIPAddressField, MyChoicesAdapter
from .dev_types import DLinkDevice, OLTDevice, OnuDevice
from . import dev_types
from mapapp.models import Dot from mapapp.models import Dot
from subprocess import call from subprocess import call
from django.conf import settings from django.conf import settings
DEVICE_TYPES = ( DEVICE_TYPES = (
('Dl', DLinkDevice),
('Pn', OLTDevice),
('On', OnuDevice)
('Dl', dev_types.DLinkDevice),
('Pn', dev_types.OLTDevice),
('On', dev_types.OnuDevice),
('Ex', dev_types.EltexSwitch)
) )

6
devapp/templates/devapp/custom_dev_page/ports.html

@ -18,10 +18,16 @@
{% if port.st %} {% if port.st %}
{% if port.sp == 10 %} {% if port.sp == 10 %}
<div class="port kilo text-center"> <div class="port kilo text-center">
<b>10 mbps</b>
{% elif port.sp == 100 %} {% elif port.sp == 100 %}
<div class="port mega text-center"> <div class="port mega text-center">
<b>100 mbps</b>
{% elif port.sp == 1000 %} {% elif port.sp == 1000 %}
<div class="port giga text-center"> <div class="port giga text-center">
<b>1 gbps</b>
{% elif port.sp == 10000 %}
<div class="port ten text-center">
<b>10 gbps</b>
{% else %} {% else %}
<div class="port text-center"> <div class="port text-center">
{% endif %} {% endif %}

Loading…
Cancel
Save