From e31470aab026f918d860e27732f7f2e2bb8609c2 Mon Sep 17 00:00:00 2001 From: bashmak Date: Sat, 9 Jun 2018 15:55:26 +0300 Subject: [PATCH] Fix registrating ZTE ONU --- devapp/dev_types.py | 9 ++++++--- devapp/models.py | 3 ++- .../devapp/custom_dev_page/olt_ztec320_units_uncfg.html | 2 +- devapp/urls.py | 2 +- devapp/views.py | 2 +- djing/lib/tln/tln.py | 4 ++-- 6 files changed, 13 insertions(+), 9 deletions(-) diff --git a/devapp/dev_types.py b/devapp/dev_types.py index b6e2c37..8a232a5 100644 --- a/devapp/dev_types.py +++ b/devapp/dev_types.py @@ -422,8 +422,7 @@ class Olt_ZTE_C320(OLTDevice): 'firmware_ver': frm_ver, 'loid_passw': loid_passw, 'loid': loid, - 'sn': sn, - 'extra_snmp': '%d.%d' % (fiber_num, int(num)) + 'sn': sn } for frm_ver, loid_passw, loid, (sn, num) in zip( firmware_ver, loid_passws, loids, sn_num_list )) @@ -526,7 +525,11 @@ class ZteOnuDevice(OnuDevice): if login is None or password is None: raise DeviceConfigurationError('For ZTE configuration needed login and' ' password for telnet access in extra_data') - register_onu_ZTE_F660( + stack_num, rack_num, fiber_num, new_onu_port_num = register_onu_ZTE_F660( olt_ip=ip, onu_sn=sn, login_passwd=(login.encode(), password.encode()), onu_mac=mac ) + bin_snmp_fiber_number = "10000{0:08b}{1:08b}00000000".format(rack_num, fiber_num) + snmp_fiber_num = int(bin_snmp_fiber_number, base=2) + device.snmp_extra = "%d.%d" % (snmp_fiber_num, new_onu_port_num) + device.save(update_fields=('snmp_extra',)) diff --git a/devapp/models.py b/devapp/models.py index ca5a4cf..b0a94ee 100644 --- a/devapp/models.py +++ b/devapp/models.py @@ -96,7 +96,8 @@ class Device(models.Model): return "%s: (%s) %s %s" % (self.comment, self.get_devtype_display(), self.ip_address or '', self.mac_addr or '') def update_dhcp(self, remove=False): - if self.devtype not in ('On', 'Dl'): + # FIXME: Remove static list of registrable device types + if self.devtype not in ('On', 'Dl', 'Zo'): return if self.group is None: raise DeviceDBException(_('Device does not have a group, please fix that')) diff --git a/devapp/templates/devapp/custom_dev_page/olt_ztec320_units_uncfg.html b/devapp/templates/devapp/custom_dev_page/olt_ztec320_units_uncfg.html index 4a112b8..4fb45c0 100644 --- a/devapp/templates/devapp/custom_dev_page/olt_ztec320_units_uncfg.html +++ b/devapp/templates/devapp/custom_dev_page/olt_ztec320_units_uncfg.html @@ -45,7 +45,7 @@ {{ onu.loid_passw }} {{ onu.loid }} - + diff --git a/devapp/urls.py b/devapp/urls.py index 5422b72..0125b16 100644 --- a/devapp/urls.py +++ b/devapp/urls.py @@ -20,7 +20,7 @@ urlpatterns = [ url(r'^(?P\d+)/(?P\d+)/ports/(?P\d+)/show_subscriber_on_port$', views.ShowSubscriberOnPort.as_view(), name='show_subscriber_on_port'), url(r'^(\d+)/(?P\d+)/ports_add/$', views.add_ports, name='add_ports'), - url(r'^(\d+)/(?P\d+)/regster_device/$', views.regster_device, name='dev_register'), + url(r'^(\d+)/(?P\d+)/register_device/$', views.register_device, name='dev_register'), url(r'^(\d+)/(?P\d+)/(?P\d+)_(?P[0-1]{1})$', views.toggle_port, name='port_toggle'), url(r'^(?P\d+)/(?P\d+)/(?P\d+)/del$', views.delete_single_port, name='del_port'), url(r'^(?P\d+)/(?P\d+)/(?P\d+)/edit$', views.edit_single_port, name='edit_port'), diff --git a/devapp/views.py b/devapp/views.py index 7bcbe7f..289c3e0 100644 --- a/devapp/views.py +++ b/devapp/views.py @@ -725,7 +725,7 @@ class DevicesGetListView(global_base_views.SecureApiView): @login_required @json_view -def regster_device(request, device_id: str): +def register_device(request, device_id: str): def format_msg(msg: str, icon: str): return ' '.join(( '' % icon, diff --git a/djing/lib/tln/tln.py b/djing/lib/tln/tln.py index e8a9ab8..7b025f4 100755 --- a/djing/lib/tln/tln.py +++ b/djing/lib/tln/tln.py @@ -202,7 +202,7 @@ class OltZTERegister(TelnetApi): @process_lock -def register_onu_ZTE_F660(olt_ip: str, onu_sn: bytes, login_passwd: Tuple[bytes, bytes], onu_mac: bytes): +def register_onu_ZTE_F660(olt_ip: str, onu_sn: bytes, login_passwd: Tuple[bytes, bytes], onu_mac: bytes) -> Tuple: onu_type = b'ZTE-F660' line_profile = b'ZTE-F660-LINE' remote_profile = b'ZTE-F660-ROUTER' @@ -254,7 +254,7 @@ def register_onu_ZTE_F660(olt_ip: str, onu_sn: bytes, login_passwd: Tuple[bytes, tn.apply_conf_to_onu(onu_mac, 145) sleep(1) - return + return stack_num, rack_num, fiber_num, new_onu_port_num if __name__ == '__main__':