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'))