Files
netbox-audit/oxi/interface/models/vrp.py
2025-06-25 10:32:51 +03:00

31 lines
1.1 KiB
Python

import re
from oxi.interface import register_parser
from oxi.interface.base import BaseDevice, Vlan
@register_parser("VRP")
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