From e1eeefd42dcf5a5c21e5eed7c04ce9b01fbfe109 Mon Sep 17 00:00:00 2001 From: IluaAir Date: Mon, 30 Jun 2025 21:06:03 +0300 Subject: [PATCH] fix base vlan pattern --- oxi/interface/base.py | 2 +- oxi/interface/bdcom.py | 5 ----- oxi/interface/mikrotik.py | 5 ----- oxi/interface/qtech.py | 23 ----------------------- oxi/interface/vrp.py | 39 --------------------------------------- 5 files changed, 1 insertion(+), 73 deletions(-) delete mode 100644 oxi/interface/bdcom.py delete mode 100644 oxi/interface/mikrotik.py delete mode 100644 oxi/interface/qtech.py delete mode 100644 oxi/interface/vrp.py diff --git a/oxi/interface/base.py b/oxi/interface/base.py index de7c72a..776234e 100644 --- a/oxi/interface/base.py +++ b/oxi/interface/base.py @@ -36,7 +36,7 @@ class BaseDevice(Protocol): @property def vlan_parse_pattern(self): - return rf"^vlan\s+(\d{{1,4}})\n(.*?)(?=^{self.anchor_pattern}|\Z)" + return rf"^vlan\s+(\d{{1,4}})\r?\n(.*?)(?=^{self.anchor_pattern}|\Z)" unamed_vlan_splitter: str = ',' unamed_vlan_counter = '-' diff --git a/oxi/interface/bdcom.py b/oxi/interface/bdcom.py deleted file mode 100644 index 0b60516..0000000 --- a/oxi/interface/bdcom.py +++ /dev/null @@ -1,5 +0,0 @@ -from oxi.interface import Qtech - - -class BDcom(Qtech): - pass diff --git a/oxi/interface/mikrotik.py b/oxi/interface/mikrotik.py deleted file mode 100644 index 1ff9197..0000000 --- a/oxi/interface/mikrotik.py +++ /dev/null @@ -1,5 +0,0 @@ -from oxi.interface.base import BaseDevice - - -class Mikrotik(BaseDevice): - ... diff --git a/oxi/interface/qtech.py b/oxi/interface/qtech.py deleted file mode 100644 index b8bd351..0000000 --- a/oxi/interface/qtech.py +++ /dev/null @@ -1,23 +0,0 @@ -import re - -from oxi.interface.base import BaseDevice - - -class Qtech(BaseDevice): - - def __init__(self, config): - self.config: str = self._fix_config(config) - - def _fix_config(self, config): - pattern = r"Pending configurations.*" - cleaned_text = re.sub(pattern, "", config, flags=re.DOTALL) - return cleaned_text - - -with open('../../core_switch.txt', 'r') as file: - data = file.read() - -result = Qtech(data).parse_config() -print(result.vlans) -print(result.l3interfaces) -print(result.vlaninterfaces) diff --git a/oxi/interface/vrp.py b/oxi/interface/vrp.py deleted file mode 100644 index 13bd520..0000000 --- a/oxi/interface/vrp.py +++ /dev/null @@ -1,39 +0,0 @@ -import re - -from oxi.interface.base import BaseDevice, Vlan - - -class Vrp(BaseDevice): - anchor_pattern: str = '#' - hostname_pattern = 'sysname' - unamed_vlan_splitter = ' ' - unamed_vlan_counter = 'to' - - def _parse_unamed_vlans(self) -> list[Vlan]: - vlans = [] - pattern = self.unamed_vlans_parse_pattern - for match in re.finditer(pattern, self.config, re.MULTILINE): - tokens = match.group(1).split(self.unamed_vlan_splitter) - i = 0 - while i < len(tokens): - if i + 2 < len(tokens) and tokens[i + 1].lower() == 'to': - start = int(tokens[i]) - end = int(tokens[i + 2]) - for vlan_id in range(start, end + 1): - vlans.append(Vlan(vlan=str(vlan_id), name=None, description=None)) - i += 3 # пропустить X, 'to', Y - else: - vlans.append(Vlan(vlan=str(tokens[i]), name=None, description=None)) - i += 1 - return vlans - - - -with open('../../vrp_switch.txt', 'r') as file: - data = file.read() - - -result = Vrp(data).parse_config() -print(result.vlans) -print(result.l3interfaces) -print(result.vlaninterfaces) \ No newline at end of file