From 387558544c3f8791613003d5ebd49c77303116c9 Mon Sep 17 00:00:00 2001 From: bashmak Date: Fri, 6 Jul 2018 12:05:21 +0300 Subject: [PATCH] Add support different dhcp devices in same group --- devapp/dev_types.py | 5 +++++ devapp/onu_register.py | 18 ++++++++++++++---- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/devapp/dev_types.py b/devapp/dev_types.py index 8d721a3..2f5d680 100644 --- a/devapp/dev_types.py +++ b/devapp/dev_types.py @@ -61,6 +61,7 @@ class DLinkPort(BasePort): class DLinkDevice(DevBase, SNMPBaseWorker): has_attachable_to_subscriber = True + tech_code = 'dlink_sw' is_use_device_port = True def __init__(self, dev_instance): @@ -201,6 +202,7 @@ class OLTDevice(DevBase, SNMPBaseWorker): class OnuDevice(DevBase, SNMPBaseWorker): has_attachable_to_subscriber = True + tech_code = 'bdcom_onu' is_use_device_port = False def __init__(self, dev_instance): @@ -319,6 +321,7 @@ class EltexPort(BasePort): class EltexSwitch(DLinkDevice): has_attachable_to_subscriber = True + tech_code = 'eltex_sw' is_use_device_port = False @staticmethod @@ -427,6 +430,8 @@ class Olt_ZTE_C320(OLTDevice): class ZteOnuDevice(OnuDevice): + tech_code = 'zte_onu' + @staticmethod def description(): return _('ZTE PON ONU') diff --git a/devapp/onu_register.py b/devapp/onu_register.py index 71b3f60..c3118b7 100644 --- a/devapp/onu_register.py +++ b/devapp/onu_register.py @@ -6,9 +6,19 @@ from subprocess import run def onu_register(devices: Iterable): with open('/etc/dhcp/macs.conf', 'w') as f: for dev in devices: - if dev.has_attachable_to_subscriber() and dev.mac_addr is not None: - f.write('subclass "%(code)s" "%(mac)s";\n' % { - 'code': dev.group.code, - 'mac': dev.mac_addr + if not dev.has_attachable_to_subscriber() or dev.mac_addr is None: + continue + group_code = dev.group.code + if not group_code: + continue + try: + mn = dev.get_manager_klass() + dev_code = mn.tech_code + f.write('subclass "%(group_code)s.%(dev_code)s" "%(mac)s";\n' % { + 'group_code': group_code, + 'mac': dev.mac_addr, + 'dev_code': dev_code }) + except TypeError: + continue run(('/usr/bin/sudo', 'systemctl', 'restart', 'isc-dhcp-server.service'))